事前検証の検証要件には記載していませんでしたが、FileMakerで業務システムを開発する際に重要な項目として「命名規則」があります。
これを最初に決め、それに従って開発に入らないとオブジェクト(TO、リレーション、レイアウト、スクリプトなど)が増えるにつれて、混乱してしまいます。FileMakerに限らず、他の開発ツールを用いた場合も同様です。
検証要件に定義した「4.2.個別画面と共通画面の棲み分け」にも関係します。
1.プログラム名(プログラムID)
FileMakerでのプログラムとはどのようなものか検証してみます。
①TO(テーブルオカレンス)
・FileMakerでは実際のデータが格納されている実テーブルを直接操作することはできません。
実テーブルを操作する場合、必ず実テーブルの仮想表(?)として作成したTOで行います。
・TOは一つの実テーブルに対し、複数作成することができます。
・テーブルのリレーションはTOで行います。
・TOはレイアウトに設定し、データを操作します。
☞ 仮想表というと、OracleなどRDBMSではView表がイメージされますが全く異なるものです。
複数のテーブルを結合(リレーション)しView表を作成し、条件を指定して目的のレコードを取り出すことは似ていますが、普通RDBMSなどではView表に対しての更新は制約があるため行いません。また結合(リレーション)についても仕様が異なります。
TOとは、実テーブルを投影し、分身として生成された実データを持たない仮想テーブルと言えます。
②リレーション
・目的とするプログラム単位に作成したTOを、関連付けします。
FileMakerはレイアウトにTOを指定します。
・作成するレイアウトの目的に合った形のリレーションを作成し、レイアウトに指定します。
☞ RDBMSを用いたFileMaker以外での開発の場合、View表以外については都度、SQL文にて実表を結合し目的の処理を行います。
リレーションとは、個々のレイアウトの目的毎に作成したTOを、関連付けしたデータモデルと言えます。
③レイアウト
・画面、帳票などのデザインおよび機能を設定します。
・TOを指定し、対象のテーブルを操作します。 注)リレーションされたTO
・ボタン等に、処理を自動化するスクリプトを指定します。
☞ FileMakerで、一般的なプログラム単位に相当するものです。
TO、リレーション、スクリプトなど、直接レイアウト内部に記述はしませんが、それらは個々のプログラムの目的によって、個々に作成されるものです。
以前の記事「会社の業務をシステム化することについて」にプログラム一覧表を整理することを書きましたが、このプログラム一覧表のプログラム名にFileMakerでは、レイアウト名を書くことになると思います。
レイアウトとは、一般的なプログラム単位に相当するもので、データ操作を行うために必須のものです。
④スクリプト
・処理を自動化するための手続きを記述します。
・スクリプトを起動する基はレイアウトですが、スクリプトから別のスクリプトを実行できます。
・スクリプトを実行する時に、引数(実行の際、制御を決定する値など)を渡すことができます。
・スクリプトの実行結果を受け取ることができます。
☞ レイアウトの個々のイベントに対し、ユーザーが定義した手続きを実行するため、イベントドリブン型のプログラムとも言えそうです。(スクリプトトリガーに限定せず)
スクリプトから別のスクリプトを実行できるため、共通化したスクリプトを作成することもできそうです。
RDBMSを用いた場合、入力画面などでの制御・エラー処理などは例えばVB.Netで記述し、テーブルに入力した情報を更新する場合は、Oracleではサーバープロセスとして記述するための言語であるPL/SQLで作成し、それらを呼び出します。
FileMakerの場合は、入力画面での制御は通常のスクリプトで実行し、テーブル更新などはサーバーサイドスクリプトとして実行すれば良いと思います。
スクリプトとは、処理を自動化および制御するためにユーザーが記述するプログラムです。
⑤グローバル格納
以下、FileMakerヘルプより
・グローバル格納を使用するフィールドには、全てのレコードで共有される1つの値のみが格納される。
注)テーブル単位で、全てのレコードのグローバルフィールドに同じ値がセットされる。
・グローバルフィールドは、スクリプトの使用時など、値の一時的な格納としても使うことができる。
・グローバルフィールドは、個々のクライアント毎に管理される。(アカウント毎ではない。)
・グローバルフィールドに設定した値は、クライアントのセッションの間だけ維持される。
・クライアントがファイルを閉じて再度開いた場合、全てのグローバルフィールドは初期値にリセットされる。
・初期値はファイルが最後にローカルコンピュータで FileMaker Pro によって閉じられたときに使用されていた値となる。
☞ 最初、Oracleの一時表を思い浮かべましたが、全く異なるものです。
通常のテーブル内に、グローバルフィールドを設ける意味が中々理解できませんが、用途として以下が挙げられます。
ア. 通常のTOでのリレーションだけでは構成できない結合
例)最初のselectした結果を、条件(副問合せ)として次の問合せに用いる場合
条件(副問合せ)が複数、入れ子となっている状態
・下線の情報をテーブル作成し、全てのフィールドをグローバル格納として設定します。
・リレーションに上記のTOを設定します。
<運用イメージ>
・最初のリレーションにより、レイアウトに該当レコードが明細として表示される。
・ユーザーがそれらより、一つの明細を指定する。
・指定された明細の値を取得し、グローバル格納として設定したTOにレコードを追加する。
・上記のTOとリレーションしている結果が、レイアウトに明細として表示される。
・(ユーザーがそれらより、一つの明細を指定する。)
イ. 検索画面での検索項目の一時的な保管
検索画面のレイアウトを作成する場合、入力した検索条件(パラメータ)を一時的に保管するテーブルとして利用することができます。
グローバル格納とは、FileMakerにログインした各ユーザー毎に、テーブル単位で一時的な値を設定し利用することができる機能と言えます。
次回は、これらのオブジェクトに対しての命名規則を紹介したいと思います。
以上です。