1. 画面ができたら、次は「動き」を作る
「部品マスタ」と「部品台帳」。2つの主要なレイアウト(画面)が完成しました。 しかし、ただ枠があるだけではシステムとは呼べません。ここで必要になるのが、FileMakerにおけるプログラミング、すなわち**「スクリプト(Script)」**による自動化です。
人間が行うと手間がかかり、ミスも起きやすい作業をボタン一つで実行させる。これにより、誰が操作しても安全で正確な結果が得られるようになります。 今回実装するのは、**「部品マスタを登録したら、ボタン一つで自動的に管理台帳も作成する」**という機能です。
2. UIの工夫:ボタンが出たり消えたり?
スクリプトを書く前に、まずはユーザーインターフェース(UI)に少し工夫を凝らしました。 すでに台帳が作られているのに、もう一度「作成ボタン」を押してしまってはデータが重複してしまいます。そこで、以下のロジックを組み込みました。
- 判定用の計算式: 部品マスタに「台帳作成済」というフィールドを用意し、台帳が存在するかどうかを自動判定させる。
- 条件付き書式(隠す): 「台帳作成」ボタンに対し、**「もし台帳作成済なら、このボタンを表示しない(隠す)」**という設定を行う。
これにより、ユーザーは「必要な時だけボタンが見える」状態になり、誤操作を未然に防ぐことができます。
3. 初心者がハマる罠:「文脈(コンテキスト)」の壁
さて、いよいよ本題の「台帳自動作成スクリプト」の記述です。 意気揚々と書き始めたものの、早速壁にぶつかりました。
「マスタ画面でスクリプトを動かしても、台帳画面の操作ができない……?」
FileMakerのスクリプトは、基本的に「今開いているレイアウト(文脈)」の上で動作します。 「マスタ画面」にいる状態で、「台帳テーブルに新規レコードを作れ」と命令しても、システム側は「いや、今マスタを開いてるんですけど?」となってしまい、処理が途切れてしまうのです。
4. 解決の鍵は「変数」という名のバトン
試行錯誤とリサーチの結果、たどり着いた正解は**「スクリプトからスクリプトを呼び出す」という方法と、「変数(Variable)」**の活用でした。
手順はこうです。
- 変数に格納(マスタ側): 今開いている部品のユニークIDを、一時的な箱(変数
$ID)にコピーする。数学でいうx = 5のように、$ID = 5100005と定義するイメージです。 - スクリプト実行(台帳側へ): マスタ側のスクリプトから、台帳側のスクリプトを呼び出す。
- 変数の受け取り(台帳側): 台帳側のレイアウトに移動し、新規レコードを作成。そしてIDフィールドに、さきほど箱に入れた
$IDの中身を流し込む。
つまり、「変数」というバトンを持って、「スクリプト実行」というリレーを行うことで、異なるテーブル間でも情報を正確に渡せるようになったのです。
5. 「コロンブスの卵」的気づき
「答えを聞けば当たり前、でも自力で見つけるのは困難」。 プログラミングやシステム開発には、こういう瞬間が多々あります。 「IDを変数に入れて渡す」。文字にすればたった1行の処理ですが、この仕組みを理解し実装できた時、システム開発者としてまた一つ階段を登ったような感覚がありました。
これで、マスタ登録から台帳作成までがシームレスに繋がりました。 リレーションシップによって、台帳側にも自動的に図番や品名が表示されています。 「動くシステム」としての骨格がいよいよ固まってきました。
(続く)
【編集協力】 このプロジェクト記録の文章表現は、Gemini(Google AI)による構成案の作成および校正支援を受けています。