はじめに
FileMakerでのMarkdownエディタであるMarkdownThingの開発者(@qbxxdp)さんから、チュートリアルがあるとよいのでは? とご指摘いただいたので、作ってみた記事です。既存のデータベースに組み込むのも、そこまで大変ではないと思っているのですが、このチュートリアルで練習ファイルを作成し、全体の流れと、上手く動くことを確認した上で、その次に、既存のデータベースへの組み込みにチャレンジすると導入もしやすいと思います。動画は苦手なので、スクショばかりの長文ですみません。不具合報告は大歓迎です。
このチュートリアルで作れるもの
フィールド編集のログが取られ、レコードの作成、削除、フィールドの編集についてundo、redoが可能なカスタムAppが作成できます。
準備するもの
-
FileMaker Pro 19
「FMDB-blueの使い方」を読んでいただければ、FMP16までなら導入可能だと思います。 このチュートリアルではFMP19前提で進めます。 -
FMDB-blueファイル一式
- FMDB-blue_Processor.fmp12
このチュートリアルでは「Processorファイル」と呼びます。 - SampleApp_Interface.fmp12
このチュートリアルでは「Interfaceファイル」と呼びます。 - FMDB-blue_Data.fmp12
- SampleApp_Data.fmp12
これらのファイルは、このチュートリアル内では登場しませんが、FMDB-blueの導入、稼働には必要なファイルです。
導入が済んでしまえば、SampleAppのファイル2つは削除してしまっても稼働に問題ありませんが、新たなファイルに導入するときには、また必要になるので、そのまま残しておいた方が無難かと思います。
- FMDB-blue_Processor.fmp12
-
ログ記録を残したいFileMakerファイル。
チュートリアルでは、このファイルを作成するところから始めます。
ある程度の細工は必要ですが、どんなFileMakerのカスタムAppでも導入は可能だと思っています。本当は、どんなものでも、と言いたいですが、ダメなものもあるかも知れません。このファイルでは導入できない!ってのがあったら、ご連絡いただければ、対応策を頑張って考えます。
FMDB-blue導入のチュートリアル
0. チュートリアル開始前の注意事項
このチュートリアルを読んでいただくと分かると思いますが、Processorファイルと、ログを残したいFileMakerファイルとの設定を交互にやっていく感じになります。この順序を間違えると、エラーが出てうまく導入できない危険性が高まります。途中の作業でエラーが表示されたら、再度前の工程から確認した方がよいです(ちなみにカスタムApp内の「使い方」と若干順番が異なっているところはありますが、その違いはどちらでも問題ありません)。
あと、FMDB-blueファイルはカスタムメニューが設定されており、通常使用の中では、余分なところが触れられないようになっています。チュートリアルで、メニューバーに該当メニューが見つけられない場合には、ツール > カスタムメニュー > [FileMakerの標準メニュー]を選択してください。それもグレーアウトとしているときは、完全アクセスで開いていない可能性が高いです。完全アクセスのアカウントで再ログインしてください(メニューバーのSample Appかスクリプト > Development Toolsに再ログインのコマンドがあります)。
このチュートリアルは、macOS Montereyで作成しています。Windowsでも同様の流れで導入できると思いますが、Windows用にチュートリアルを作成いただいた方もいらっしゃるので、参考にしてください。
1. ログを残したいFileMakerファイルの作成
1-1.
FMP19を起動させ、でファイルを新規作成します。
1-2.
ファイルを作成する場所はどこでもよいですが、まずは、Processorファイルがあるフォルダに作りましょう。ファイルの名前もなんでもよいですが、ここではAnyNameFile
にしておきます(以後、ログを残したいFileMakerファイルは「AnyNameFile
ファイル」と呼びます)。
1-3.
フォルトの設定だと5つのフィールドが自動で作られて、追加のフィールド作成の画面になります。そこで、1つフィールドを作成します。フィールド名もなんでもよいですが、ここではAnyNameField
にしておきます。
1-4.
あと、このファイルを再起動したときに、FMDB-blueにアクセスする際にパスワードを聞かれないようにするために、アカウントにパスワードを設定しておきます。(実運用時は、FMDB-blueを含めて、このパスワードは適切に設定してください)。
これでログを残したいFileMakerファイルの作成は一旦終了です。
2. Processorファイルでの設定・その1
2-2.
アカウント、パスワードは「admin」を入力します。
2-4.
「外部データソースの管理」画面で「新規」を選択します。
2-5.
「ファイルの追加...」からAnyFileName
ファイルを選択します。データソースの名前もなんでもよいですが、ここではAnyFileName
のままにしておきます。
2-7.
「リレーションシップ」を選択して、テーブルオカレンスの追加を行います。
2-8.
「テーブルを指定」でデータソースにAnyFileName
を選択します。この選択のときに認証を確認するアラートが表示されますが、「はい」を選択してください。ここのオカレンス名もなんでも良いですが、AnyOccurenceName
としておきます。
2-10.
「リレーションシップ編集」のところで、下図の通りに設定を行います。
2-11.
下図の通りになっていることを確認して、「OK」を押します。
3. ログ記録を残したいFileMakerファイルでの設定・その1
3-1.
今度は、AnyFileName
ファイルで、「外部データソースの管理」を開きます。
3-2.
「外部データソースの管理」で「新規...」を選択します。
3-3.
「ファイルの追加...」からProcessorファイルを選択します。この時の外部データソース名は、e_FMDB-blue_Processor
としてください。
3-6.
「リレーションシップ」を選択して、テーブルオカレンスの追加を行います。
3-7.
「テーブルを指定」でデータソースにe_FMDB-blue_Processor
を選択します。この選択のときに認証を確認するアラートが表示されますが、「はい」を選択してください。ここのオカレンス名は、eM_Hub#FMDBblue
にしてください。
3-8.
テーブルオカンレスが作成されたのを確認して、「OK」を押してください。ここではリレーションシップの設定は必要ありません。
3-10.
「スクリプトワークスペース」で「インポート...」を実行します。
3-11.
インポート元は、Interfaceファイルを指定してください。
3-12.
「_LogSystem」のところにチェックを入れて、全部で24個のスクリプトをインポートします。
3-13.
スクリプトのインポートが終わったら、AnyFieldName
フィールドにカーソルを入れ(アクティブにし)た状態で、「Set TO Shift from Active Field」スクリプトを実行します。
3-14.
フォーカスが、Processorファイルに移り、「TableOccurrenceShiftの設定」について尋ねられますが、「新規作成」を選択します。
3-15.
TableOccurrenceShiftテーブルにレコードが作成されたのを確認します。ここで空欄があるのは問題ありません。次で設定を行います。
4. Processorファイルでの設定・その2
4-1.
Processorファイルにフォーカスが移っているので、そのまま「レイアウトの管理」を開きます。
4-2.
「レイアウトの管理」で_Log@SampleParent.form
レイアウトを選択し、「複製」を押します。
4-3.
複製されたレイアウトを選択し編集します。レイアウト名はなんでもよいですが、_Log@AnyOccurrenceName.form
にしておきます。表示するレコードをAnyOccurrenceName
にて、「OK」を押します。
4-6.
残ったフィールドは、AnyOccurrenceName
テーブルのAnyFieldName
フィールドに変更します。
4-8.
「Set TO Shift from Active Layout」スクリプトを実行します。
4-9.
「TableOccurrenceShiftの設定」について尋ねられますが、ここでは「3」を入力して、「選択する」を押してください。
4-10.
これで、TableOccurrenceShiftのレコードが全て埋まります。
5. ログ記録を残したいFileMakerファイルでの設定・その2
5-1.
AnyFileName
ファイルに戻って、次の2つのスクリプト「新規作成」「削除」を作成します。
5-2.
「レイアウトモード」にして、AnyFieldName
フィールドを右クリックし、「スクリプトトリガ設定...」を開きます。
5-3.
「OnObjectEnter」スクリプトトリガにOnObjectEnter_Deposit_OldData()
スクリプトを、「OnObjectSave」スクリプトトリガにOnObjectSave_Log_UpdatingField()
スクリプトを設定します。
5-6.
Interfaceファイルに移り、「Undo」「Redo」ボタンをコピーします。各々のボタンには、グレーアウトしたボタンが配置されていますので、それも一緒にコピーします。
5-7.
AnyFileName
ファイルに戻り、レイアウトモードで貼り付けします。
5-8.
これで練習ファイルの作成は完了です!
フィールドは1つだけですが、レコードを追加したり削除したり、フィールドの内容を変更したりして、undo、redoを行なってみてください。FileMaker使いの方々なら、それだけの操作でも、結構エンターテイメントになると思います。予想通り動くのが分かったら、ぜひ、Interfaceファイルも分析してみてください。
チュートリアル後の注意事項
- 一度に複数のFMDB-blueが稼働していると、動作に不具合が生じます。FMDB-blueフォルダを複製して、個別のデータベースファイルをそれぞれの中に入れて設定して使うと、その個別のデータベースファイルを複数立ち上げた場合、FMDB-blueが複数稼働する状況になります。できればFileMaker Serverにアップロードして、共有して使われるのがよいかと思います。
- オブジェクトフィールド以外は、同様の操作で導入できます。オブジェクトフィールドは、特殊な設定が必要なので、それは、また別の話。
あった方がよいもの
FMDB-blueを導入する上で、あった方がよいもの。
- FileMaker Server
注意事項でも記載しましたが、ローカルで個別にFMDB-blueを導入しようとすると、不具合を起こす可能性があります。それを避けるためにもサーバーにアップロードして共有した方が安定します。 - MBSプラグイン
必須ではないのですが、チュートリアルの画面の端端で、ちょこちょこ出てくるので。Demo版ですみません。 - MarkdownThing
チュートリアル作成には必須でした。完全に試したわけではありませんが、MarkdownThingにもFMDB-blueを導入できそうです。
謝辞
- FM-1GP大賞発表LIVE終了後の打ち上げzoomで、ご意見をいただいたのがきっかけです。FM-1GP運営に感謝!
- 当チュートリアルを作成するのにMarkdownThing(魔改造バージョン)を使用しています。@qbxxdpさんに感謝! 本チュートリアルのご指導もいただいております。