Report

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

第25回 分離モデルの光と影(と罠)
・開催日時:2007/07/14 18:00-19:30
・開催場所:Apple Store Ginza 3F シアタールーム
概要:
ver.7におけるデータ構造の大変革から3年が経ち、データ部分とインターフェイス部分をわける「分離モデル」という考え方も、だいぶ一般的になってきました。今回は分離モデルの利点と限界、分離したがゆえに陥りがちな罠について、あらためて考えてみます。
レポート:
台風だよ。
九州あたりでは雨風が凄い事になっているらしい。ここ東京も雨。お客さんの出控えもあってか、遊園地など臨時休園や途中閉園が相次いだってことは後で知ったのだが。
地下鉄アクセスなので、とりあえずノープロブレムでApple Store 銀座店へ。そこで見たものとは、大入りのオーディエンス。
常々2列目辺りに陣取るのに今回はムリだった。このヒト達ってどうなってるの?。
ことほど左様に「Fun Night!」はアツい。

第25回 FileMaker Fun Night! お題は...
[しっかり覚えるFileMaker]〜今さら人に聞けないスクリプト【フィールド設定編】〜
【特集:分離モデルの光と影(と罠)】
恒例Tips対決!
[FMスーパーテクニック]〜コンテンツ管理、画像管理の光と影(と救世主)〜



[しっかり覚えるFileMaker]〜今さら人に聞けないスクリプト【フィールド設定編】〜 <今泉さん> 

テキストや数字といった値をフィールドにセットするとき、どのスクリプトステップを使いますか?。
「テキストを挿入」「計算結果を挿入」あるいは状況次第では「コピー/貼り付け」でしょうか?
今回は、なかなか気付かないが実は最も使い勝手の良い「フィールド設定」スクリプトステップの紹介?です。
「テキストを挿入」「計算結果を挿入」「貼り付け」ともに、そのレイアウトに目的のフィールドが置かれていないと値が入りませんよね。でも「フィールド設定」ならフィールドが定義されていれば値をセットできるのです。これだけでも、明日から「フィールド設定」採用決定でしょう。しかしそれだけではない。テキスト・数値・日付・タイムスタンプ・計算結果・変数...と、およそあらゆる対象を扱えることに加えて、関連レコードの作成もできてしまいます。名前から働きを想像しにくいので、似たような働きの他のステップ(計算結果を挿入...とか)を使ってしまいがちですが、これからは断然「フィールド設定」ですよ〜。
「コピー/貼付け」のように、クリップボードの内容が変化して、後でギョッとすることもありませんしね。

ここでデモ。
目的のフィールドがレイアウトに配置されていなくても値をセットできるところなど、実演してくれました。強力なスクリプトステップですね。
関連レコードを作成させる場合のポイントは、フィールド指定のとき「テーブル名::フィールド名」という指定をすること、それからリレーション設定の際に「このリレーションシップを利用して、このテーブルでのレコード作成を許可」にチェックを付けておくことです。



【特集:分離モデルの光と影(と罠)】 <竹内さん>

分離モデルとは...
FileMakerの場合は「データ」と「その他の部分」を別々のファイルに置くこと(他のDBの場合は、そもそも分離されていることが多い)。

では、データとその他の部分とは...
FileMakerソリューションの構造を分解してみると、
・データ
・インタフェース
・リレーション等の構造
・スクリプトなど

こういった要素に分けられる。データと「それ以外」ってのがここで判りますな。
では、実際のファイルに投影してみると...

・データファイル
 データ格納の為のテーブルのみを持つ。
 ユーザの目に見える必要はなく、存在すら感じなくとも良い。

・インタフェースファイル
 レイアウト、スクリプトなど、データ以外のすべてを含む。
 使用時、ユーザはこのファイルに置かれた操作用のレイアウトを見て、入力やスクリプト実行といった処理を行う。

ここでデモ。
1ファイルだけで自己完結しているソリューションがある。このファイルを複製し、一方をデータ格納専用に、他方をインタフェース専用に仕立てて連携動作させる内容。
インタフェースファイル側からは全てのテーブルをばっさりと削除し、TOG(テーブルオカレンスグループ)的な全ての要素についてデータファイルのテーブルを参照するように組む。
すると、インタフェース側のレイアウトに参照されたデータが表示され、全くストレス無く入力できる。

こういうお試し方法には気づきませんでした。確かに、簡単に試してみることができるんですね。

師曰く、
分離モデルのメリットとは、
・データに影響を与えることなく、構造や機能の差し替えが可能になる。即ち、ソリューションを稼働させたまま、複製環境でインタフェースファイルに置かれている機能を追加・検証し、ファイル単位で本番環境のインタフェースファイルを差し替えればデータは一切影響を受けない。(改造中のデータ変化分をメンテしてやらなくても良い)
・利用者の目的や権限に応じて、異なるインタフェースファイルを使用するように設計する等で、同じデータを更に有効に活用できる。(Web公開などへの応用も)
・データファイルにインタフェースを持たないので、データファイルを自由に分割できる。
 ・マスタ系(静的データ)
 ・イベント系(更新系データ)
 ・バイナリ系(重たい画像など)
 このようにデータの性格別にファイルを分割すると更にメリットが生まれる。
 ・バックアップ周期の個別設定が可能になる。日頃動かないデータは月に1回でいいかも、とか。
 ・各ファイルの構造がシンプルになり、メンテや改造が容易になる。
 ・ファイル個別に、データの内容に応じたセキュリティ対策ができるようになる。

便利このうえない分離モデルですが、ことFileMakerの場合は機能が独特なぶんだけ制限もあるようです。
データファイルから削除できない要素を挙げてみると、
・計算式
・自動入力の設定
・ルックアップの設定
それから、これらの為のリレーション、すなわちデータベース定義も削除できません。

ここでもう一度デモ。
先のデモで使ったデータファイルから順にいろいろ削除していき、どうなるかを確かめる。

・レイアウト上でフィールドを消してみる。また、レイアウト自体を消してみる。→全く問題なく使える。(入力もインタフェースファイルから行うわけだし)
・TOGを消してみる→インタフェースファイル上からは、いきなり何も見えなくなる。(竹内注:データファイル側のTOGに依存する計算式を使った計算フィールドの値が見えなくなります)

データファイル側から削除できない構造部分を改造する場合は、改造中の稼働データの変化分を新しいデータファイルに反映する作業が必要になります。
データファイルを純粋にデータだけにすることは「不可能ではない」が、そのために構造が非常に複雑になってしまったり、極端に動作が遅くなってしまうなど「現実的ではない」とのことです。

分離モデルにありがちな「罠」と対策
・データとインタフェースの双方にそっくりなTOGが必要になるために開発者自身が混乱する。
 ポータルに必要なリレーションはインタフェース側に置き、計算式やルックアップに必要なリレーションはデータ側に置きましょう。
・異なるファイルでデータを扱うために権限関係が混乱する。
 例えば、スクリプトを「完全アクセス権で実行」したところでデータは別ファイルに置かれているので通用しない。
 対策としては、管理者権限を必要とせずに処理ができるようにアクセス権を工夫したり、スクリプトが進行してデータファイルに渡ったところで「再ログイン」で必要な権限を与え、スクリプト終了直前に元の権限に戻す、といった方法もあります。

他にも、こんなところにご注意を。
・値一覧のカスタム値は構造の一部なので、うっかり書き替えないように。
・ファイル参照の指定でフルパスを使うと、別環境で全く動かないソリューションができあがるので、書き方に注意。
 
開発者に異次元の便利さをもたらす「分離モデル」、限界と注意点をふまえてどんどん活用していきましょう。と結ばれたのでありました。
例えば私のレベルだと、難解な計算式に挑んだあげく、無意識のうちに中間フィールドなど作っている自分に気付く時がありますが、そういうお手軽発想は「分離モデル」を縁遠くする可能性がありますね。きちんとしたモノ作りを心がけて、計画的に開発しないと「分離モデル」は遠い存在かもしれません。頑張らねば。



恒例Tips対決!

・プレビューモードでのページ切替が、Control + ↑↓キーで可能であるというワザ <イトゥーさん/ジーネクスト>
 →但し、ステータスエリアがロックされていたり、カスタムメニューで「レコードへ移動」を無効にしている時を除く。

・レイアウトに置かれたフィールド名の一覧を得るワザ(但しデータベースデザインレポートではなく) <竹内さん>
 →レコードのエクスポートを指示し、現在のレイアウトをMerge形式で書き出すよう指定すればフィールド名も一緒に書き出される。

・カスタムメニューで「閉じる」を無効にしたファイルを閉じるワザ <茂田さん>
 →いったんレイアウトモードに切替えれば閉じる事ができる。
 
・変数にオブジェクトフィールドの値...すなわち画像などを入れるワザ <Shinさん>
 →ワザっていうか、要するに、そもそもできるっていうことなんですが。



[FMスーパーテクニック]〜コンテンツ管理、画像管理の光と影(と救世主)〜 <Shinさん>

V7以降、オブジェクトフィールドも上限が4GB(!)となり、殆どの外部ファイルを丸ごと格納できるようになりました。そうするとファイル管理をFileMakerで!、と多くの人達が考えたわけですが、課題もいろいろ。今回はFileMakerをコアとしてファイル管理環境を簡単に構築できるプラグイン(=救世主)のお話です。

外部ファイルをオブジェクトフィールドに抱える場合の問題とは...
・動作が遅い
・サーバに置くとダウンロードに時間がかかる
・DBが肥大化する

では、参照パスのみ保持する場合の問題とは...
・WindowsとMacでパス表記が異なる
・実体の置かれたネットワークボリュームをマウントする必要がある
・パスの取得にあたって、先にサーバ上の目的階層に対象ファイルを置く必要がある
・ファイルの削除も都度手作業になる

どっちにしろ、問題があるようです。
で、ここで「SuperContainer」という名の救世主が登場です。これは何でしょう。
サイトにはプラグインではないと書いてありますが...

・自動的に対象ファイルを目的階層に保持
・参照パスのみ保存なので軽い
・バックアップの自由度が高い(差分バックアップも可能!)
・動的なサムネール生成
・マルチスレッド表示
・バックグラウンドでの読み込み

なんだかスーパーマンです。では実際の動作はどんな感じなのかと言うと..
・webからダウンロードして使う
・デモ版ライセンスでRegistすればとりあえず使える
・インストール時。サーバ (SuperContainerServer) をダブルクリックするとすぐに稼働。サンプルを全て試すには、プラグインをセットする
・コンテンツの登録時、レコードIDを名前とするフォルダがサーバに生成され、そこにファイルが自動アップロードされる(サンプルの例)。
 自動生成されたサムネールが、同じく自動生成されたミラー階層に格納される

ということで、デモが行なわれました。
凄いですね。ウチの職場でもFMSにパスを保存しておいて、AppleScriptを併用したデータ格納・登録や検索・取り出しを行なっていますが、サムネールの自動生成は敷居が高いのでやってないし、マルチスレッド表示などは端っから諦めてます。
サーバが自動構築されるということで、設定の自由度はどうなのか、とか、FileMakerがV9になったらどうなるの...といった心配もあるでしょうが、デモ版を試す程度であれば、逆に仕事が増えてしまう事もないでしょう。大量データのハンドリングに悩むFM使いにとって朗報と思われます。
高価な市販パッケージ導入を検討する前に、試してみては如何でしょうか。

※サイトには、特にFileMaker Serverは無くても良いと書いてあります。webビューアの利用を前提にしているので、FileMakerはV8.5以降が必須になります。



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

問題:[アカウントとアクセス権]のアカウントの認証方法としての「外部のサーバ」について、説明として適切なものをすべて選択せよ。
 a. 別のマシンにインストールされているFileMaker Serverのことを言う
 b.他のネットワークのサブネットにあるFileMaker Serverのことを言う
 c. Directory Serviceによる外部の認証サーバのことを言う
 d. プロバイダが提供するホスティングサービスのサーバのことを言う

正解:「c」
今回は珍しく直球勝負。よって正解率は高め。すなわち竹内師は悔しそうでありました。


Reported by 金丸康明



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

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

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







影ですね…!




台風の中、ありがとうです。


飛び込み中

Tips対決中

Tips対決中






これが救世主のネタ!


今月のネラレンダーQuiz!

ほとんどの方が正解でした

たまみそさんのドレス姿♪

来場のみなさんのご感想:>> Topへ
男性「分離モデルの光と影」は、今後データベースソリューションを開発し、ユーザーに使ってもらうときに、非常に役立つ発表でした。
また、Super Containerも今後のソリューションに付加して使えそうなツールで、ご紹介ありがとうございました。今後のイベントでは、XMLやXSLT、SQL DBとの接続などの話題も取り上げていただけるとありがたいです。Super Containerもっとみたいです。
たいへんおもしろい講演でした。
男性・スクリプトの実演の手際が悪い。文字が読めなかった
・Tipsは興味持てなかった。
・コンテンツ管理は全くどうでも良かった(小規模オフィスでは有用かも)
・時間は守ってほしい
男性分離モデルは今まで使ったことがなかったので大変参考になりました。ありがとうございました。
男性"7"で参加したいとチェックしたものの...、長崎在住です。上京の際はFun Nightやってるといいな...
女性画像のデータベースについて悩んでいたので、大変役に立ちました。スーパーコンテナについて、ぜひおねがいします。
WebのQ&Aで答えていただいてありがとうございました。(たぶんShinさん?)
これからもヨロシクおねがいします。
男性Super Container 興味深いです。
男性まさしく、現在のものを出来るだけ分離型にしていきたいと考えているところでした。大変参考になりました。というか楽しみにしていました。Super Container期待しています。
男性さっそくFMP9の機能を教えて下さい。関数は増えましたか?Tipsはシゲタ氏に一票です。
男性Advanced ServerのWeb公開機能を使用しているので、ver9がでたら取り上げてほしい。PHP機能追加が特に気になる。
男性Super Containerの解説はおもしろかったです。次回はFM9の話など期待しています。
男性・変数にオブジェクトが使えるTips最高です!Shinさんサイコーです。
・分離モデルを現在作っているところでしたので、注意点が聞けて、とてもうれしかったです。
男性Tips. 1.ニナガワさん、2.タケウチさん、3.イトウさん、4.シゲタさん
スーパーコンテナの話もっと聞きたいです。
男性ちょうどデータとインターフェイスを分けようと考えていたところだったので、分離モデルの話はとても参考になりました。
Tips対決はニナガワさんに1票。
女性今日は少し遅刻してしまったのでMiyuさんのはじめの方みのがしてしまいました。残念。。。SuperContainerのお話はもっと聞きたいです。Tips対決は茂田さんのがおどろき。おもしろかったです。
男性いつも以上に駆け足だったので、お腹いっぱいです。分離モデルにトライしようと思いました。Tips対決、今泉さんあんまりでないんですね。今回はshinさんが良かったです。
スーパーコンテナ良かったです。同じことを悩んでたので参考になりました。
男性・アクセス(マイクロソフト)と競合したときの弱点(苦手)対策
Tips shinさま
男性にながわさんのTipsが超coolでした!
女性分離モデル〜〜!きちっと分けるとスッキリしそうですが、まだ少し早いかもとも思ったり。今はごちゃごちゃしてるので、少しでも整理したいです。(結構、切実な悩みです)
Tipsは、どなたも甲乙つけがたいです。お勉強になります。いつも....
男性shinさんに1票!
分離モデル、わかっちゃいるけど、出来なかった。また、チャレンジします!
男性分離モデルの話は、自分が経験上感じてたことの再確認となって非常によかったです。特に罠の部分のお話は。
女性「分離モデル」について、今一つ良く理解できていなかったのですが、今日のお話は分かり易くて、とても良かったです。今手がけているソリューションに活かしてゆきたいと思います。
Tips対決は、竹内さんに一票!
男性・イトゥーさんのTipsがよかったです。

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