ローカル変数とグローバル変数使い分け入門
基礎知識

ローカル変数とグローバル変数使い分け入門

2026年3月9日 admin 基礎知識

ローカル変数とグローバル変数、何が違うの?

FileMakerを使っていると、スクリプトの中で「$ローカル変数」や「$$グローバル変数」という表記をよく目にします。「なんとなく使っているけど、違いがよく分からない」「とりあえず全部グローバルにしている」という方も多いのではないでしょうか。

ローカル変数とグローバル変数は、データを一時的に記憶しておくという点では同じですが、「いつまで」「どこから」参照できるのかが大きく違います。この違いを理解しておくと、スクリプトが分かりやすくなり、予期せぬ動作も減らせます。

この記事では、専門用語はできるだけ避けながら、ローカル変数とグローバル変数の基本的な使い分けと、実際の操作方法を分かりやすく解説します。

ローカル変数とは?:その場限りのメモ帳

ローカル変数(表記は $変数名 )は、「そのスクリプトの中だけで有効なメモ」と考えると分かりやすいです。

  • 使える範囲:変数をセットした「スクリプト」と、その中から呼び出した「サブスクリプト」まで
  • 消えるタイミング:呼び出し元も含めて、そのスクリプト(サブスクリプトを含む一連の処理)が終わった時点で自動的に消える
  • 代表的な用途:その場で計算した値の一時保存、ループ内でのカウンターなど

ローカル変数の特徴は、「スクリプトが終われば必ず消える」ことです。後に影響を残さないため、安心して使える一時メモとして考えると良いでしょう。

グローバル変数とは?:ウインドウをまたぐ長期メモ

グローバル変数(表記は $$変数名 )は、「FileMakerを開いている間じゅう有効なメモ」です。

  • 使える範囲:同じファイル内のほぼすべてのスクリプト・レイアウト・ウインドウから参照できる
  • 消えるタイミング:FileMakerを終了した時(もしくは明示的にクリアした時)
  • 代表的な用途:ログインユーザー情報、画面間で共有したい検索条件、設定値の一時保存など

グローバル変数の大きな利点は、「どこからでも読める」ことですが、その分、思わぬ場所で値が書き換わってしまうリスクもあります。使いどころを絞ることが大切です。

基本の使い分けの考え方

難しく考えず、次のような基準で判断すると迷いにくくなります。

  • この処理スクリプトの中だけで完結する値か?
    → はい:ローカル変数($) を使う
  • 別のスクリプトや画面でも同じ値を使いたいか?
    → はい:グローバル変数($$) を検討する

イメージとしては、次のように覚えると便利です。

  • ローカル変数:スクリプト専用の付せんメモ
  • グローバル変数:システム全体で共有するホワイトボード

付せんメモはその用事が終わったら捨てますが、ホワイトボードはしばらく残ります。この違いが、そのまま変数の性質の違いになっています。

ローカル変数の具体的な使い方

ローカル変数は、基本的に「スクリプトステップ:変数を設定」で使います。

  1. スクリプトワークスペースを開き、スクリプトを作成または編集
  2. 左側から「変数を設定」ステップを追加
  3. 「指定…」ボタンをクリックし、変数名に $UserName のように入力
  4. 計算式に Get ( アカウント名 ) などを指定して保存

こうして作成した $UserName は、そのスクリプトと、そこから呼び出したサブスクリプトの中で自由に参照できます。

たとえば、次のような場面で便利です。

  • 複雑な計算結果を一度変数に入れて、何度も使い回したいとき
  • レコードのフィールド値を一時的に覚えておき、戻したいとき
  • ループ処理で「今、何回目か」をカウントしたいとき

ローカル変数は、使い終わった後に「消す」処理は不要です。スクリプト終了と同時に自動的にクリアされます。

グローバル変数の具体的な使い方

グローバル変数も、基本操作はローカル変数と同じです。ただし、変数名の先頭を「$$」にします。

  1. スクリプトワークスペースで「変数を設定」ステップを追加
  2. 変数名に $$LoginUserID のように入力
  3. 計算式に、ユーザーIDや権限を求める式を指定

こうして設定したグローバル変数は、同じファイル内の別のスクリプトからも参照できます。

例えば、ログイン時のスクリプトで次のように設定しておけば:

  • $$LoginUserName:ログインしている人の名前
  • $$LoginUserRole:権限や役割

その後の画面表示やボタン表示の判断に、これらの変数を使うことができます。また、画面Aで入力した検索条件をグローバル変数に入れておき、画面Bでも同じ条件で絞り込みたいといった場合にも役立ちます。

グローバル変数を使うときの注意点

便利なグローバル変数ですが、いくつか注意点があります。

  • どこでセットされ、どこで変更されるかを把握しておく
    同じ名前のグローバル変数を複数のスクリプトで書き換えると、思わぬ値になることがあります。
  • 不要になったらクリアする習慣をつける
    終了時やログアウト時のスクリプトで、変数を設定 ステップを使って空文字にするなど、片付けを行うと安全です。
  • 名前を分かりやすくする
    何のための変数か分かるような名前を付けることで、後々のトラブルを防ぎやすくなります。例:$$gUserRole$$gSearchKeyword など

迷ったときのシンプルな指針

最後に、実務で迷ったときのシンプルな指針をまとめます。

  • まずはローカル変数を使う
    多くの処理はスクリプト内で完結するので、基本はローカル変数で十分です。
  • 画面やスクリプト間で「共有したい情報」が出てきたときだけグローバル変数を検討
  • グローバル変数の数は、できるだけ少なく保つ
    「本当にシステム全体で共有すべき情報か?」を意識して使うと、管理しやすくなります。

ローカル変数とグローバル変数をきちんと使い分けることで、スクリプトの見通しが良くなり、エラーの原因も追いやすくなります。最初は意識的に使い分ける必要がありますが、慣れてくると自然に選べるようになりますので、ぜひ日々の開発で意識してみてください。

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