2008/02/20
『FileMaker TechNet会員のためのスキルアップ・ワークショップ』レポート
「ソリューション作成の最初の壁。"リレーションシップ"を乗り越えよう」

ユーザが求めている専門知識は、新しくなった"リレーションシップ"や"リレーションシップグラフ"

ワークショップ風景

FileMaker Pro は、FileMaker Pro 7 でアーキテクチャの大幅な変更が実施され、FileMaker ソリューションの作成者は、ファイルメーカーPro 6 以前に比べ、ファイルの構成やリレーションの考え方など、様々な点で見方や手法を変える必要に迫られました。そこで、今回は『ソリューション作成の最初の壁。"リレーションシップ" を乗り越えよう』をテーマにワークショップを開催しました。FileMaker Pro 7 以降の新しいアーキテクチャでは1 つのデータベースファイルに複数のテーブルを内包できるようになり、そのためリレーションの張り方や考え方が一新されました。ファイルメーカーPro 6 以前からのユーザも、FileMaker Pro 7 からのユーザも、理解するのに苦労する最初の壁がこの"リレーション" ではないでしょうか。

例として"見積書"のデータベースを使用し、リレーションシップへの理解を深める

ここからは、ワークショップをわかりやすく進めるために用意したファイルを使って進めました。"リレーションという要素を盛り込んだレイアウトを作成"しながら、新しいアーキテクチャにおけるリレーションシップの作成工程を、参加者の皆さんと考えていくということにポイントを置きました。具体例として提示したのが "見積書" です。見積書には、見積番号の発番から始まり、明細、それにつながる商品、発行する部署と担当者、それらの選択の仕方など、リレーションにまつわる様々な要素がちりばめられています。これらの個々の要素をひもとくことで、参加者のリレーションシップのへ理解を一歩進めることができるのではないかと考えました。

例

まず、参加者から必要なテーブル構成を挙げてもらい、つなぐべき要素をその場で作成していきました。得意先マスタ、商品マスタなど想定されるテーブルが挙ってきました。同時に、開発されている方々が使用している用語についても、意見や議論がわかりやすい様に共通化しました。(例えば、"テーブル" "テーブル・オカレンス" "テーブル・オカレンス・グループ" の違いを簡単に説明し、使い分けることにより技術的な質問や意見が、明確になりました)このように構成要素が列挙されていく中で興味深かったのが、ある参加者から挙げられた"価格マスタ"です。価格の情報を"商品マスタ"から切り出して、別テーブルに持たせるという発想です。この発想にピンとくる方とそうでない方に、参加者の反応が分かれました。

テーブル構成の設計と注意点とは?

"商品販売"における"価格"という項目は、"商品マスタ"のテーブルに定義され、商品ごとにメンテナンスをおこなうことがシンプルな考え方であると思います。ただし、1つの商品に複数の価格情報を持つような場合、例えば顧客ごとに売価が違う場合や、旅行企画などの商品のように繁忙期・閑散期といった期間で価格が違う場合などは、いわゆる"価格台帳"というものが別テーブルで必要になってくる場合があります。また、"商品マスタ"に価格情報が内包されている場合、価格を変更した直後からその価格が反映されることになり、変更してよいタイミングまでは変更作業ができないことになります。例えば、量販店などの大量の商品を管理している場合などで、ある日からバーゲンセールのため大変多くの価格を変更しなければならないケースを想像してみてください。バーゲンの前日、その日の締め処理を終えた瞬間から翌日の開店の時間迄に、大量のマスタをメンテナンスすることになりますし、バーゲン終了後、同様のことを短時間でおこなわなくてはならなくなります。ところが"価格情報"を"価格台帳"として別テーブルにして、そこに"適用開始日"、"適用終了日"の項目を持たせリレーションを組むことにより、"今現時点での価格"が設定した期間によって引き当てられ、前日と言わず、もっと余裕をもって価格情報のメンテナンスをおこなうことができるようになり、寝不足による入力ミスというものも少なくなるというものです。

少し余談になりましたが、このような"テーブル構成の設計と注意点""といったテーマで、ワークショップを開催しても面白いと思いました。

引き続き必要なテーブルを挙げていただき、その中のフィールド定義を同時に行っていきました。フィールドの定義をしている間にも、"商品単価"という項目を"明細テーブル"にも作成しデータを持つのが良いのか、もしくはマスタのデータを参照するだけで良いのか、もし参照形式の場合はどんな問題点があるかなど、後述のような補足を参加者の方々からいただきました。

「"見積明細"に価格情報を保持せず商品マスタからの参照にすると、商品マスタの価格を変更した瞬間に、該当の商品を含む過去の見積の金額(既に提出済みのものも含む)が、全て変わってしまう」、「"消費税"など、変わる可能性のあるものなどは、その時点での記録として"ルックアップ"などの設定がなされたフィールドを定義しておくべき」など、初心者が引っかかってしまいがちな部分を指摘した発言でした。

"動的値一覧"の実現

リレーションの部、終盤戦では"動的値一覧"を取り上げました。見積書で、担当"部署"を選ぶと、選んだ部署名により"担当者"の値一覧の内容が動的に変化する、というものです。ここでも同様に、参加者の方からリレーションシップグラフ上における、必要なテーブル・オカレンスやリレーションシップの設定、作成する値一覧の設定内容を発言してもらいました。

「"見積書"のテーブルオカレンスの"部署コード" と"社員マスタ"の"所属コード"を結ぶ。」、「"値一覧"の定義で、使用したいデータが入っているテーブルオカレンスを指定する。」、「"次のテーブルから関連レコードの値のみ含める"チェックボックスを入れて、値一覧が絞り込まれるためのキーが入力されるテーブルを指定する(ここでは"見積書")。」という手順が発言されました。

今回サンプルとして提示したものは"見積書"という一つのレイアウトのみでしたので、この"動的値一覧"を実現するにあたっても、その値一覧を使用するレイアウトに割り当てられた"テーブル・オカレンス"と直接リレーションを張る形態が提案されました。

画面1
"動的値一覧"に必要なテーブルオカレンスとリレーションシップ

画面2
"値一覧"を作成する際の各項目の設定内容

結果
"部署"の値を切り替えることにより、" 担当者" の選択肢が変動する

また、「このリレーションシップで作った値一覧は、他のレイアウト(テーブルオカレンス)でも利用可能か?」との発言もありました。

"動的値一覧"に関してはリレーションシップを活用するものの、必ずしもその値一覧を使用するレイアウトに割り当てられた"テーブル・オカレンス"との間に関連付けが必要というわけではありません。今回は提示した仕様や時間の都合上、この部分への案の提示や取りまとめができませんでしたが、引き続き別の機会に議論していきたいと考えています。

今回のワークショップを終えて

ワークショップ風景2

さて、今回"リレーション"という大きなテーマでワークショップを行ってみましたが、テーマがFileMakerにおける根幹部分であるだけに、時間的にも内容的にも継続的に行っていかなければならないと感じました。またテーマとして大きく掲げた中で、各セッションをもう少し細分化し、論点をフォーカスすることで密度の濃いワークショップが実施していけるのではとも感じました。FileMaker Technical Networkのメンバーとともにおこなうワークショップが、参加者同士が情報交換をしながらスリルアップでき、かつ様々な発想が生まれる場にしていくために、継続的な開催をしていきたいと思います。

Claris Community(旧FileMaker TechNet) の詳細は、こちら

▲ このページのトップへ