| 第40回 ウィンドウ制御の極意 |
| ・開催日時:2008/10/18 18:00-19:30 |
・開催場所:Apple Store Ginza 3F シアタールーム
|
概要:
v.7以降、ウィンドウが多数開けるようになり、非常に便利かつ画面の自由度も広がりました。データの比較、違う種類の情報の表示、入力と表示の切り分けなどなど、利用できるシーンは様々です。
ウィンドウ制御についてそのアイディアと極意をご紹介します。
|
レポート:
いや秋だね。朝晩はすっかり涼しくなっちまって、とりあえず何かやる気になりそな予感だけは漂ってきた。シカシ快適になったのはまだ朝晩の屋外だけだ。ネクタイ上着復活の今、満員電車の中は相変わらず夏のよう。風に当たりたい衝動が突き上げてくるんだが、いつの頃からか暑くても窓を開けてはならない暗黙のルールが定められてしまったらしいので、今のところ素直に従うことにしている。汗拭きつつ見回せば、不思議なのはほぼ冬のいでたちで汗ひとつかかずケータイに耽る人種だ。暑くねぇのかよって、ああいっぺん訊いてみたい... と、どんどん関係ない話が加速してきたところで、今回はシンプルに本題に入ろう。さあ、FunNight!ですわよ。
第40回 FileMaker Fun Night!「ウィンドウ制御の極意」 お題は... ・しっかり覚えるFileMaker 〜取得関数完全制覇〜 ・【特集:ウィンドウ制御の極意】 ・恒例Tips対決! ・FMスーパーテクニック 〜今回はおやすみ〜
●しっかり覚えるFileMaker 〜取得関数完全制覇〜 (茂田さん)
取得関数は状態を調べる。すなわち次に起こすべきアクションを判断するための「感覚器官」として、常々お世話になっています。 どんどん高度化するFileMakerの機能を使いこなすためには、頭脳だけではなく「感覚器官」からの情報が必須、というわけで、89種類ある取得系関数の使いこなしをご紹介。
・値を読み取るだけでセットはできない。 ・値の更新は計算式が評価されたときだけなので、迷ったときは、スクリプトで関係する値をセットした直後しか更新されない程度に考えると良い。
▼どんなものがあるのか Get ( アクティブ修飾キー ) Sihft、Optionといった修飾キーを押しつつスクリプトを起動したとき、動作にバリエーションを付けることができる。 フィールドのクリックでスクリプト処理実行、Shift+クリックではフィールドにカーソルが入る、とか。
Get ( ウインドウ名 ) サブウィンドウを使ったダイナミックな機能に不可欠。
Get ( FileMaker パス ) Get ( デスクトップパス ) Get ( テンポラリパス ) このへんはデータのインポート/エクスポートや外部ファイル(例えばPDF)を開くといった動作に書かせないアイテムですな。
Get ( スクリプト引数 ) Get ( スクリプトの結果 ) スクリプトは1種類でも、起動する画面やボタンによって異なる値(引数)をスクリプトに背負わせることで動作にバリエーションを付けたり、サブスクリプトの結果を背負って親スクリプトに戻ってくることで以後の処理を分岐したり...という具合に利用する。
Get ( システム NIC アドレス ) そのマシンのMACアドレス(デバイス毎に割り振られている世界中でユニークな識別番号)一覧を返す。
Get ( ホストのタイムスタンプ ) タイムスタンプを記録するならホストの値を使った方が安心。
Get ( レコード ID ) データインポートすると変わってしまうので注意。
ここでデモ。テキスト内の任意の選択文字列の色などスタイルを変更する。 やってみると、なかなか難しいもんですが、ポイントはここでもGet系関数。 ・Get ( アクティブ選択位置 ) ・Get ( アクティブ選択サイズ ) この2つのパラメータを取得できれば、Middle()関数で文字列を取り出したり「計算結果を挿入」スクリプトステップで加工後の文字列を戻したり、いろいろ細工ができますね、と。 パラメータは1回取得したら変数にセットしちゃいます。そうすれば何回でも参照できるしね。 普通にやっただけでは処理終了とともに対象文字列の選択が外れるので、最後にもう一度変数を参照して変化後の対象文字列を選択し直したところでスクリプト終了すれば自然な終了感を得られるようです。
●【特集:ウィンドウ制御の極意】(竹内さん)
マルチウィンドウ化されて随分時間も経ったけど、使いこなせてますか。 昔、V6の頃は最大化、最適化くらいしか選択肢のなかったウィンドウ関連の制御だけど、最近では選択肢も豊富になって、かなり憎い演出も作り込めるようになってきた。例えば対象レコードの構成に影響を与えずに全レコードに対して全置換をかけるといった便利機能も、「新規ウィンドウを開いて、そちらで処理し、終わったら新規ウィンドウは閉じる」とやってしまえば可能だ。
竹内師匠はこういう事例を指して「開発も楽になった」と言う。昔はパフォーマンス低下と引き換えに「華」を無理矢理演出したものだが、最近では無理無くトレードオフもなく実装できる。そういう部分を指しているのだろう。
▼ウィンドウ制御にはどんなもんがあるのか。
・開閉 →閉じるときは名前指定が必要なので、最初に開くときにきちんと名前を付けておくこと。ウィンドウを閉じるのとファイルを閉じることの違いを考えながらスクリプトを組むべし。 ・位置 →新規ウィンドウであっても指定できる。既存ウィンドウならば「ウィンドウの移動/サイズ変更」を使う。 ・サイズ →「ウィンドウの調整」、または「ウィンドウの移動/サイズ変更」 ・動き →ループの中に「ウィンドウの移動/サイズ変更」を置き、1回あたりの変化量を微量にすれば滑らかに動いているかに見える。ループには予め停止の仕組みを組み込んでおくべき。
▼複数ウィンドウの制御
・整列させたい。 →「全ウィンドウを整列」スクリプトステップを使う。 ・モーダル(排他的)動作をさせたい。 →「ユーザによる強制終了を許可」しない。「スクリプト一時停止/続行(制限時間なし)」この2項を使えば実現できる。 ステータスエリアを隠し、一時停止をループすればよい。ただし、抜けるための手だてを用意しておくこと。 ・状況に応じて適切なウィンドウを自動的にアクティブにしたい。 →スクリプト内で状態を評価し、選択されるべきウィンドウ名を「ウィンドウを選択」スクリプトステップに渡してやれば良い。 ・それぞれのウィンドウの表示値を常に矛盾なく維持したい。 →これは面倒くさそう。辻褄が合うように各ウィンドウをスクリプトで巡りつつ処理を行わせる処理が必要。
ここでマルチウィンドウの利用あれこれをデモ。 ・マスタからメインへの入力 ・目的の値がマスタにないときは、マスタアイテム追加。 ・日程表を2ウィンドウで構成し、一方の値の変化に他方が追従するサンプル。
▼まとめ ・あまり調子に乗らない。遊びと実用性は別なので良く見極める。 ・マルチウィンドウ化は、スクリプト作成のハードルが一気に高くなるが、その反面使い勝手は大きく向上する。
▼Q/A 会場から、ウィンドウ数の上限について質問あり。 「メモリ等の条件が支配的なのでは」との回答に対し、「8GB、Mac proでも100枚までは出せない感じ」との体験談が......そこまでやるか。 80枚くらいが上限かも
●恒例 Tips対決! おおっ。終演まであと1分半しかない。ホンマカイナ。
・茂田さん TextStyleAdd ( ) カッコ内に引用符なしでパラメータを入れる。数字でも効く。例えば「512」で斜体が掛かるなどシブイ使い方も。
・竹内さん 計算式の入力中にTOGを確認するはめになったら、「現在のテーブル」プルダウンを引っ張って一番下=「リレーションシップの管理」を指示すると、計算式入力ダイアログとTOGをいっぺんに表示できる。。
・Shinさん FMSに繋いでいるとき、ウィンドウ名は「ウィンドウ名(サーバ名)」になる。しかし複数のサーバに繋いでいるときはカッコが無くなってサーバを識別できなくなる。確認のためには新規ウィンドウを開くとサーバ名も表示される。
●特別コンテンツ(Shinさん)〜Mission Impossibleに挑む〜
今回、特段の事情でお休みのはずのShinさんが、なぜだかTips対決の途中から参戦です。どしたの? このところ、プラグインに嵌まりっぱなしのようです。熱いぜ。たとえば次のようなお題目・・
・webログの解析といった目的でURLデコードが必要になった。でもFileMakerにはURLエンコードしかない。 ・URL先にあるイメージを取り込みたいけどいったいどうすれば。
一般的な枠から飛び出して目的の機能を極めようとすると、必ずぶつかる壁がある。FileMakerの世界の果てってやつ。しかし諦めるな、プラグインがあるゾ。 組み込むだけでFileMakerの機能を拡張する「プラグイン」キモは「如何に効率よく入手し利用するか」にあり。 紹介されたのは、360worksのサイトにある「ScriptMaster」という一品、これが凄い(らしい)。 JAVAが判れば自分で外部関数を追加できるという優れもの(ワシJavascriptなら多少かじってますけどダメですね)。でも、サンプルにはたんまり無料の「使える」ネタが揃っているそうです。
詳しくは後日、正式コンテンツとしてお目にかける、と言い残して銀座の雑踏へ消えていったShinちゃんでした。
難しいね。前にも書いたけど、パソコンがネットに繋がって飛躍的に威力を増したように、ソフトも他のソフトと連携すれば強力になる。問題はどうやって具体化するか。場合によってはコードを書く必要があるなど、いきなり敷居が高くなるところでもありますなあ。しかしプラグインにはGUIだけで使えるものも多いようだからあれこれ試してみたいところ。そうすると、今度は英語の壁か...(先生、保健室に行ってもいいでしょうか。)
アンケートのご協力、どうもありがとうこざいました! ご意見、ご要望やご感想はこらちからお寄せください。 >> ご意見箱
Special Links: ・ScriptMaster(360Works)
Special Thanks to: FileMakerまんが:たまみそさん(今回のまんがはこちら) 会場ヘルプ:新妻利恵さん イベントレポート:金丸康明さん
|
会場の様子:>> Topへ
|
|
|
|
|
|
|
|
|
|
|
Tips対決です
|
|
|
ついにたまみそ二世登場!連載危うしか?
|
|
来場のみなさんのご感想:>> Topへ
| また来る機会と合えば参加したい |
| 男性 | ウィンドウを動かすのはできるのはわかっていたが、あのような制御できるとは思いませんでした。 |
| 男性 | 竹内氏の「ウィンドウ制御 ... 」素晴らしかった! |
| 女性 | 時々でよろしいですから、初め(簡単)なのをお勉強したいと思います。 |
| 男性 | たまみそ先生のマンガのタッチが変わった!? 生産おめでとうございます。 |
| 男性 | ScriptMasterおもしろかったです。スーパーテクニック無かったのが残念です...。 Tipsは竹内さんのが良かったです。大阪からなのでたまにしか見れないのが残念です。 |
| 男性 | とても勉強になりました。 |
| 男性 | 特別編楽しみにしています。 |
| 男性 | 文字修飾のスクリプトをもう少し見たかった |
| 男性 | Great!! |
| 男性 | 大変勉強になりました |
| むずかしいけど、いつも参考になります。 |
|
|