FileMakerメディア管理 実作編 Ver.4 付属の情報

FileMakerで作る写真・画像・動画の管理データベース、実際に基礎から作って育てる実作編です。ver.4 では付属する情報を追加しました。そして、そろそろ使い物になってきましたよ。

実作編 Ver. 4 概要

Version 3から随分月日が流れ、またまた改造を施した実作編 Version 4。ファイルはこちらです。


Download FM_MediaDB_V4_1.zip

パス絡み、コマンド実行の仕組み、すでに Mac専用 です。パスやコード実行環境、スクリプトなど他環境用に書き換えられそうならチャレンジしてみてください。

※ あと、うっかりしてましたがファイルを開いたらセキュリティ設定を変更してくださいね。

実作編5回目、Ver.4 の概要は以下です。

サブデータを追加

キーワードやレートなど、付属の情報をサブデータとして追加しました。メディア管理DBとして、何となく実践的になった気がします。

メタデータも追加された

サブデータとは扱いの異なるメタデータも追加されました。専用のテーブルを追加し、項目名と値により成り立ちます。今回は GetContainerAttribute から取得できるデータを取り扱いました。

フィルタ機能

付属情報を作ったからには、そのデータで絞り込みがしたくなります。複雑なフィルタリングは出来ませんが、分類ごとに項目をフィルタする仕組みをこしらえました。

ダブルクリックでプレビュー

小技を知ったので早速組み入れます。アイコンダブルクリックでプレビュー、プレビューダブルクリックで閉じるという、実装してみるとなかなか案配がよろしいです。

コードを実行するスクリプトの見直し

コード実行の仕組みは汎用的にあちらこちらのFMファイルで使い回しています。その度に雑なスクリプトやフィールドを見直し、少しずつ洗練されてきました。

他のスクリプトやフィールドの計算式も都度見直していて、毎回「前の記事捨てて書き直したい」と思うレベルの改善が図られたり、うっかり改悪してしまい混乱したりしております。

Penguin icon

前回、実作編 Ver.3 日付の情報 で、数ページにまたがる記事を書いたら、ボリューム多すぎてみんな全然読んでくれなかったんで、今回はバラにして行きます。ざっくりした内容にとどめ、必要があれば別のポストにて詳細を説明します。

付属情報のフィールド

いわゆるメディアに紐付く追加データやオマケデータです。「付属情報」という紛らわしい言い方してごめん。メタデータと呼ばないのは、メタデータは別で作ったからです。

こちらは付属の情報、サブデータです。例えば「★★★」のレート、それからキーワード、それから「参照」で読み込んだパスの階層ごとのフォルダ、作成日から計算して作る「年」とか「年、月」などです。

そうこうしているとメインテーブル内にどんどんフィールドが増えます。多すぎて鬱陶しいのでテーブルを分けてぶら下げました。

SubData テーブル

FileMakerメディア管理 実作編 Ver.3 日付の情報 の その他で触れたとおり、すでにmediametaという名のテーブルを作成済みでしたので、付属データをこのテーブルに作っていきます。

mediametaテーブルとのリレーション

1対1の簡単なリレーションです。

意味的にも技術的にもメインテーブルに収めるのと違いはありません。ただ単にメインテーブルにフィールドが増えすぎるのを避けるためだけに分けました。分ける基準も特にありませんが、何となく気持ちです。「メインだな」「サブだな」みたいな。

名前を変えちゃった
でね、ずっとmetadataという名前のテーブルだったんですが、それが気に入らなくて名前を変えました。メタデータは別で扱うので、subdata としました。

MediadbSubdataに名前変更
MediadbSubdataに名前を変更した

どうでもいいことなのに名前が気に入らなくて変えることがよくあります。スクリプトの中に「名前で」を多用するので、予想外のところで動作不良を起こす原因にもなります。「ネーミングが大事です」と主張している合理派の人の爪の垢でも煎じて飲め、自分。と思うこともしばしば。

付属情報の項目

具体的に何を追加したのかというと、たとえばこんなのです。

フラグ

Ver.3 でこっそり実装していましたが、まずはフラグです。🏁 とか 🚩とか、旗です。画像管理ソフトではお馴染みですよね。フラグはちょっとした印です。ちょっとした印ですから「あるかないか」即ち「1 か 0」の単純なデータです。

旗の見栄えと、付ける外すのトグルボタンを組み合わせました。もちろんフィルタリングも一発で出来るようにします。

flag
フラグとレート

レート

これも管理アプリによくあります。星です。★★★★★ とか ★★★ です。

旗と星はどんなソフトにも付いていますよね。フィルタ機能が星と旗しかないふざけたアプリもあります。メディア管理の本質はフィルタにあり、フィルタの中で星と旗は最も基本です。

レートとフラグについて、実装方法などより詳しくは下記のポストをどうぞ。

レートとフラグについての詳細 → FileMaker メディア管理 – 星と旗

FileMaker メディア管理 – 星と旗

キーワード

技術的に言うとキーワードまたはタグってのは、ほんとは「分類」として機能する独立したデータベースです。WordPressに例えると taxonomy です。

ですのでFileMakerでキーワードを作る正統な作りは、キーワードテーブルを作って多対多のリレーションを組むことです。でもそれをせず、「カンマまたは改行区切りのテキスト」としてキーワードを扱います。

その理由は、キーワードを分類として扱うのではなく、メタデータのひとつとして扱いたいからです。近い将来キーワードフィールドは、メタデータであるIPTCのタグ”keywords”に対応させるという目論見もあります。

キーワードとして二種類のフィールドを作りました。カンマ区切りと改行区切りです。入力のしやすさ、レイアウト上のフィールドサイズ、データを利用する仕組みなどを考慮すると二つのフィールドが必要でした。

keywords
カンマ区切りで入力できるキーワードフィールド

カンマ区切りのフィールドでは手入力を行います。改行区切りは値一覧になり、リストから選択するときに利用したりフィルタリングの際にも使います。

キーワードをリストから入力する図
キーワードをリストから選んで入力もできる

キーワードの実装について、ポストを分けたので下記をご覧ください。

キーワードについて → FM メディア管理 – キーワード

FM メディア管理 – キーワード

フォルダ階層

メディアを「参照」で登録するとき、インポート元パスがとても重要になります。メディアを内包するフォルダ、そのフォルダを内包するフォルダと、フォルダ階層を辿ったり絞り込んだりすることも多いんじゃないでしょうか。

パスの階層をフォルダとしてフィールドに納めておくと使い勝手が良いかもしれない。と、フォルダフィールドを階層ごとに複数作りました。

パスを分解してフォルダフィールドを作ってみた

こういうフィールドをあえて作ることで、いろんなところで利用が可能です。例えば何かの処理を行うときに「どの階層に対して行うか」の指定を簡単に渡すことができます。

フォルダ更新のメニューにも使える
フォルダ更新のメニューにも使える

また、ディレクトリツリーのような表示を行うにも有効です。ディレクトリツリーの表示(とフィルタリング)は別ファイルでテスト済み、出来上がってるんですが実作ファイルには未実装です。

フォルダツリー
こういうやつ。仕組みは出来てるけど落とし込めていないの

著作権情報

制作者、コピーライトなど著作権情報もフィールドとして作ります。キーワードと同じく、元ファイルに埋め込む機能を作る腹づもりですが、今回はただフィールドを作っただけで使い物になるのは今後です。

著作者情報など
フィールドを作っただけで活躍の場はまだない

イメージサイズや日付その他

メディアの幅と高さのイメージサイズは欲しい情報ですよね。Width と Height を取得し、「 Width x Height 」の見栄えフィールドも作りました。

イメージサイズ
width height を取得して w x h の書式に変換したものを表示

デジカメ写真なら撮影日、クリエイティブファイルならオリジナル作成日というメタデータがあります。これもぜひ欲しい情報ですね。取得してフィールドに記入します。ファイル作成日とオリジナル作成日がズレている場合、そのままにしておくのもあり、ファイル作成日を変えてしまうことを望む人もいるかもしれません。対応しました。

オリジナル日付のユーティリティ
オリジナル日付を表示し、小さな印でユーティリティが開く仕組み

これらの取得は、現時点ではファイルメーカーの機能で可能な範囲のみで行っています。少し後、メタデータの話でもう少し詳しく。

画像管理ソフトを真似る

フラグやキーワードが追加されて実践的になった実作編ファイルですが、実践的になったことで、ひとつの欲望が擡げました。Apertureを真似たいという気持ちです。なぜ真似たいかというと、自分に必要だからです。

プロジェクト

iPhotoで言えばフィルムロールやイベント、Apertureではプロジェクトです。

「プロジェクト」は分類のひとつですが、メディアレコードは必ずプロジェクトの何かに分類されなければならないという性質のものです。

今更ですが後付けでこれを作りました。メディアを無闇矢鱈と登録していき、2000や3000を越えだすと、大きな分類が必ずや必要になってきます。

ただ、アルバムというものを実装していないので、プロジェクトがほんとに重要な分類なのかどうか、微妙なところでもあります。

プロジェクト設定画面
とりあえずインポート時にもプロジェクトを必須に

読み込みセッション

メディアをフォルダからインポートしたとき、読み込みごとの記録がほしくなってきます。「読み込みセッション」は、フォルダからインポートする際に、同じタイムスタンプを記入します。

インポート時のタイムスタンプを付けておくと、フィルタリングの他、更新チェックの日時の比較でも役立ちます。

メタデータ

メタデータのテーブルを追加しました。サブデータテーブルがすでにあるのに何すんのん? はい。サブデータより自由度が高いのがメタデータです。

DBmeta テーブル

追加したテーブルの主なフィールドはこうです。
・リレーションのためのID
・Key(項目)
・Value(値)

WordPressでいうところの postmeta テーブルと同じです。フィールドを見境なく作り続けるのではなく、キーと値の組み合わせで必要なものを追加していく仕組みです。

meta
key と value によるメタデータテーブル

metaテーブルへの追加は、「メタデータの束を取得してくる」ことを行い、そのメタデータの束をレコードに分配します。そもそもは ExifTool を想定していまして、まとめて取得したExifデータをmetaテーブルにレコード化するための措置でした。

今回、ExifTool まで含めると盛りすぎかと思って中止し、代わりに GetContainerAttribute のデータを利用することにしました。

GetContainerAttribute

以前「FileMakerでメディア管理 – メタデータの取得」で、取得をレベルに分けました。GetContainerAttribute はファイルメーカーの関数ですからハードルが低く、レベル3です。

GetContainerAttribute ( オブジェクトフィールド ; "all"  )

これで、取得できるメタデータをまとめて全部取得できますから簡単なことですね。

メタテーブルの詳細については改めてポストします。

ポストしました。

FileMaker メディア管理 – メタデータの取得と利用(LEVEL 3 編)

フィルタ 絞り込み

フラグやキーワードなど付属データを作り、プロジェクトやフォルダフィールドを作りました。これらはそもそも何のためにあるかというと、絞り込みをするためです。

フィルタ機能こそが画像管理に求める基本にして最大必須の機能です。フィルタ機能、作りましょう。

分類ごとの or 検索

現時点のフィルタ機能は、分類ごとに独立したものです。分類の中でのみ項目を追加したり外したりできます。分類をまたがって複合検索に挑戦してみようとしましたが、力不足のためスマートなやり方をまだ思いつけていません。

すごい複合検索は無理ですが、そこいらのメディア管理アプリより優秀ですよ。

フィルターメニュー
フィルターメニュー – 分類を選ぶと項目がリストされる
フィルタの画面
リストされた項目を選択すると絞り込む

分類内で複数項目を選択すると、分類内での or 検索になります。別の分類からの絞り込み検索には対応できていません。すべて分類ごとです。ちょっと悔しいので、せめて「以前選んでいた分類の絞り込み結果」を保存する機能だけ実装しました。

項目を選択するインターフェイスも妥協をしています。アプリでよくあるクリックとコマンド+クリックとシフト+クリックの使い分けが実装できないので。仕方ありません。

フィルターについて詳細ポストできました。→ FileMaker メディア管理 – フィルターの詳細

FileMaker メディア管理 – フィルターの詳細

CodeRun

ターミナルコマンドを実行させるAppleScriptの要、コードを実行させるための自作システムがあります。これもまたまた改良しました。育ってます。

CodeTemp
コードを実行するCodeTempテーブル

コードを実行するFMファイルについて以前ポストしましたが、そろそろ全面的に書き直したい気分。

改良のポイントは「なるべくテーブル内で完結させること」です。これまでは複数のテーブルやフィールドを必要としていて、煩雑さの要因になっていました。

コード実行のテーブルは他のFMファイルでも使い回すことが多くて、テーブルコピペ、スクリプトコピペで即使えるよう簡素化したかったんです。テーブル内で完結させることは重要です。

コードを実行するFMファイルの話はすでに書いたので繰り返しません。関連するポストも複数あります。が、内容を大幅に更新したいので、また別途改めます。

小技

その他の小技について行きます。

ダブルクリックで発動

これまではアイコンサムネイル部分のクリックでプレビュー画面を出現させていました。

プレビューのカード表示
プレビューのカード表示

しかしリスト表示の操作中に誤クリックが頻繁に起きるので、これは良くない、と他の方法を考えます。

「ダブルクリックの判定があればなー」と思わずにおれません。FileMakerにはダブルクリックの判定機能がありません。

できないものと諦めていましたが、スクリプトにタイマーを仕込めることを利用したテクニックによりダブルクリック判定ができると知りました(ネタ元URLを失念、複数ページを見て回った記憶があるのですが・・)

早速パク真似して取り入れます。

ダブルクリックで発動スクリプト
ダブルクリックで発動スクリプト

実行させるスクリプト名を引数で渡すだけなので、このスクリプトは汎用で使えますよ。

しつこくファイルパスについて

さてFileMakerで扱うパスについて理解が足りない筆者はこれまでにもごちゃごちゃとパスについて書いてきました。今回もまだ理解不足のままパスについて書きます。

ファイルメーカーが照合を間違える

ファイルパスでリレーションをしていたのです。

パスでリレーション
ファイルパスフィールドでリレーション

これ実はまともに動きません。なかなか気づきにくいのですが、ファイルメーカーったら間違いを起こします。

あまりにも間違いが多いので何とかしようと照合フィールドを追加してみたらさすがに間違うことはなくなりました。

二つのフィールドでリレーション
これで間違いが起きない

やれやれ。と思ってる場合ではなくて、これでは駄目なんです。リレーションを元に新規にレコードを作成するタイプのスクリプトや仕掛けが動きません。そういうのはリレーションの照合がひとつだからこそ動く仕組みなんです。

苦肉の策で、テーブルオカレンスを増やしてリレーションを設置。目的別に使い分け、なんとかこれで思い通りの挙動を手に入れました。

無駄にテーブルオカレンスを増やした
無駄にテーブルオカレンスを増やしたことで解決

この無理矢理な解決方法、まったく気に入りません。こういう無意味な無駄を増やしたくない。

真の解決の糸口はすでにつかんでいます。

記号を置き換える

多分、パスに含まれる記号が良くないんだろうと思います。そこで、計算フィールド「リレーション用パスモドキ」を作成します。「/」や「~」や「.」など記号を片っ端から「_」に置換します。結果、ファイルメーカーは間違いを犯さなくなりました。

照合だけでなく、検索でも同じことが起きます。記号が含まれた検索を正しくできません。多分エスケープする必要があるんだと思います。

で、照合にリレーション用パスもどきフィールドを使うことで、上記の無駄なリレーションは不必要になり、解決に至りました。

ですが、上記の無駄リレを前提にたくさんのスクリプトが作られています。それら全てを検証しながら変更することが困難なので今回は諦めました。故岩田社長なら「修正は困難だがすべて作り直せば早い」と言うでしょう。いつかもしかしたら全面的に書き直すかもしれませんがわかりません。

ユーザーインターフェイス

特に話題にしていませんが、インターフェイスも着々と改良されています。

ツールを畳んだとき

ツールバーを畳んだときにレコード総数や番号や送りボタンなどを表示します。ツールバーを表示しているとダブるので表示しません。

ツールが表示されているとき
ツールがあるとき〜
ツールを畳んだときのUI
ないとき〜

ツールバーや書式バーなど、関数を使うときに用語が分からなくて困ったことによくなります。いまだに、自分で書いた記事を検索して参照するくらい覚えられません。-> FileMaker ウインドウに関する忘れがちな用語のまとめ

情報パネル

情報パネルを右側に集めてスライドの切り替えで賄います。

i ボタンオフ
i ボタンがオフのとき〜
i ボタン オン
オンのとき〜

収まりきらないものもありますが。

検索モード対策

スライドを駆使して一画面にすべてぶち込んでいます故、検索モードにされてしまうと無茶苦茶な画面が現れます。

検索モードを阻止するため、検索モードである場合は専用画面が出てくるようにしました。嘘です。専用画面ではなく、専用画面の振りをしたオブジェクトです。すべて隠すのです。これで不用意に検索モードにされてもOK。

検索モードでの画面
検索モードになるとこうなる

検索モードを判断する関数なんだっけ。数字は何だっけ。いつもそうなります。そこで、自分が書いた記事を参照するのが常です。

-> FileMaker ウインドウに関する忘れがちな用語のまとめ

ということで、作って育てるFMメディア管理 実作編 Ver.4 の概要でした。実際に、触って試して覗いて改良したりヒントくれたりしてください。ダウンロード、ご自由にどうぞ。


Download FM_MediaDB_V4.zip

変なところがあったら教えてください

 

 

コメント

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください