Report

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

第44回 まだまだ遊べるスクリプトトリガ
・開催日時:2009/02/21 18:00-19:30
・開催場所:Apple Store Ginza 3F シアタールーム
概要:
FileMaker10の目玉機能であるスクリプトトリガはワザの宝庫。まだまだ尽きない遊べるネタをご紹介します。
レポート:
年末から貧乏オーディオが再燃し、いじくりまくりの2ヶ月が過ぎた。小刻みなプチ散財の果て、財布が裏返えるタイミングを見計らうように右ツィータのコイルが断線した。ユニット裏の端子が接着剤劣化でもげ、コイル線に直接ストレスがかかったらしい。裏返しになった財布に単価28000円の交換部品を用意する余力はなかった。泣く泣くユニットを分解、ボイスコイルを1回転だけ解いて引き出し、再接着した端子にハンダ付けして組み立て直すという緊急「オペ」を決行したら何となく復活してしまった (長持ちはしないと思うが)。久々に具合悪くなるほど精神を集中した。
さて、余計な話はこのくらいにして、さあFFNいってみよう。

第44回 FileMaker Fun Night!「まだまだ遊べるスクリプトトリガ」
お題は...
FMスーパーテクニック 〜10の修復をご紹介〜
【特集:まだまだ遊べるスクリプトトリガ】
恒例Tips対決!



●FMスーパーテクニック 〜10の修復をご紹介〜
 (竹内さん)
何回も話題に上っている「修復」。壊れて開けなくなったファイルをかなりの確率で救ってくれる、さながら「神」のような機能。
例えば、サーバ上のFMSが終了不能になり万策尽きたような (ワシのせいじゃない) 場合であっても、再起動後は一方的に「壊れています」と宣言される。この怒りをどこへ持っていけば良いのか...
...それは修復コマンドに持っていけば良いのだす。

修復とは
・損傷ファイルを復活させる。
・ただし、完全な元通りにはならない。
・その目的は、開けないファイルをとりあえず開けるようにする、というもの。
・FileMakerから見て、理解できる範囲で辻褄を合わせるのが修復。
 FileMakerが理解できなかった「破片」は捨てられたりする。

ゆえに、日常のメンテナンスでは「修復」コマンドを使ってはならない。

ここでデモ

レイアウト上に点描ふうの小さな四角形、カラフルなオブジェクトが無作為に散りばめられている。
この状態をモデルに破損と修復の関係を説明するのだが...
かえって難しいことに...竹内師匠も苦笑いw。

修復される対象とは
・DBのスキーマ、つまりデータベースの定義。
・ファイルレベルの構造、スクリプト、レイアウト、値一覧、アクセス権など、ユーザが作るものではなくファイル自体がもとから備えているべき構造。
・テーブル定義、フィールド定義
・レコード、データ、索引
・レイアウトやスクリプト

修復されないもの(捨てられるもの)には、ソート順が挙げられる。
このテの話は、DevConの「Under the Hood」コーナーで (英語で) 聴けるらしい。

version 10での変化→Advance版から「ファイルのメンテナンス」コマンドがなくなった。
開いているファイルをいじることになり、かえって危険なので廃止した模様。
ただし、「名前を付けて保存」のオプション「最適化保存」に含まれる軽めの修復処理は残っているので、こちらを活用しよう。
また、「修復」コマンドのオプションとして、「ファイルの一貫性チェック」や詳細オプションも選択可能になったので実際に処置可能な内容としては以前よりも強化されたとも言えそう。

修復後のファイルは、基本的にそのまま使うものではない。
どんな要素が欠落しているか定かでないため、あくまで開くようになったことで最新データの救出元として割り切った対応をするべき。
具体的には、直前回バックアップのファイルをコピーし、その中のレコードを削除した上で修復ファイルからデータをインポートする。
その際、何日前からファイルが不調だったのかも不明につき、直前バックアップファイルも既にダメージを受けている可能性があるので、バップアップファイルも「一貫性チェック」等実施した方が良い。

バックアップと破損ファイルのフェーズが違っていたら
バックアップ後にスクリプトやレイアウトが追加されていた場合、バックアップファイルに改めてそれらの要素を盛り込まなければならない。問題はその再盛り込みの作業方法なのだが、破損ファイル側からのコピペは厳禁。必ず破損ファイルを参照しながら、バックアップファイルへ手作業で差分の構造を追加し直すことが必要。

とにかく面倒と思いがちだが、例えば100万レコードのDBがクラッシュしたところを想像すると、データを救出できるだけでも万々歳だったりするので、捨てたもんではないね。

最後に、修復のご厄介にならないための秘訣
・定期的にメンテナンスを行う
・FileMaker Serverを使う

FileMaker Serverの場合、クライアントがハングしたとしても、ファイル自体はサーバ上で開かれているので何も影響は及ばない。
バックアップも自動で確保してくれるし、データの保全を優先する場合、FMSは外せないアイテムってことになりますなあ。



●【特集:まだまだ遊べるスクリプトトリガ】
(茂田さん)
version 10の目玉である「スクリプトトリガ」。発表以来、話題になることが多いネタだが、その魅力をきちんと整理し、ここでもう一度紹介しようという企画。今回は<基礎編>ということだ。リファレンス本で定評のある茂田師匠ならではの (メモ取るのも困難なほど集積度の高い) プレゼン。いつも何カ所かはメモが間に合わない。そういう変な意味でワシはドキドキなのだ。

スクリプトトリガとプラグインの違い
・プラグイン (EventScript...フリー)
 ・Extensionフォルダに入れると外部関数として現れる。
 ・計算式を評価したときスクリプトを起動する。
 きっかけが計算式の評価だけなので、用途が限定されがち。

・スクリプトトリガ
 きっかけとして選択可能なイベントが多く用意されているので応用範囲が広い。
 
ここでデモ


▼レコードハイライト
v9では、レコードハイライト (被選択レコ−ドの背景色を変える) を実現するにはwebビューアを利用してウラ技全開であったが、v10では
レイアウト設定からスクリプトトリガのOnRecordLoadイベントをきっかけにスクリプトを起動している。
スクリプトの内容は、現レコードのレコード番号を$$変数にセットし、ウィンドウを再表示するというもの。
$$変数の値とレコード番号が一致したら背景が所定の色に変わるという条件付書式で発色する。

v9時代のwebビューアに比べ、相当シンプルになった。
文字で表現できるってことは、そういうことだと激しく思う。

ここでTips
レイアウト要素としてのただの矩形に条件付書式は設定できない。
なので、ここではスペースが1文字だけ入力されたテキストボックスを作成し、そこに条件付書式を設定している。

▼繰返しボタン
普通、繰返しフィールドをボタンにすると、ボタンゆえフィールドにカーソルが入らなくなって繰返し位置番号を取得できなくなるので実現困難と思われるのだが、OnObjectEnterイベントを利用するとカーソルが入ってからトリガがかかるので繰返しフィールドの各マスを個別のボタンとして使うことができる。

▼OnTimerイベント
他にも「OnTimerスクリプトをインストール」という、よくわからない名前のスクリプトステップを使ってOnTimerイベントを使うことも可能だ。

▼OnLayoutKetstrokeイベント
押されたキーを検出する。Get(トリガキー入力)関数により戻り値を変数にセットして利用する。
KeyStroke系の処理をするときは、スクリプトの最終ステップに「現在のスクリプト終了」ステップを入れておかないと、押されたキーの文字が入力されてしまうので注意が必要だ。

▼新規レコード
新規レコード作成時のスクリプト起動は、需要は多いと思うがそのものズバリのイベント名はないので、ある意味裏技的に行う。
実現には2つの方法がある。
1. スクリプト起動の未済フラグを用意しておき、その値によって実行する否か分岐する。
2. 作成タイムスタンプを利用する。

ああ、むずかしい。
これ以上は実習しないと書けまっせん。



●恒例 Tips対決!


・茂田さん
 ヘルプにあるリファレンスのエラーコードにはSMTP関連のエラーコードも含まれる。つまりFileMakerの発するエラーコードで通信エラーの中身も知ることができる。

・竹内さん
 スクリプト定義の「互換性を表示」」はv10で仕様が変わり、「メールを送信」ステップにおいてSMTPメールがオプションに加わった。ゆえに、単に「メールを送信」だとweb非互換として表示されるが、SMTPメールオプションが選ばれている場合はweb非互換の表示にはならない。

・Shinさん
 オブジェクトの自動サイズ変更と現表示モードの参照を組み合わせると、フォーム表示のときだけ文字を大きくするような制御ができる。こうすると、version 10で、「ステータスエリアの専用ボタンで表示モード切替可能になった」仕様変更を更に活かすことができる。

加えて「PDFで保存」ボタンはプレビューモードでも使えるので、プレビューモード用にカスタマイズ可能となりすこぶるよろしい。


v10は殆どいじくってないので、皆さんがこのように垂直に立ち上がり始めると。立場がかなり厳しくなってきた。
さっさと勉強せねばレポート書くことすら無理になりそうな...

Reported by 金丸康明



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



Special Thanks to:
 FileMakerまんが:たまみそさん(今回のまんがはこちら
 会場ヘルプ:新妻利恵さん(有限会社アールビィ
 イベントレポート:金丸康明さん
 景品ご提供:ファイルメーカー株式会社さま
会場の様子:>> Topへ











来場のみなさんのご感想:>> Topへ
男性修復は完璧に戻るものと勘違いしておりました。これから注意して活用したいと思います。
男性スクリプトトリガ応用編希望!
応用編楽しみにしてます。
女性スクリプトトリガが非常によかったです。繰り返しボタンのOnTimerのあたりが少しかけあしでむずかしかったのではないかと。
男性今年に入ってsalesforce.comのCRMを利用しはじめたが、FMPro10なら十分同等のCRMgできるのでは?と思っています。どこかFMPro10開発をお願いしようと探し中です。
女性初めて参加させていただきました。楽しかったです。
女性スクリプトトリガ!楽しそうですね。いろいろと遊べそうです。茂田さんの説明がとてもわかりやすかったので、次も楽しみにしています。
女性・竹内さんの修復の話、盛りだくさんでした。時間が短くて、メモがとりきれませんでした。
・蜷川さんのTips、自分が作ったことがない処理だったので、難しかったです。
・FMDayでの、レコード転送の二重化障害の件、アドバイスありがとうございました。現在、アドバイスを元に調査中です。
男性カスタムWeb(PHP)の特集希望します。できればFMAPIとFXの違いなども含めながら。
男性変数の繰り返しって使ったことなかったんですが、今日茂田さんが使ってたのをみてちょっと使ってみようと思いました。
男性FileMaker Pro 10を購入しましたが、まだまだ使い込めていません。スクリプトトリガは使い込めばいろいろ出来そうですね。楽しみです。また色々な使い方を紹介してください。
男性スクリプトトリガは大変参考になりました。
男性茂田さんのコーナーはいつも目からウロコです。サンプルファイルがDLできれば助かります。
男性開始時間を早くしてほしい。ティップス対決はにな川に一票。珍しく時間通り終わりました。今度もお願いします。
男性今日は、竹内さんの[修復]の解説がとても参考になりました。次回のカスタム関数、そのまま使えるものをぜひご紹介下さい!
男性スクリプトトリガ基礎編、参考になりました。ぜひ応用編やってください。
男性さらに10が欲しくなりました!
男性参考になります。ありがとうございました。

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