Report

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

第42回 「索引」について掘り下げる
・開催日時:2008/12/20 18:00-19:30
・開催場所:Apple Store 銀座店
概要:
リレーションや検索に欠かせないことなのに、スポットライトがなかなか当たらない「索引」。特にver.7以降になって導入された「最小」の索引って今一つという方が多いのではないでしょうか?そんな索引について解説いたします。
レポート:
この一年は早かった...そう思ったのは去年の暮れだ。...あ、今年もはや年末なのか。
今年末年始、9日間のまとまった休暇となる企業も多いという。かくいうワシも今年は人並みに9連休を満喫中。このところ例年年末に抱えていた800ページほどのFileMaker応用案件をどっかにさらわれたのが理由。憂慮すべき事態だが、悩むのは年が明けてからにして、日頃なかなかできないオーディオいじりが目下再燃中なのだ。しかし、内容を忘れてしまう前に、そろそろレポートなんぞを書かなければ。

第42回 FileMaker Fun Night!「索引について掘り下げる」
お題は...

しっかり覚えるFileMaker 〜入力値の自動化を上手に使おう〜
【特集:索引について掘り下げる】
恒例Tips対決!
FMスーパーテクニック 〜AutoUpdateってなんだ?〜


●しっかり覚えるFileMaker 〜入力値の自動化を上手に使おう〜(茂田さん)
フィールド定義の「オプション」として「入力値の自動化」が用意されている。木で鼻を括るネーミング。「入力値の自動化」と言われてもねえ...
とりあえず設定すると動きはするようだが... さて、正しくはどのように使うものなのか。

▽自動入力の基本
・シリアル値はリレーションキーとして使う。
・タイムスタンプ(作成/更新)はデータとして利用しなくても、動作確認などのために設定しておく。
・「データ」を指定すると固定値が自動入力される。
・「ルックアップ値」を指定すると、その時点の関連フィールドの値が自動入力される。
・「計算値」に式をセットしておくと、その時点での計算結果が自動入力される。

▽テクニックあれこれ
※まず「フィールドに既存の値が存在する場合は置き換えない」オプションに注意すること。デフォルトではこのチェックが付いていて、一旦入力された値は変更されない。このチェックを外すと、計算結果により強制的に書き換えられることになる。

・入力者によるバラツキをなくすためにテキストのスタイルを抜く
 TextFormatRemove ( self )
 さらなる応用例として、初期値をセットしつつテキストのスタイルを抜くには、作成タイムスタンプと更新タイムスタンプを比較する式を利用する。等しければ新規レコード作成だと判断して初期値をセット、そうでなければ上記の式でスタイルを抜くという感じだ。
・ラジオボタンのshift+クリックによる複数選択を禁止するには
 GetValue (self, 1)
 値一覧のデータが改行区切りで内部保持され、しかもクリックした順になることを利用して、先に選ばれたデータだけ残して他を消してしまう式だ。応用としては、チェックボックスにおける同時選択数の上限をセットすることもできる。
 
プラグインを利用すれば、特定のフィールド値の更新等をきっかけとして、「入力値の自動化」の範疇を超える動的な処理を加えることも可能だ。いわゆるイベントドリブン。では、プラグインはどのようにきっかけをつかむのだろうか。

▽ここでデモ
フリーで設定も簡単な「EventScript」プラグインを使ってデータ更新のタイミングを検証するデモが行われた。
http://www.softs4humans.com/FMPro_Plugins.html
このプラグインが提供する関数は実質1個(!)で、それも式が評価されたらスクリプトを起動するだけというシンプルさ。あとはバージョンを返す関数があるだけだ。

・検証1:新規レコード作成をきっかけとしてスクリプトを起動する→問題なく動作する
・検証2:上記の式を変更し、式中で別フィールドの値を使うようにしてみた→スクリプトが複数回動作してしまう

つまり、値が確定するまで何度も繰り返して式を評価しているのだ。

実はバージョン7ではフィールドを定義した順に値を評価するというクセがあり、これを利用した裏技もあったのだが、ここの仕様が微妙に変更されているという話で、ちょっと面白い。



●【特集:索引について掘り下げる】
(今泉さん)
「索引が生成できないのでこの値一覧は動作しません」ああ何回言われたことか。そして直後に聞こえる「ほら言わんこっちゃない...」は内なる自身の声だ。今回コレ聴きたさに来場した人も多いのでは?

索引とは...検索にあたりガイドとなる情報。索引がないとデータを総当たりで検索しなければならずパフォーマンスに大きく影響する。

索引がないことが問題になる要素は...
・リレーション(動作しない)
・検索、ソート(遅くなる)
しかしその反面、索引がないとデータは軽くなる。

ここで郵便番号検索のデモ
最初に索引なしのデータで検索を試行、次に索引を生成してから同じ条件で検索。
すると、索引ありの方が圧倒的に検索時間が短い。

索引の内容は、目的のフィールドにカーソルがあるとき、コマンド + i で表示できる。
索引が生成されているフィールドに対してやってみると、全レコードのそのフィールドの値(の一部)がそこに抽出されている状態を見ることができる。
ここで「単語一語で表示」オプションに注目。フィールドの索引設定が「必要時に索引を自動設定」になっていると、そのオプションにチェックしたとき索引が再生成される。「単語一語で表示」がオンのとき、本来繋がっているべき文字列が多くのバリエーションに分割されてそこに見える。どうやらこの分割された文字列のレベルで検索やリレーションの際の一致を照合しているようだ。

※「必要時に索引を自動設定」にはぜひともチェックを付けておきたい。

現バージョンでは、親子どちらかのテーブルに索引があればリレーションを成立することができる。しかし、一方にしか索引がない状態では参照の方向によって相手を特定できず参照が成り立たないので注意が必要だ。

▽「含む」リレーションについて
「リレーションキーとするフィールドのデータを1文字ずつ分解し、改行区切りで連結した値」を格納するフィールドを作り、そこを相手としてリレーションを設定する。
すると、一方に「日本」と入力すると、「日本」だけでなく「日本語」「日本人」「日本大通」「大日本」といった「含む」相手をフィルタリングできる。

▽索引の謎

索引の言語設定がソート結果に与える影響を試してみると、
・日本語:012...abc...ABC
・英語 :012...ABC...abc
どうやら現バージョンでは、英語のとき、大文字と小文字の区別をしていないらしい。

数字、日付時刻のフィールドはどうなるか
・「索引なし」と「すべて」のみ選択可能→単語の概念がないため

「最小限の索引」のとき、ルックップ値を取得できなかったことがあるが、今回は残念ながら再現できなかった。解明できたら情報公開するとのこと。

▽Q&A
・「最小限」と「すべて」はどのように使い分けているか。
 →ポータルでは「最小限」で構わないが、ユーザによる自由な検索を想定する場合は「すべて」を選択しているとのこと。

※ちなみに「最小限」とは、頭から100文字まで索引化することを意味するそうです。


●恒例 Tips対決!

・茂田さん
 モーダルウィンドウ(何かボタンをクリックするまで抜けられないダイアログなど)を開くにはスクリプトを使う。
 予め仕組んでおいた「関連レコードへ移動」スクリプトステップを使うのが簡単。
 スクリプト一時停止中にボタンをクリックさせ、そのクリックを以てスクリプトを再開するようにしておく。
 (デバッグを考慮すれば、こういう場面での入力フィールドは、実際に表示される寸前に初期化するように作ると更に良い。)

・山本先生(都立広尾病院)
 fmnet共有においてスクリプトを高速化するには、事前にフィールドへカーソルを入れることで排他しておくと良い。
 (ただし排他によるデメリットも考慮のこと)

・Shinさん
 OSのヘルプのキーワードへ、メニューに使われている語を入力、実行するとリストが現れる。
 そのリストから目的の語を選ぶとメニューバーから該当部が自動的に展開、ハイライトされ所在を示してくれる。ただしMac/Leopardのみ。

・竹内さん
 FileMakerのパッケージを開き、リソースの「Japanese」からヘルプをつまんでブラウザにドロップすると、ヘルプを開く迄の時間を短縮できるが、検索はできない。検索するには、ブラウザのGoogleバーで「TrimAll site:www.filemaker.co.jp/help」などと入力すると一発。


●FMスーパーテクニック 〜AutoUpdateってなんだ?〜 (竹内さん)
ここでいう AutoUpdateとは、fmnet上でデータベースを共有するクライアント側からリクエストを発して、FileMaker Server管理下のフォルダに置いた更新用プラグインを自動的に自身にインストールすることを指す。クライアント数が多くなり、場合によってはVPN越しに支店間共有なんて状況になると「これ入れといてくださいね」では済まされないことも多いだろう。そういう時はコレって感じでしょうか。ただし敷居は高そう...orz。

AutoUpdateプラグインを有効にすると、以下3つの外部関数が使えるようになる。

1. FMSAUC_FindPlugIn ("プラグイン名")
FMS側で公開中の指定プラグインのバージョン番号を返す。該当なければ「-1」を返す。

2. FMSAUC_UpdatePlugIn ("プラグイン名" & "スペース" & "バージョン番号")
指定のプラグインをクライアントへダウンロード、インストールする。
式を評価したタイミングで動作が実行される。つまり普通のスクリプトステップのように「○○を実行 (引数)」というステップで実行するのではなく、その式が読まれた瞬間に、指定の相手が存在すれば即ダウンロード実行となるので注意。引数は変数かフィールド参照で指定することになる。

3. FMSAUC_Version ( 0 )
そのクライアントマシンで現用のAutoUpdateプラグインのバージョン番号を返す。

▽公開階層とインストール先
サーバ:Databases/ の直下に「AutoUpdate」フォルダを作成し、その中に入れておく
クライアント:(各ユーザの)ライブラリ/Application Support/FileMaker/Extensions/ にインストールされる

※旧バージョンのクライアントの場合は、上位の(ユーザ別でない)ライブラリ以下にインストールされるので注意。

▽ここでデモ。
FMS側に置いたプラグインをクライアントへ実際にインストールしてみる。
スクリプトは次のように書かれている。
・ローカルのプラグインについて調べて変数に入れる
・サーバのプラグインについて調べて変数に入れる
・両者を比較し、更新可能ならばインストールを実行する
実行した結果、更新は正しく行われた。

▽更に工夫...複数プラグインの更新を一気に処理するためには...
プラグイン管理テーブルを作って参照し、ループで順次処理といった方法が考えられる。
実例として、Fun Night!のお知らせメール送信のために用意されたスクリプトが紹介された。これもプラグイン管理テーブルということだ。

▽注意点
・サーバ上のバージョン名フォルダは正しいバージョン名表記で作る。
・Macの場合、サーバに置いておくファイルは「.tar」形式にしておく。

▽参考情報
FMSに付属のドキュメント(PDF)がある。
・FMS9_AutoUpdate_ja.pdf →FMSスタートページからダウンロードできる。
・AutoUpdatePlugin.fp7 →ライブラリ以下にある(検索ですぐ見つかる)

必要のある向きは、試してみる価値大ありですね。もちろん自爆回避のため検証ファイルを作って十分にリハーサルしてください。

▽Q&A
・FMS8でも同じ?
 →FMS8でも置き場所は同じ。

・バージョンダウンはできる?
 →やった事はないが、そのように書けばできるのではないか。

・無かったものを新規インストールできる?
 →もちろん可能。

・WindowsサーバとMacクライアントの組み合わせではどうか?
 →問題ない。

・ダウンロード即動作可能なものは、そのまま使っても良いか?
 →微妙。FileMakerを再起動した方が無難と思われる。

最近はネットワーク上での高度なハナシが多くなってきて、メモを持って帰っても自宅で再確認できない場面が殖えてきた。悔しいが仕方ない。FileMakerというものが徐々に難しいものに変わっていくようで、ちこっと哀しい。ソフトが進化して行く傍ら、指くわえてたら置いていかれるので勉強が欠かせなくなってきたと言うこともできそうだ。明けて2009年、頑張らねば。
次回は1/24(土)「第43回 FileMaker最新情報」だよ。な〜んか意味深だね。

●追加ネタ【2009年版 ネラレンダー配布会】
Fun Night!に登場するsevensdoorメンバー達の真の姿という「ネラレンジャー」キャラ満載の2009年版卓上カレンダーを限定配布でそ。
今回はFileMaker川柳...FileMakerなるソフトを知るほどに笑える...も満載です。お後がよろしいようで。


Reported by 金丸康明



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


Special Links:
EventScript plug-in(Softwares For Humans)

Special Thanks to:
 FileMakerまんが:たまみそさん(今回のまんがはこちら
 会場ヘルプ:川名明子さん
 イベントレポート:金丸康明さん
 iPhone合奏隊のみなさん:
  Shin(オカリナ)
  伊藤芳信(ピアノ右手)
  与座さつき(ピアノ左手)
  竹内康二(スレイベル)
会場の様子:>> Topへ


iPhoneによるX'mas Songで冒頭乗っ取られる








こんなに使える入力の自動化

索引はデータベースのキモ


これらの違いは…?



こんな違いも…!


熱いQ&Aで盛り上がり


おおっ、モーダルっ!(汗

会場から超レアTips!



LeopardのTips!?!

他では聞けないレア話、覚えておくべし

ここが実態




ここでもQ&Aに関心集まる



満席御礼

たまみそさんのご令嬢登場!

来場のみなさんのご感想:>> Topへ
男性私には難しい話が多いですが、大変勉強になります。
女性大変面白く、勉強させていただきました。Tips対決はモルダーに1票!
女性索引の話がとてもよかったです。
男性AutoUpdateはどんぴしゃ!
男性今年もありがとうございました!!
男性今日の入りもすごいじゃないですかタロパッチ!!
男性・メリークリスマス!!
・AutoUpdateが動いているところをはじめて見れたので、とても参考になりました。
男性参考になりました。ありがとうございました。
男性AutoUpdateのデモが拝見できてよかったです。
男性ありがとうございました。索引について考えるきっかけになりました。
男性初めての参加でしたが、とても勉強になりました。まだまだFileMakerは使い始めたばかりなので、今後も色々ととお教え頂きたいと思います。今後も期待してます。
iPhone聖歌隊、良かったです!
男性ちょっと難しかったですね!
男性大変参考になりました。
男性AutoUpdateや索引のことは全く知らなかったので参考になりました。
男性どれもムズかしかったです。
男性ネラレンダー、ありがとうございました。
男性並び方が設定によって異なる点や、索引で1文字シフトして文字を持たせるテクニック等参考になりました。plug-inは私にはちょっとむつかしかったです。
男性掘り込んだシリーズが良いですね!
女性来年は2時間にパワーアップ!?来年も宜しくお願いします。
男性Q&Aが活発でおもしろかったです。
男性索引の多様性が理解できておもしろかった。AutoUpdateは当面使えないかな。
男性索引、自動入力という見落としがちな部分についての理解が深まりました。中途半端な理解だった頭の中がクリアになったような気がします。
男性ファイルメーカー以外へのエクスポート特集をしてほしい。(仕事でファイルメーカーのない相手への情報発信の機会が多いので)(特に画像を含む)
女性今日は少し遅く来てしまったので茂田さんのがみられなくて残念。(ごめんなさい)
索引のお話は、わかりやすくて頭の中にすーっと入ってきました。最小とすべてのチェックについて「必要時に...」のチェックがどう影響するのか、というか違いがあるんだとはじめて知りました。
AutoUpdateのは、前からよくわからなかったのでとても勉強になりました。
今年もありがとうございましたぁ!
女性・索引のテーマ、勉強になりました。
・JDBCでFMにデータ転送した際、FMにあるはずのレコードがJavaから見えなくなり、その為、二重転送される障害が多発しています。他にも起きているプロジェクトがありそうなので、いつかテーマにしてください。
男性カレンダーいただきます。
男性再帰の考え方をわかりやすく考える考え方。
女性合奏おもしろかったです♪

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