パスのフィールドと登録方法の分類フィールドを追加したバージョンです。メディア管理システムを作ろうと張り切る作成と構築編、今回は過去記事「実作編Ver1ファイルパス」のリメイク記事です。前回は基本の形を作りました。今回はファイルパスと登録方法というフィールドを追加しています。R1とほとんど変わりません。表面的には同じですが内部で小さなステップアップが起きています。ご興味のある方はダウンロードしてみてください。ファイル管理に関わるデータベースを作る際に避けて通れぬパスの秘密。追加され、ブラウザで簡単にフィルタできるようになりました。フィルタではパスについて行きます。パス作成と構築ファイルR2に追加されたフィールドは次の通りです。UNIX形式のPOSIXです。どのように登録したかの分類。FileMakerの世界ではパスが少々複雑です。パスの秘密を知らないと先々破綻しかねません。実際、私は破綻しかけて初めてパスの秘密を知り驚愕してまた最初からファイルを作り直した経験者です。以下の記事では、パスについて少しばかり丁寧に説明しています。このページを補足する内容となっていますので、掘り下げたい方はぜひお読みください。ファイルパスを取得するここからは上記ポストの要点をまとめつつ、今回添付のR2ファイルを解説いたします。パスを取得する手段は二つあります。関数でオブジェクトから取得します。数行の情報が手に入り、その最後の行にパスがあります。一つは「フォルダからインポート」時にファイルパスをインポートします。実は、これらの方法でゲットするパスに一貫性がありません。FileMaker世界のパスの特徴です。接頭語がくっつきます。ファイルの種類によって接頭語が変わります。file:/HDD/folder1/folder2/image20230223.pngスクリプトステップ「フォルダパスを取得」では接頭語のないパスを取得します。おいおい、接頭語は必ず要るんじゃねえのかよ。/HDD/folder1/folder2/フォルダからインポートする際に取得できる「ファイルパス」は「file:/」で始まります。相対パスでなければ通常「file://」となりますね。file://HDD/folder1/folder2/image20230223.png「file://」の接頭語が付いたパスは、当のFileMakerでさえ、それをパスと認識しません。パス形式を変換する関数が登場しましたが、「ファイルパス」は変換できません。file://ファイルパスは、しかし大事な役割もありました。フォルダインポートの際「更新」では照合フィールドを指定しますね。このファイルパスフィールドを照合フィールドに指定できます。うっかり「file://」を「file:/」に修正してしまっていたなら、照合で使えなくなります。内ではパスの記述に一貫性がありません。なんて複雑なんだ!という知識を踏まえつつ、今回のバージョンにパスのフィールドを追加しました。追加したパスフィールドfilePathFM作成と構築編ではFileMaker形式に一貫性を持たせます。」に統一したFMパスを格納します。フォルダインポートで得られる元々の「ファイルパス」フィールドは温存します。「インポート元」の記録として保持しておくんです。filePosixUNIXのPOSIX形式はMacの標準的なパス形式でもあります。現時点では使用していませんが、後々めちゃ使います。それどころか、レコードの根幹となります。未来に向けて、ここにPOSIXのフィールドを作っておくのです。現時点ではFMパスからposixを計算して作成しています。以上パスのフィールドでした。パスフィールドへのデータの記載は、もちろん手入力でパタパタ入力なんかしません。その方法は大まかにこうなります。参照登録の場合オブジェクトからGetAsTextの最終行をゲット。このすぐ次で登録方法について書きます。おっと「設定::オブジェクトフォルダ」て何ですのん。次の次で設定テーブルについて書きます。登録方法FileMakerファイルにオブジェクトを登録する方法は次の四つです。ファイル内に埋め込むフィールド定義で設定済みの場所に格納するフィールド定義で設定済みの場所に暗号化して格納する参照する本ファイルではファイル内に埋め込まず、セキュアでない格納場所を指定するので、格納か参照かの二択です。〜この条件分岐を、スクリプトや計算式で頻繁に使うようになります。「登録方法」という分類をフィールドとして作っておくことはとても有用で、重要レベルも高いと考えます。手入力する必要なんてありません。)これでオブジェクトフィールドのデータ保存方法が返されます。出力されるようにしています。数字にしてしまいました。言葉のほうが扱いやすいかな。設定テーブルテーブルを一つ追加しました。暫定的に「設定」という名付けをしています。初期設定やグローバルなフィールドをまとめておくテーブルです。設定テーブルのフィールドまずファイルについての基本情報フィールドです。「このファイルの名前」「このファイルのパス」などです。オブジェクトフォルダとそのパスのフィールドがあります。これは、オブジェクトの格納場所を手入力しておくフィールドです。パスは計算で作成します。「格納」のパスを取得するための「オブジェクトフォルダ」フィールドメディアを格納で登録した場合、GetAsText関数で絶対パスを得られません。相対パスで返ってきてしまいます。登録方法がどうあれ絶対パスを獲得したいので、計算で利用しやすいよう「オブジェクトフォルダ」とそのパスのフィールドを置いています。そのフィールドに何を記載するんですか。オブジェクトの管理で指定したフォルダです。図では「Media/」です。始まる絶対パスが入りますよね。同じものをオブジェクトフォルダフィールドに書き記しておきます。滅多に更新するものではないのでオプションで初期値をセットしています(変更する人は忘れずに初期値も変更してね)これを元に、「オブジェクトフォルダpathFM」フィールドを計算します。オブジェクトフォルダ)オブジェクトフォルダまでのパスが確保できました。オブジェクトフォルダのパスが確保できたことで、メインテーブルでオブジェクトが「格納」で登録されても、絶対パスをパスフィールドに記載しておくことが出来るようになったわけです。最後にオマケで計算式をあげておきます。以前はフィールド定義のオプションで計算していましたが何かと都合が悪いので今はスクリプトで計算してフィールドに放り込む方法を好んでいます。分岐させ、以下の計算結果をフィールドに設定しています。以前はカスタム関数作ってましたが不要になりました。FM形式のファイルパス、これを後には「相対パスでいける場合には相対パスのままで」みたいな変更も出てきたりします。それはそれとして、とにかくパスの基本を押さえたバージョン、R2でした。作成と構築の総合案内、インデックスページを用意しました。