【中級以上向け】スクールでは教えてくれない、かゆい所に手が届くシリーズ:「FileMaker(ファイルメーカー)のグローバルフィールドの特徴と使い方」
この記事の内容はFileMaker制作が未経験~おおむね2年未満の方向けになります(*´▽`*)
馴れた頃に現れる難敵
ファイルメーカーに馴れてくると、新たな難敵がちらほら現れてきます。
そのうちの一つに「グローバルフィールド」があるのではないでしょうか。
会社の先輩から「グローバルフィールドを作ってリレーション組めばいいじゃん」なんてことを言われて、「は???グローバル???」みたいなことはありますか?
あるいは、ネットで解決方法を探っていたとき誰かの書き込みで「グローバルフィールド」というのを見たけど意味が分からず断念したことはありますか?
このグローバルフィールドという概念?機能?はエクセルには無いと思います。
恐らくAccessにも無かったような?あるのかな?まあFileMaker特有の機能といってもいいのではと思っています。
ということで、今回はグローバルフィールドについて書いてみます。
広告
グローバルフィールドの設定
まずはグローバルフィールドの設定方法です。
フィールドのオプションの、「データの格納」タブにある「グローバル格納」にチェックを入れるだけです。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcfEzCc911rhKjiFaieq2XV2XiJS6s-v5YpHkNYTGwVnldIcm1XaspGKXBaVHg1iJdq7cBUwYkBuyZbGj13n1ztU2jEbTb1ZVc3fK3GtZnormajinLaz0SymShYaITqfBOuLvsm0ZUrec/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258901.png)
チェックを入れるところにある説明にはこのように書かれています。
「グローバル格納を使用するフィールドには、すべてのレコードで共有される1つの値のみが格納されます。グローバルフィールドは、スクリプトの使用時など、値の一時的な格納としても使うことができます。」
「はぁ???1つの値のみ???」「値の一時的な格納???」
まあ、とりあえずグローバル格納にチェックを入れてOKしておきましょう。
これで、「g_グローバルテスト」フィールドは晴れて「グローバルフィールド」になりました。
ちなみに頭の「g_」は、グローバルフィールドですよとパッと見でわかるようにするためです。
この辺は人によってルールが違ったりしますが、ルールを決めて統一しておくと良いと思います。(特にチームで開発する場合は重要です)
このグローバルフィールドには、蓄積されているデータとは関係なく、好きなものを入れておくことができます。
例えば、「"おおたに"という情報を、レコードにはまだ格納しなくてもいいんだけど、とりあえず保持だけしておきたいな」というときに、g_グローバルテストに入れておくことができます。
実際に入れてみましょう。
ヘッダーにg_グローバルテストを配置します。
「おおたに」と入れます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU5QDJOJfWaBQukuZ8sk8gkdi3wK941r1jXxK6foAnSSW9IZO7BBvXAbk9rjsY-8bhVL_CXQPWAbOGaqgluQM2EZp_LGOl7ckhbzYby_g8lZJIfUld8JGG0977G7KZl23bURdtszZ_mjE/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258902.png)
グローバルフィールドにデータを入れたところで、レコードが追加されたり他のフィールドが書き換えられたりすることはありません。(入力値の自動化を使っていない前提)
そして例えば、新たにレコードを1件作成して、g_グローバルテストの「おおたに」をコピーして、レコードの「なまえ」フィールドに貼り付けることができます。当然です。
もう値を使わないと思ったらg_グローバルテストの「おおたに」はクリア(削除)してフィールドをカラにすることが出来ます。
カラにしてもレコードが削除されることはありませんし、もちろん他のフィールドの値が削除されることもありません。
g_グローバルテストの中身だけがカラになります。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8CoKm2KWGm_8Wo6nmNbGf0pKuZxlFaRMz9S-GebKpl2hjFcTNEOjL5ZhlmbYSpqz01cyRew6JskRq5ypGFgikfLwIoOhySUSzJH1UpWdi6rqzYUS3Zjq8RtCagaoCVfIYHONNGmdVyE8/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258903.png)
誤解を恐れず言ってみれば、一時的に何でも入れておけるジョーカーのようなフィールドと言えます。
トランプの「ジョーカー」のことですね。(そもそもトランプを知らなければ通じない話ですが・・・)
トランプは1から12までありますが、それ以外にジョーカーが用意されています。
ジョーカーがなくてもゲームは出来るのでしょうけど、ジョーカーがあることでゲームに幅ができます。
FileMakerでその幅を担っているのがグローバルフィールドではないかと妄想しています。
さて、ここでグローバルフィールドを別の切り口で値を見てみましょう。
表形式にして見てみます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRnOrolz1Be2vyVHKt5lznk1Vv5yeJb8OCVktxkz2BNSvzoshRVIMH04A-M99pYlvF0tErMFPG1BtHA8M7ioH2d457y2a-gPbOlAbmwld7n-DAmNKmn2XhIxsdOBeTq41Rayn0AkLKXrk/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258904.png)
どこかのレコードのg_グローバルテストに「ほんだ」と入れてみます。まだレコード確定していません。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDrFhDmZRQIljEP5VO5eJ_d1zYhZkn0qMvGSZRSfN4jgi48v1S2wlNDLYk9cb11NHLL15N1kgCRQy8zSadfN2jQRuSO9OoLa_y0UBSgalqqovDCjr0C2rY4MgtyH5uMRurU5LOH8vjdqA/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258905.png)
余白をクリックしてレコード確定してみます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyJT7e2RjcyA3nFZ5fUKOaErf0-WEmHvQTzjoeH6ppF9qLnT9DlEo29uNMYo8AWkdSy4ZnEzio5TridulsNz8j87eDJmDog0dIcyTP2HYsTYcVl525hNqhh-aFsN7wBMGVRs_Saj15_z4/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258906.png)
すべてのレコードに同じ「ほんだ」が入りました。
ここでグローバルフィールドの説明文を思い出してみましょう。
「グローバル格納を使用するフィールドには、すべてのレコードで共有される1つの値のみが格納されます。グローバルフィールドは、スクリプトの使用時など、値の一時的な格納としても使うことができます。」
グローバルフィールドなら、どのレコードに値を入れても全レコードに同じ値が入ります。
これが「共有される1つの値のみが格納されます」ということです。
それは分かったけど(分かったのかな(^^?)、じゃあグローバルフィールドは実際の運用ではどういう時に使うの?、という疑問が湧いてくるでしょうか。
疑問が湧くというのは良いことですね。次へ進む原動力になりますから(^_^)
グローバルフィールドの応用
2つの実用例を出してみましょう。【実用例1】
入力フォーム用のフィールドに使ってみましょう。
ユーザーに「ほんだ」と入力してもらい、新規作成ボタンを押してもらいます。
ボタンには、レコード新規作成となまえフィールドに「ほんだ」を入れるスクリプトを設定します。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENwoJDt1FkLD7NPq_ABbwKopDboR6-3KVYMm70i27Qq4QJGWAkF2mM8ejsj6g9_gXkEN-Uy1FYQJAFcvFfcz-GuK_i-bLWAy5SrTuz8DV9pCMBfoTpNNeCOt7_P7PU2ptuydxhhvejNU/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258907.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkwVbKG2JCCu1T6ym6x9BtFmDeLVb0H2mCRMOWFnddsT_blsLoA9eQ7RNxDMd6cCsNGmTFO8iE1mT8ivPEm6wPYwr3z2yIrw3NPA9yqt7DUBUnnltt7kqqj1ackSPir7C5xJ2kKObntws/w640-h130/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB.png)
ユーザーはFileMakerの操作方法がわからなくても、新規作成ボタンを用意することで迷わずレコードを追加してもらえることができます。
【実用例2】
リレーションで使ってみましょう。
g_グローバルテストフィールドをリレーション元にしてリレーションを組みます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi62oDceEnDQhnRyfrsqwWpYHgcaLiFjGqkU_v310jcAURdz1wKC37ef2QQXYp40CaqpKawNNcp0Oj_GkiSfmauYQWc2UGM2tBV-g4n519cqxW-pyvVoKfeb44jk4Ice4E1r8nWhoSqip4/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258908.png)
「ほんだ」でリレーションをかけることで、dbテーブルの「名前」を表示することができます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtE1C5DFzEKeXthUrRtnFFpMwaYe3n7Z9gPArX-zvEXkFxSdqCfHijT70rC19ejS6vpv1GTvcdojoEDUApOnrPQECTdYbSQ9uwNvtJv_QILSG0GQzJe3Vi9g5A57vjVXmgltml_OafKnQ/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258909.png)
g_グローバルテストフィールドに別のなまえを入れることで、動的に「sample_db::名前」を表示することが出来ます。
グローバルフィールドは一時的に格納できる役割もあるので、このような動的なリレーションを組んで値を取得するということもできます。
ファイルにアクセスした人がそれぞれ別で値を保持されるなど、グローバルフィールドはほかにも色々と特性があって、なかなか奥が深いフィールドです。
それぞれ別で値を保持、というのを一応説明します。
Aさんが自分の端末でg_グローバルテストに「おおたに」と入れ、Bさんが自分の端末で「ほんだ」と入れます。
でもAさんのg_グローバルテストは「おおたに」のままです。Bさんは「ほんだ」を「なかじま」に変えても、Aさんのg_グローバルテストは「おおたに」のままです。
AさんとBさんで、別々の値を入れることができるということです。
などなど。
ちなみにグローバルという英語の意味を調べると、世界的という意味のほかに、包括的といった意味もあるようです。
FileMakerとしては包括的という意味のほうが近いと思われますね。
なにしろ全レコードに同じ値が入るのですから。
ということで、グローバルフィールドについて書いてみましたヾ(*´∀`*)ノ
ざっくり言うと、「トランプのジョーカーみたいなもの」というまとめでいかがでしょうか(笑)
今日も良い一日を♪
【実用例2】
リレーションで使ってみましょう。
g_グローバルテストフィールドをリレーション元にしてリレーションを組みます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi62oDceEnDQhnRyfrsqwWpYHgcaLiFjGqkU_v310jcAURdz1wKC37ef2QQXYp40CaqpKawNNcp0Oj_GkiSfmauYQWc2UGM2tBV-g4n519cqxW-pyvVoKfeb44jk4Ice4E1r8nWhoSqip4/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258908.png)
「ほんだ」でリレーションをかけることで、dbテーブルの「名前」を表示することができます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtE1C5DFzEKeXthUrRtnFFpMwaYe3n7Z9gPArX-zvEXkFxSdqCfHijT70rC19ejS6vpv1GTvcdojoEDUApOnrPQECTdYbSQ9uwNvtJv_QILSG0GQzJe3Vi9g5A57vjVXmgltml_OafKnQ/s640/%25E3%2582%25B0%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AB%25E3%2583%2595%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%25AB%25E3%2583%258909.png)
g_グローバルテストフィールドに別のなまえを入れることで、動的に「sample_db::名前」を表示することが出来ます。
グローバルフィールドは一時的に格納できる役割もあるので、このような動的なリレーションを組んで値を取得するということもできます。
まとめ
ファイルにアクセスした人がそれぞれ別で値を保持されるなど、グローバルフィールドはほかにも色々と特性があって、なかなか奥が深いフィールドです。
それぞれ別で値を保持、というのを一応説明します。
Aさんが自分の端末でg_グローバルテストに「おおたに」と入れ、Bさんが自分の端末で「ほんだ」と入れます。
でもAさんのg_グローバルテストは「おおたに」のままです。Bさんは「ほんだ」を「なかじま」に変えても、Aさんのg_グローバルテストは「おおたに」のままです。
AさんとBさんで、別々の値を入れることができるということです。
などなど。
ちなみにグローバルという英語の意味を調べると、世界的という意味のほかに、包括的といった意味もあるようです。
FileMakerとしては包括的という意味のほうが近いと思われますね。
なにしろ全レコードに同じ値が入るのですから。
ということで、グローバルフィールドについて書いてみましたヾ(*´∀`*)ノ
ざっくり言うと、「トランプのジョーカーみたいなもの」というまとめでいかがでしょうか(笑)
今日も良い一日を♪
Blogger Comment
Facebook Comment