レイアウトでマージ変数の動的ヘッダー実装術
レイアウト

レイアウトでマージ変数の動的ヘッダー実装術

2026年6月4日 admin レイアウト

レイアウトのヘッダーを「レイアウトごとに固定のタイトル」で終わらせていませんか?
FileMaker では、マージ変数を使うことで「開いているデータ」や「ユーザーの操作」に合わせて、ヘッダーの文字を動的に変えることができます。
ただ、マージ変数は少しとっつきにくく、「どこで設定するの?」「何を表示できるの?」と迷いやすいポイントでもあります。

この記事では、専門用語をできるだけ避けながら、マージ変数を使ってヘッダーを動的に切り替える基本的な考え方と手順を解説します。

マージ変数の「動的ヘッダー」とは何か

まず「マージ変数」とは、スクリプトや計算で中身を書き換えられる箱のようなものです。
「$$currentHeader」という箱に「今月の売上レポート」という文字を入れておけば、レイアウト上で <<$$currentHeader>> と書いた部分に、その文字が自動で表示されます。

この仕組みをヘッダーに使うと、例えば次のようなことが簡単にできます。

  • 顧客一覧レイアウト:選択した担当者名をヘッダーに表示(例:「担当者:田中の顧客一覧」)
  • 売上レポートレイアウト:表示期間をヘッダーに埋め込む(例:「売上レポート(2024年1月~3月)」)
  • 検索結果画面:検索条件をヘッダーに出す(例:「検索結果:東京・法人顧客」)

ポイントは、「ヘッダーに何を書くか」をレイアウトではなくスクリプト側で自由に決められることです。

マージ変数を使う前の準備:変数の考え方

マージ変数の前に、まず「変数」そのものを簡単に整理しておきます。

  • $変数:スクリプト内だけで使う一時的な箱
  • $$グローバル変数:ファイル全体で共有される箱(レイアウトでも表示できる)

ヘッダーに表示したいのは「レイアウトから見える」情報なので、$$で始まるグローバル変数を使います。
例:$$HeaderTitle$$SearchSummary など、後で見て意味がわかる名前にしておくのがおすすめです。

基本の流れ:動的ヘッダー実装の3ステップ

マージ変数でヘッダーを動かす流れは、とてもシンプルです。

  1. スクリプトでグローバル変数($$~)に文字を入れる
  2. レイアウトのヘッダーに、マージ変数として配置する
  3. 必要なタイミングでスクリプトを実行する(レイアウト切り替え時など)

この「箱に入れる → レイアウトで表示する → タイミングを決める」の3点を押さえておくと、応用もしやすくなります。

ステップ1:スクリプトでグローバル変数に文字を入れる

まずは、ヘッダーに表示したい文言をグローバル変数にセットします。
FileMaker のスクリプトワークスペースで、新しいスクリプトを作成し、以下のような手順を組みます。

Set Variable [ $$HeaderTitle ; 
  Value: 
    "売上レポート(" & 
    Year ( $$StartDate ) & "年" & Month ( $$StartDate ) & "月 ~ " &
    Year ( $$EndDate ) & "年" & Month ( $$EndDate ) & "月" & ")"
]

ここでは少し計算式を使っていますが、単純に文字列を入れるだけでもOKです。

Set Variable [ $$HeaderTitle ;
  Value: "顧客一覧(全件表示)"
]

慣れないうちは、まず上のような固定文字列で試してみて、きちんとヘッダーに表示されることを確認すると理解しやすいです。

ステップ2:レイアウトでマージ変数をヘッダーに配置

次に、レイアウトモードでヘッダー部分を編集します。

  1. 対象のレイアウトをレイアウトモードで開く
  2. ヘッダーパートをクリックして選択
  3. テキストツールを選び、ヘッダーの表示位置をドラッグしてテキスト枠を作る
  4. 枠の中に <<$$HeaderTitle>> と入力する

入力する際の注意点は次の2つです。

  • <<>> を必ず両方つける(付け忘れるとただの文字列になります)
  • 変数名(ここでは $$HeaderTitle)はスクリプトで設定した名前と完全に同じにする

レイアウトモードでは <<$$HeaderTitle>> と表示されますが、
ブラウズモードに切り替え、スクリプトで変数をセットしてから画面を見ると、実際の文字に置き換わって表示されるようになります。

ステップ3:ヘッダーを更新するタイミングを決める

マージ変数は「中身を変えない限り、前の値が残り続ける」という性質があります。
そのため、いつ値を更新するかを決めておくことが重要です。

よく使うタイミングは次のようなものです。

  • レイアウト切り替え時:レイアウトごとに違うヘッダーにする
  • 検索実行後:検索条件をヘッダーに反映する
  • 日付や担当者などの条件を変更した直後

例えば、レイアウト切り替え時にヘッダーを更新したい場合は、

  1. レイアウトに対して「レイアウトスクリプトトリガ」を設定する
  2. 「レイアウト切り替え後(OnLayoutEnter)」に、ヘッダー更新用スクリプトを指定する

こうしておくと、そのレイアウトに入るたびに、自動的にヘッダーの文言が更新されるようになります。

よくあるつまずきポイントと対処法

マージ変数の動的ヘッダーでよくあるトラブルと、そのチェックポイントをいくつか挙げておきます。

  • 何も表示されない
    • 変数名が間違っていないか($$HeaderTitle$$headerTitle は別物)
    • グローバル変数($$)ではなく、ローカル変数($)を使っていないか
    • スクリプトが実行されているか(デバッグやダイアログで確認)
  • 前の画面のヘッダーが残る
    • レイアウトごとに値を更新しているか
    • 不要なときに空文字で上書きしているか(例:Set Variable [ $$HeaderTitle ; Value: "" ]
  • 想定と違う文言が表示される
    • どのスクリプトがいつ変数を書き換えているかを整理する
    • 一時的に Show Custom Dialog で変数の中身を確認する

応用例:検索条件をヘッダーに表示する

少し応用として、「検索条件をヘッダーに表示する」イメージを紹介します。

  1. ユーザーが検索条件を入力するレイアウト(例:日付範囲や地域)を用意する
  2. 検索実行ボタンのスクリプトで、条件に応じてヘッダー用の文字列を作る
  3. Set Variable [ $$HeaderTitle ; Value: 作成した文字列 ] でセット
  4. 検索結果を表示するレイアウトのヘッダーに <<$$HeaderTitle>> を配置

これだけで、「検索結果:2024年4月 東京エリア」のように、ユーザーの操作に合わせてヘッダーが変化する画面が作れます。
検索条件が複雑なシステムほど、ユーザーにとって親切な画面になります。

まとめ:マージ変数で「伝わるヘッダー」を作る

マージ変数を使った動的ヘッダーは、

  • 今見ている画面が「何を表しているのか」を、ユーザーに明確に伝えられる
  • レイアウトを量産せずに、1つのレイアウトを柔軟に使い回せる
  • 検索条件や期間などの「文脈」を常に表示できる

といったメリットがあります。

まずはシンプルなケースから、

  • $$HeaderTitle に固定の文字列をセット
  • レイアウトのヘッダーに <<$$HeaderTitle>> を配置
  • レイアウト表示時にスクリプトトリガで更新

という流れを試してみてください。
慣れてきたら、検索条件や日付範囲、ログインユーザー名なども組み合わせて、より「伝わるヘッダー」に育てていくことができます。

※ 本稿は、生成AIを使用して執筆しています。重要な内容については、必ずご自身でマニュアル等をご確認ください。