FileMakerメディア管理 実作編 Ver.5 〜 ExifTool

基本の Ver.0 からスタートして育て上げてきた FileMaker メディア管理。今回 Ver.5 ではいよいよExifTool を使います。大がかりな改変と共に、ますます磨きが掛かってきましたよ。

前回の Ver.4 から時が経ち、またまたちゃぶ台返しの大改造を施しました。今回の Ver.5   は、メタデータの取得と編集に ExifTool を使います。

ダウンロードできます(Mac用)
Download FM_MediaDB_V5.zip

ExifToolを使う前提なので、ファイルをお試しの場合は公式からインストーラーをダウンロードしてあらかじめインストールしておいてください。よくあるちゃんとしたアプリみたいに「ExifToolを組み込んだ」とかそういうのありませんから。インストールしておいてください。

ExifTool インストーラーの場所

ExifToolについては ExifTool のかんたんなメモ を参照してください。

パスとかAppleScriptとかあらゆる局面でMacの仕組みを利用していますので残念ながらMac専用です。他の環境のかたは参考程度に。または改造の練習にでも💦

Ver.5 の概要

今回のファイルで変更されたところや特徴をざっと紹介します。

ExifTool を使ってexifデータを取得します。

今回、ExifTool を扱うことで、Exif や IPTC のタグそのものを管理するテーブルが追加されたり、メタテーブルへの読込方法の変更がなされたり、GPSによるGoogleMapsへのナンチャッテ対応を果たすなど、かなり変更がありました。

こちらに詳細 → FileMaker メディア管理 – メタデータの取得と利用(LEVEL 5 ExifTool 編)

エクスポートを追加

メディアファイルをエクスポートする設定を追加しました。

インポート、新規登録、フォルダの更新、再挿入…

インポートや新規登録のスクリプトも全面的に作り直しました。改善になっていればいいのですが、まだまだ修行途中です。

編集後の更新

編集したあと更新する手際を考えましたが・・・

バージョン

バージョンという名の、複製を作る仕組みを作りました。複製を作ることで、オリジナルに手を付けず自由に弄り倒せます。

FileType テーブル を追加

いろいろとテーブルも増えております。拡張子のFileTypeテーブルを追加しました。インポートするときに除外する拡張子を管理できます。

検索の充実

フィルタの他に、レコードのAND検索、FileMakerのフル検索をそれぞれ追加して、フィルターに収まりきれない検索モードを充実させました。

その他の変更

あとは・・・変更が多すぎてよく分からない状態ですが。

フラグとレートのフィルタボタンでは、すでにフィルタ状態では「検索」ではなく「絞り込み」になりました。

CodeRun も新しいものに差し替え(Macで実行可能なFileMakerコード管理 CodeManager v2

それと、レイアウトの見た目のデザインをかなり改善して、わずかにすっきりしたかもしれません。ダブルクリックで開くプレビュー画面も変更しました。

では詳しく行きます。詳しく行くと言っても、どうしましょ。今回は仕組みの話をせずに、使い方みたいなことを書いてみます。つまり、ver.5の表層編です。

MediaDB どのように使うか

作って育てる手作りメディアDB、作り手の意向に応じた機能を追加していっておりますが、そもそもこのファイルは何かというと、メディアを読み込んで管理します。

メディアを読み込んで登録するデータベース

読み込み方法として、格納と参照、どちらもいけます。格納で読み込めば、FM内部で管理してることになり指定のフォルダにメディアがコピーされて収まります。参照で読み込めばパス情報を元に管理します。

MediaDBv5-overview

フォルダを指定してインポート

ファイル1個ずつ読み込むこともできますが、フォルダを指定してその中身をごっそり読み込むこともできます。ばらばらな複数ファイルをドラッグして登録するみたいな高度なことはできません。一個ずつかフォルダ読み込みかのどちらかだけです。今回、インポートの画面を簡素化しました。

MediaDBv5 import設定

フォルダの中に読み込みたくない種類のファイルもあると思われるので、最初から「除外する拡張子」という設定を済ませて、読み込むファイルタイプを限定します。

「読み込まない拡張子のリスト」を、これまでは単に改行リストとして作っていました。しかし飽き足らず、拡張子テーブルを使って追加や変更が容易に行えるようにしました。

MediaDBv5 file type テーブル
FileType 拡張子とタイプ、採用・除外を設定

このテーブル、単独でも何かと使える拡張子データベースになりそうです。

ところで、世の中には拡張子のないファイルもあります。特に私のハードディスクにはたっぷりあります。そこで、MediaDBでは拡張子の付いてないファイルも読み込めるように工夫しています。拡張子のないファイルなんてのは、漢字トーク時代や旧MacOS時代のファイルになりますから、かなりレアです。でも自分には必要なので、ここでたいへんな苦労をして不整合なく読み込めるように作り込みました。

ファイル属性やメタデータを使っての管理

メディア管理とは何なのか。単純にいうと「分類してフィルタする」ことに尽きます。Finder が勝手に書き換えたファイル属性(主に日付)を正したり、メタデータから細かな情報を得たりします。キーワードや見出しを付けて分類することも需要、こうやって多大なメディアファイルを一覧したり絞り込んだりします。

MediaDBv5 keywords
キーワード
レートとフラッグ
旗と星

星と旗は前回付けました。今回はそれ以上の細かなメタデータも扱えます。Exif やメタデータは項目が多すぎていちいちフィールドにはできません。テーブルを分けてリレーションします。

メタデータの扱い

メインテーブルでは1個のメディアファイルが1個のレコードです。メインテーブルにIDでリレーションしているメタテーブルは、キーと値のレコードの束です。ポータルで表示できます。

MediaDBv5 meta panel
メタデータのポータルパネル

メタテーブルのキーはExifToolでゲットしたメタデータの「タグ名」にあたります。タグ名によってメタテーブルのキーには意味が与えられ、時にはその意味に沿って一部メインテーブルのフィールドに昇格します。

てなわけで、Exif や IPTC のタグ名を網羅したデータベーステーブルが一つ必要になります。Exif タグカタログです。このカタログに沿って、メタテーブルのキーを解釈できるという案配です。

MediaDBv5 exifTags
タグ名のテーブル

「ExifToolTags」テーブルは、メタデータのグループ名、タグ名、説明、値の例で作られたExifToolで取得できるタグ名DBです。メディアを登録してExifをゲットするごとにタグ名DBも育ってきました。これだけでも結構価値あるデータベースではないかと思います。

そして少しフィールドの追加があり、それは「フィールド名」フィールドです。特定タグ名にフィールド名をセットしておくことで、レコードのメタテーブルの特定キー(タグ名)をフィールドとして転記させたり、エクスポートの時に狙ったタグのExifを書き換えたりできる仕組みです。

仕組みの話はややこしいので分かりにくいかもしれませんが、何しろ、タグ名データベースが作られましたという話でした。

フィルタと検索

前回V4で各種フィルタを用意しました。これだけでも結構使えますが、作り手の実力不足で、項目ごとに検索することしか出来ません。

MediaDBv5 filter bar
各種フィルター – 各分類ごとに独立したフィルタ

検索の仕組みを作ろうとするとやたらややこしくて、検索して→絞り込みたいとか 絞り込みを解除して元の検索に戻りたいとか、複合的にAND検索したいとか、多目的にOR検索したいとか、キリがありませんので作るの無理。

そこで、簡易なフィルタで満足できないときのために検索パネルを設けました。

MediaDBv5 検索1
検索1 検索条件ひとつのAND検索

検索条件が1ページのみで、各フィールドはAND検索。キーワードが「とめ」の「JPEG」画像。とか、そんな検索が出来るパネルです。

これでも満足出来ないときはFileMakerの検索モードフル機能を使います。

MediaDBv5 検索2
検索2 FileMakerのフル検索機能

やや大袈裟な画面になりますが、レコード条件を追加することでOR検索ができるようになります。

ファイルを書き出すこと

管理したメディアファイルをエクスポートします。

フィルタして絞り込んだものをまとめてフォルダに書き出して再利用するとか。写真から位置情報などExifデータを削除したり、コピーライトや著作権を加えたり、そういう書き出しも行います。元のオリジナルファイルを変更せず、書き出しによって賄います。ですのでエクスポートの設定も大事な機能です。メタデータを削除したり付け加えたりすることでも、ExifTool が活躍します。

MediaDBv5 ExportSetting
エクスポート

メディアを編集

メディア管理のアプリよりも画像編集アプリが好きなのが世のみんなです。例えば Aperture は不要品としてポイ捨てされました。でも私には必要なのでこうして作っています。それはともかく、でも編集したいときもあります。

作って育てる FMメディア管理では、編集は外部アプリの仕事です。

「このアプリで開く」メニュー
「このアプリで開く」メニュー

アプリを登録してそれで開くメニューも実装済みなので、好みのアプリで編集します。

編集後の世界

編集前

編集して保存すると、FileMaker ではこうなります。

編集後

これに対処するためのスクリプトをすでに作ってあります。どのようなスクリプトかという技術的な話は省略しますが、別のポストで詳しくやるかも。

「再読み込み」メニューコマンド

とにかく再読み込みするとほれこのとおり。

編集前

ちゃんと「ファイル更新日」も更新されます。

ここまではいいのですが、いや、よくない。オブジェクトが「変更されています」となった時だけ「メディアを再読み込み」というか「更新」ボタンをどーんと表示したいんです。こんなふうに。

理想の更新ボタン

オブジェクトを隠すを使えばできますが、「変更されています」状態をゲットする方法がわからないんです。

これを読んでいるベテランの先生がいらっしゃいましたら、どうかオブジェクトが「変更されています」状態であることをゲットする関数や計算式を教えてください。

と言っても簡単に教えてくれることもないので自力で突き止めます。

Penguin icon (…突き止め中)

熱血デジタル部FM探偵が調査を行ったところ、「変更されています」状態では GetContainerAttribute を使ったときにファイルサイズが「?」となる特徴を発見しました。もうひとつ MD5 が消滅するという確実っぽい特徴もありました。しかしあえて file size を採用。

GetContainerAttribute ( mediaDB::オブジェクト ; "file size" )= "?"

暫定的に、この状態ゲットを利用して<変更されています>場合に更新ボタンを表示することに落ち着きました。ちゃんと判断できるかどうか、少ないサンプル数では確実と言えないですが、あくまで暫定措置として。

→ FileMaker <変更されています> 状態を取得する方法

バージョン

さて、編集はいいですが、いや、よくない。大事なオリジナルをおいそれと編集してしまっては取り返しが付きません。そこでこうしました。

「バージョン」という機能を追加しました。現時点ではテスト的な実装と考えてください。

というのも、バージョンの意味や目的やあり方など、実は奥が深〜い代物で、生半可にはいかないとわかっているからです。

今回実装したバージョンは、一言で言えば「複製」です。

複製

すでにレコードに登録済みのメディアファイル、これを複製します。同時に、レコードも複製というか追加されます。

格納

登録が参照であっても格納であっても、バージョンは常に「格納」になります。格納じゃない複製ならFinderで勝手にやればよろしいだけなので。

親子

バージョンというからには何か元のレコード(ファイル)のバージョンです。この元になるものを「親」、バージョンを「子」として登録します。バージョンは、複製であると同時に親子関係にあります。

今回の実装

今回はメニューに version を設けて、その中に実装しました。

新規バージョン

あるレコードのバージョンを作ったとき、そのレコードを表示すると、親である印が付き、同時に「このメディアの複製の子たち」を一覧できます。

バージョン 親の表示

あるレコードがバージョンであるとき、そのレコードを表示するとバージョンである印が付いており、同時に「このメディアの元となった親」を表示できます。

バージョン 子の表示

バージョンの印がついたレコードは、重要度が低くなります。弄くって失敗しても削除しても大きな問題にはなりません。

親の印がついたレコードは大事なオリジナルということになります。

このバージョンの機能、実はアップして更新しようと思った後で急に思いついて追加しました。なのでメニューのポップオーバーの扱いにしていますが、本来なら info パネルに含めるのがいいかもしれないですね。パネル増えるの厭ですが。パネルの話は以下に。

インターフェイス

ある意味最も難しいインターフェイスデザインです。今回の改良で目指したのは、雑然とした状況の改善です。

画面はリスト表示で、インフォボタンによるパネルの表示・非表示が基本の形です。

 ボタンでパネル表示を切り替えます。

MediaDBv5 overview info off
MediaDBv5 overview インフォパネルなし
MediaDBv5 overview パネルあり

これまでは、このインフォパネル部分がごちゃごちゃで意味不明でした。何とかまとめてみたのが今回です。

info パネル

四つのパネルがあり、主な項目を general パネル に突っ込んでます。ノートタイプでも使えるよう高さに制約を課しているせいでどうしても少し詰め込み気味になります。

general パネル

MediaDBv5 gen panel 1-2
general パネル – 日付とコピーライトだけやむなく切り替え式

metadata パネル

ExifTool でゲットしたメタデータは metadata パネルで一覧。ポップアップや検索窓で素早くフィルタできます。さらに、編集まで出来るという無茶ぶりです。

MediaDBv5 meta panel
メタデータパネル

ここで変更したものは、あくまでレコード上での変更でオリジナルファイルには変更ありません。歯車ボタンで「埋め込む」ことも可能です。

メタデータを埋め込むと、普通はファイル変更日付も変わってしまいますが、ここでは維持したまま埋め込むことが出来ます。ExifTool のオプションいろいろできます。

パスの確認

管理上必要なパス情報はパスパネルに集約。ファイル名、パス、フォルダ、いろいろ確認します。

MediaDBv5 path panel
パスの確認

4つめのパネル

この後がちょっと変わり種です。4つめのパネルは、実は複数あります。

type が image なら GPSを表示、video ならスクリーンショット撮影準備パネルです。複数のスライドパネルを用意しておいて、ボタンだけフレキシブルに命令を変更しています。

現状はこの二つしかありませんが、今後、ファイルタイプに応じて専用の機能や表示を追加していける案配です。

MediaDBv5 panel4
フレキシブルな4つめのパネル

 

プレビュー

リストのアイコン部分をダブルクリックしてプレビューを開きます。プレビュー画面の雑なデザインを見直しました。インフォパネルを同じように表示することで違和感なくなりました。元のレイアウトでインフォパネルを表示していない場合はプレビューも全画面になります。

個人的にどうしても実現したいのが「ダブルクリックでプレビューが閉じる」です。一覧からダブルクリックでプレビュー、プレビューダブルクリックで戻る。これすら出来ない管理アプリが多くてうんざりしている私やあなたのためにある仕掛けです。

ただしムービープレイヤーが表示されているときはそれが無理なので妥協中。

MediaDBv5 preview
preview はウインドウサイズにぴったりフィット

 

初期設定画面

以前のバージョンまでのごちゃごちゃ感を少しでも軽減するため、いちびって初期設定画面みたいなのを作りました。

訳註: いちびる = 調子に乗る、悪ふざけする、格好を付ける

初期設定画面

基本的なアイコンを変更したり、拡張子の採用・除外管理、「このアプリで開く」メニューに入るアプリケーションリストなどを作っておけます。

MediaDBv5 systemOpen
システム設定を開くのはこういう歯車の場所にあります

以前までは、インフォパネルと設定パネルとメニューみたいなのが混在していてうんざりしてましたが少しましになったでしょうか。

コマンドメニュー

そういえばユーティリティ的なコマンドのメニューもこれまでは煩雑でした。これは今でも煩雑です。

MediaDBv5 headMenu
上部のメニュー

いくつかは主要なものは上部にまとめていますが、細かいコマンドメニューが他にも結構あって、そいういうのはまとめきらずに各所に歯車ボタンとして配置。ちょっとこういうのはどうかなと思いつつ、どうにもなっていません。

MediaDBv5 歯車
各所の歯車

MediaDBをダウンロードして、レイアウトを眺めたらバレますが、メニューをまとめようとして苦労した形跡もこっそり残ってます💦

表層編

FileMaker メディア管理 Ver 5 でした。いつもと趣向を変え、仕組みなどをくどくど説明せず表層的なことをさらっと流しました。さらっと流したのは、細かく書き出したら永遠に終わらないほどの知恵と工夫に満ちているからです(笑)

細かく技術的な話は気が向けば個別に別ポストでいきます。記事がアップされたらこのページにもリンク付けるなり何なり、都度、改変していく予定です。

ますます磨きが掛かってきた FileMaker Media管理。ぜひダウンロードしてお試しください。失敗してるところや間違いや改善ネタがあればご連絡ください。

 

ダウンロードできます(Mac用)
Download FM_MediaDB_V5.zip

 

【免責事項】

このファイルは素人が奮闘しながら作って育てているFileMaker書類です。どこにどんな失敗が潜んでいるやもしれません。くれぐれも大事なオリジナルファイルを直接扱ったりしないでください。危険すぎます。オリジナルを守り、テスト的に使用していただければありがたいです。

 

コメント

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