Report

イベントのレポートです。 >> 写真へ >> アンケートの声へ

第23回 ポータルについて考えよう
・開催日時:2007/05/26 16:30-18:00
・開催場所:Apple Store Ginza 3F シアタールーム
概要:
情報を整理して表示するためには欠かせない機能である「ポータル」は、便利だけれど使いこなしにちょっとした知識を要する部分もあります。そんなポータルの基本・留意点・応用事例などをまとめてご紹介します。ぜひ身につけてほしい「ポータルフィルタリング」などのテクニックもご紹介します。
レポート:
東京あたりの小学校では、近頃この時期に運動会を開催するところが多くなっている。
ウチのムスメの通う小学校もそのパターンで、5/26(土)開催ってことは...FunNight!と重なるな......(しかも16:30スタートだって!)
夏を思わせる強い日差しの下、写真撮ってビデオ撮って気がつきゃ日焼けして......で、14時30分の終了予定時刻を信じたのが間違いだった。15時過ぎまで様子を見たが終わらんためやむを得ず離脱→いったん帰宅してTシャツを着替えて飛び出し→定期券を封印、時間優先ルートを選んだら...何とか銀座16:30に間に合った。

今回はきっちり90分で終わらないといけないのに、奥の深いお題が揃ってますね。大丈夫かな〜
のっけから「巻き」の飛び交う中、第23回 FileMaker Fun Night! 始まりました。

[しっかり覚えるFileMaker]〜我らがカスタムメニュー〜
【特集:ポータルについて考えよう】
恒例Tips対決!
[FMスーパーテクニック]〜トランザクションについても考えよう〜



[しっかり覚えるFileMaker]〜我らがカスタムメニュー〜 <Shinさん>
カスタムメニューとは、FileMakerにおいてユーザに提示される「メニュ−」の項目を、ソリューションやユーザの権限に応じて変更できる機能のことで、v8から搭載されました。
しかし、「Advanced」でないと設定することはできません。メニューをいじくろうという機能ですから、当然ながら開発環境限定ということになりますね。
たとえば、使い方によっては問題を起こしうるメニュー項目を、エンドユーザ権限のログイン時に隠すことができれば、問題の発生回数を確実に減らせます。強力ですよね。

他にもこんなことができます。

・メニュ−文字列の変更
・表示位置の変更
・ショートカットの割当
・プラットフォーム指定(例:Macの場合のみ表示 など)
・モード指定(例:検索モードのみ表示 など)
・複数のメニューセットを登録しておき、ファイルやレイアウトごとに切替える

「カスタムメニューの定義」ダイアログを開いてみると...
メニュ−ゆえ内部に階層を持っているので難しそうに見えますが、階層を理解すれば楽になると思います。
上から順に、メニューセット/メニュー/メニュー項目(例:画面1つ分のメニュー全体/「ファイル」等の常時表示のそれぞれの項目/メニューに含まれる「新規「開く」等の選択肢) という3階層になっていて、下位で詳細設定した項目を、上位項目へ組み込む、という流れになります。
最初に表示されている[ ]のカッコで括られた項目は標準値なので変更できず、複製して編集するというのもポイントかも。

慣れれば最高に便利なカスタムメニュー、自社用システムなどの開発者であれば必須機能と言えるでしょう。現状で「Advanced」をお持ちでない開発者の皆さん、アップグレード検討に値するアイテムと思いますが如何でしょうか?
なお、カスタムメニューは奥が深く、一度では語りきれないので近々この続編を。(今回は特に時間ないし)とShinさんは言っていました。乞うご期待!


【特集:ポータルについて考えよう】 <茂田さん>
ポータルとは...
「リスト表示以外に、レコードを一覧する方法のひとつ」である。
特長としては...
・対象外は表示されない。(というより表示できない)
・所定の優先順でリアルタイムにソートされる。
・リスト表示のような検索(右クリックで絞り込み)や随時条件変更するソートはできない。

師曰く、
・全件ヒットの為には、そういうキーを入れてやれば良い。
・レイアウトの際、ポータルフィールドのTOとポータル枠のTOは原則的に一致のこと。
 ただし、更に下流となる(孫引きの)TO上のフィールドならば一緒に置くことができる。

応用としては
・ポータル上に置いたボタンで「関連レコードへ移動」(現在のレイアウト)と設定すると、現在のレコード(額縁になっている側)を切替える事ができる。
・リレーションキーの値を変更すると、ポータルへの関連レコードの表示状態が追従して変化する。
 ここでキーフィールドをチェックボックスにし、複数値にチェックを付けると条件が「OR」と解釈され、双方の関連レコードがポータルに表示される。
キーフィールドをチェックボックスに...のところ、全く知りませんでした。これって結構使える場面が多いのではないかと。

ここでデモ「ポータルによる50音インデックス」の紹介が。

ポータルのキーの一部として「あ」を指定すると、ふりがなが「あ〜お」で始まる氏名だけがポータルに表示されました。
「あ行」始まりの名前だけを取り出すために、
・「あ」始まり、と同時に「か」の手前まで、という条件も加えておく必要がある。

こういった動作のことを「ポータルフィルタリング」と呼び、検索とは区別しています。
とても便利で、思わずハッとするような使い方もできるポータルフィルタリングですが、予めリレーションやキーを準備しておかなければならない等、検索に比べクセがあるのも事実のようです。
特に日本語の場合、変換の確定前には反応してくれないので難しいとのことです。

更に関連デモをもうひとつ。
条件としてふりがなを1文字ずつ入力して行くと、入力済みの文字列を開始文字列として含む対象だけが絞り込み表示されるとういうもの。
かなりオドロキの技だったのですが、これは「ふりがな入力の過程において入力済ひらがな文字列がとりうる状態の全組み合わせ」を裏で保持しマッチングさせるという、手動索引生成とでも呼べそうな手法が使われていました。
改行区切りにしておけば、OR条件と等価になり、いずれかがマッチしたとき真となります。一般的な人名の場合は、1レコードあたり、数十通り程度と思われますが、それにしてもかなりの数です。これを自動的に作成するのが「カスタム関数」。有名なところではFunNight!にも登場済みのブライアン・ダニング氏の「All Text Combinations」などが便利だということです。
なお、タブ順が設定されていると無用にカーソルが「次のフィールド」へ飛んで行きうっとうしいので、タブ順は消しておきましょう。

最後に、現在のレコードをポータルの関連レコードごと一気に複製する際の方法について。
1. 関連レコードへ移動し、
2. ID順にソートし、
3. 順にレコードを複製しつつフィールド設定でIDをセットする。
ここでポイントは、ソート状態で関連レコードを複製すること。ソート状態で複製されたレコードは複製元レコ−ドのすぐ下に作成されるので「レコードへ移動(次の)」で簡単に後段の処理を行えますが、未ソートでは一番下に作成されてしまうので、処理が難しくなってしまいます。
ポータルに限らず、関連レコードの複製は「ソート後」ですね。いろんなところで使えそうであります。


恒例Tips対決!

・表形式でフィールド幅よりフィールド名の方が長く。「○○...」となった状態で、簡単にそのフィールド名全体を確認するワザ <竹内さん>
 →全置換ショートカットを押し、ダイアログに表示されたフィールド名を見よう。(くれぐれも全置換実行せぬよう...)

・リスト表示のとき、現在の選択レコードだけを対象レコードとして残す方法 <茂田さん>
 →TOを複製し、ID同士を結んだうえで、「関連レコードへ移動」スクリプトステップで新規ウィンドウ上に表示すると、そのレコードだけになる。
 ※要するに、この位は事前に用意しておきなさいってことですね。元のウィンドウに実行前の対象レコードが保持されるところも便利。
 
・マージフィールドが長くて場所とりすぎ!...追加情報 <Shinさん>
 →当時、両端1文字ずつを正しい文字サイズとし、その間の文字列を十分に小さい文字サイズにする...といいましたが、正しくは左端の1文字だけ正しい文字サイズにしておけば良かったようです。


[FMスーパーテクニック]〜トランザクションについても考えよう〜 <竹内さん>
トランザクションとは...webを紐解いてみると、<トランザクション (transaction, database transaction) は、データベースマネージメントシステムとシステムの利用者間の(分解不可能な)処理の単位。トランザクションは利用者からシステムへの要求に始まりシステム内の処理、システムから利用者への返答までを含む。トランザクションが満たすべき技術的要件にACID特性がある。(http://ja.wikipedia.org/wiki/トランザクション)>...と出てきました。FileMakerのロック機能は「対象レコード全部」という形式ではなく、現在のレコードひとつだけをロックします。今回のFun Night!で言うトランザクションとは、この「対象レコード全部」に対するいわゆる「排他処理」をイメージした方が良いでしょう。つまり、その一連の処理の間に誰かが書込みのために開いているレコードを横から書き替えてしまって「困ったな」とならないために組み込む処理、ということです。

トランザクション処理(特にFileMakerにおける)のポイントは、一連の処理が正常に終了できなかったとき、既に処理してしまったぶんを以前に戻す(ロールバック)処理。あるいは、処理の前にあらかじめ自分がレコードを掴んでしまうというロック処理。さまざまな場面を想定すると作りにくいものになる。と竹内師。

たとえばその対策を一般論的に想像してみると、
・処理中フラグを立てて後着クライアントをはじく。
・後着のクライアントはフラグを確認し、立っていれば諦める。
・処理後はフラグを外してレコードを解放する。
これはイメージしやすいパターンのひとつですが、FileMakerに投影してみると問題は幾つも思い当たります。
まず、全てのスクリプトにフラグ処理を組み込むのはとても面倒だし、仕様変更時の修正も大変です。
また、「フラグを立てる」と言っても、インタフェーステーブル側に立てるか、または参照先の個別レコードに立てるか、2通りが考えられますし、個別レコードにフラグを立てる場合はいちいち全置換するのが大変で、パフォーマンスにも響きそうです。また、フラグ立てのための全置換中に割り込まれたら...と考えると、FileMakerにおいて、このパターンにはそもそも意味が無いのかもしれません。ましてや、元に戻せと言われても...ってところでしょうか。

では、FileMaker的に考えてみると、
・レコードをロックして以後の割り込みを禁止するには→「レコード/検索条件を開く」スクリプトステップを使う。
・変更内容を破棄(ロールバック)するには→[レコード/検索条件復帰] スクリプトステップ、または「レコードの変更を自動的に保存する」チェックを外したうえで、確定時のダイアログで「保存しない」を選ぶ。
うまく使えば相当のことができそうです。
そして、ポータルを利用することによって「現在のレコード」からその先の関連レコード全てをロックすることができます。これを利用すれば、レコードロック用のテーブルを作っておき、関連レコードをロックするなど、予め目的のレコードをすべてロック...すなわち「これから書き替えますよ」とつかんでしまう処理も実現できます。確かに先着によってすでにつかまれているレコードがあればエラーが発生しますが、事前につかむ段階でエラーが発生するぶんには、そこで中止すれば良いわけで、まだ書込みを行っていないためロールバックはそもそも不要ということになりますよね。

(注:竹内)
全置換ではロールバックは絶対にできませんが、このやり方であれば関連レコード全部に対するロールバックも可能です。

★難問・奇問続出、Neralendar5月分のFileMaker Quiz after FP7 について

問題:FileMaker 8.5の関数にないものをすべて選択せよ。
 a. Get (ウィンドウ右位置)
 b. Get (アクティブ選択サイズ)
 c. Get (Today)
 d. Get (ウィンドウのズームレベル)
 e. Get (人のTips)※

正解:「a, c, e」
相変わらずの出題傾向に不正解続出です。そう言えば運転免許にこういうパターンあったかも。
a:「ウィンドウ右位置」はありません。というより、左位置とウィンドウサイズの足し算で右位置を求める事ができるので、用意されていません。
c:v6以前の「Today」関数と、v7以後の「Get(日付)」を混ぜたネーミングに騙された方数名......残念。
e:これは、私の欲しい関数の筆頭でもあります。カスタム関数でこれを作り上げることができたら......ムリムリ。
(※:eはネラレンダーには記載されていません。当日会場で見えていたものは、Sevensdoorメンバーの願望が形になったものと考えてよろしいかと。)

★今回も、たまみそ女王のFileMakerまんがは過激な暴走ぶりを遺憾なく発揮。いじられキャラのみんな、負けるなよっ。

Reported by 金丸康明



アンケートのご協力、どうもありがとうこざいました!
ご意見、ご要望やご感想はこらちからお寄せください。 >> ご意見箱

Special Links:
・待望の新刊書、「FileMaker 関数・スクリプト+α辞典」(ラトルズ)
・IT戦隊ネラレンジャーのカレンダー「ネラレンダー」ご存知ない方はこちら

Special Thanks to:
 FileMakerまんが:たまみそさん(今回のまんがはこちら
 イベントレポート:金丸康明さん
 会場ヘルプ:新妻利恵さん
会場の様子:>> Topへ



「FileMaker Pro Advanced持っている方は…?」

カスタムメニューを基本から解説


かなり細かい設定までできる

「全レコード削除…」が表示されなくなった。

茂田氏の登場!

無くてはならないポータル話




複合条件を使います

FileMakerでのトランザクション!?


しまった、Commitは[いいえ]じゃなくて[保存]が正解...





来場のみなさんのご感想:>> Topへ
男性トランザクションもう少し聞きたかったです...
男性トランザクションに関する説明がとても参考になりました。
女性カスタムメニューはあんまり使わないので、久しぶりに見直しできてよかったです。
トランザクションの意味ってそういうことだったんだぁ、と思ったり...
ポータルを使うとなるとそれ専用のリレーションを用意することができる条件で絞り込めるレコード対象にするなど、考えるのが必要ですね。(うまく説明できないけど、考えるのが大切ってことで...)
本日のTipsは、しげぞさんのが面白かった。です。
Get関すうにズームレベルあるなんてしらなかったです。う〜ん。。。くやしい...
男性いつもありがとうございます。内容はいつも濃いのですが、絞った内容で深くやっていただくのもお願いしたいです!!(初心者向けで...汗)
男性この時間は参加しづらい為、前の少し遅い時間にしていただきたいです。
女性・トランザクションについて -> もう一度お願いします。特にFMのトランザクション機能。
・Tips対決は竹内さんに一票。
・開発業務で、まだまだ悩みが多いです。
次回も参加予定です。よろしくお願いします。
男性トランザクションの続きを聞きたい。今日のPDFとファイルも欲しいです。
今日のTipsは竹内さんが面白かったですが、茂田さんのが改めて参考になりました。
男性トランザクション興味深いですが、分かりませんでした
男性ホームページでQTで流してほしい
男性トランザクションの話はまた今度ぜひ特集してください。
男性面白かった。
男性カスタムメニューはぜひ使いたくなりました。
トランザクションのお話は、もっとくわしく、いつか特集してください。
ありがとうございました。
男性トランザクションに関して非常に興味深い内容だったのですが、時間切れでじゅうぶんではなかったのが残念です。プレゼン資料とデモに使用したデータを配布していただければと思います。
女性ものすごくシロウトなので時々???になりましたが、おもしろいTipsなど参考になりました。
女性トランザクションの話をもっとゆっくり聴きたいです!
Tipsも役に立ちます〜 ありがとうございました。
男性トランザクションをもう少しくわしくお願いします。
男性トランザクションについてのセッションが面白かったです。
男性時間不足ですね。90分に収めるには、内容多すぎかも。
女性いつも面白いです。ね。
年次処理とか?トランザクションありますね〜〜。

Copyright © 2004-2010sevensdoor.com. All rights reserved.