FileMakerで画像管理データベースや動画管理データベース、即ちメディア管理システムを作ってみましょう。
このページ内の見出し
FileMakerで画像・動画データベース
画像管理のアプリケーションを探し求めて試用しまくり、どれにも満足できないとき「自分でアプリケーションを作れたらなあ」とよく思います。ですがスキルがないので何もできません。
でも待てよ。結局画像管理のデータベースがほしいだけだろ?ならFileMakerで作ってみればいいじゃないか。と、思ったりしますので、さっそく試しましょう。
実は遙か昔に同じことを考えたことがありました。FileMakerで会計システムを作ろうとしたり画像管理システムを作ろうとしたりしていました。でも当時のFileMakerはリレーション機能もないし、そもそもパソコンで画像を扱うこと自体が重くて大変で、しかもHyperCardで絵本を作るくらいしかできないぼんくらスキルではどうにもなりません。とうてい使い物になるようなものは出来ず、それ以降完全に諦めていました。でも今ならハードウェアも進化したしもしかして割といいものができるかもしれない、スキルはともかく、と、そう思って再チャレンジするのです。
上の段落で言いたいことは、当ブログの一連の記事はFileMakerのエキスパートのプロフェッショナルによるご高説の解説でも講演でもなく、デジタル部活の身の丈の活動ということです。たまに間違いもあるし変なことを言うかもしれません。そのときは、アドバイスをお願いします。
FileMakerのメディア機能
FileMakerには画像や動画などメディアファイルを扱える機能があります。
まず画像やメディアを取り込めます。読み込んだ画像を指定したフォルダに格納したり、そもそも取り込まず「参照」して管理できたりします。動画プレイヤーが内蔵されていて動画を再生することもできますし、PDFも表示できます。
扱えるファイルタイプはさほど多くありません。Photoshop psd の扱いに不埒もありますし、MacではOSが上る度に再生できる動画の種類がどんどん減っていきます。
FileMakerはグラフィックソフトかというくらいレイアウト画面を作り込めますから、デザインの工夫もできます。これがあるからFileMakerでものを作るのが楽しいんです。ただし、世にある普通の画像管理のアプリみたいに、レコードをタイル状に配置して表示することはできません(無理矢理できなくもないですがレコードの表示機能としては用意されていません ※ )

FileMakerにポータル機能がついたとき「いつかポータルを横方向やタイル状に並べたりできるようになるに違いない」と思いましたがなりませんでした。
サムネイルを並べたかっこいい見た目は難しいですが、そのかわりデータベースソフトならではの、数多のフィールドを作って縦横無尽に絞り込んだり他と連携させて活用させるシステムは作れます。これこそが一般の画像管理ソフトで不満のある部分なのでFileMakerを利用する大きなメリットとなるでしょう。

そもそも史上最高峰画像管理アプリApertureではリスト表示も出来るのでして、他の画像管理アプリでこれができるのも少ない。「リスト表示させろや」と凄んでいましたがFileMakerで作れるのがまさにそのリスト表示じゃありませんか。これってむしろ理想じゃね?

※ サムネイル画像をタイル状に並べるビューについての追記
過去、レコードをタイル状に並べる工夫がいろいろ試されてきました。ポータルを無茶利用したり、近年はWebビューアを使用したりと、無理矢理な工夫が見られました。私はこうしたナンチャッテ表示について興味がなく知らなかったんですが、実はWebビューアを使用したタイルビューはかなり使い物になることがわかりました。それで試しに作ってみたところなかなかイケてることが確認できまして、それについて投稿しました。こちらです。
※ このサムネイルの記事は、FileMaker v17 の時点で書いたもので、しかも思いつきで作ったファイルの話になりますので、稚拙な上に分かりにくいことになっているかもしれません。いつかパワーアップさせて書き直します。
FileMakerではメディアのメタデータを取得する関数も用意されています。使用目的によっては十分なデータを得られます。ですが私個人は期待していたより貧弱と思えました。
FileMakerでメディア管理 メタデータの取得 でメタデータの取得について触れています。
実はこの投稿、当初FileMakerでWordPressを扱うという意図で書き始めましたが、FileMakerだけで内容が濃すぎて WordPress の話まで届きませんでした。WordPressのメディア管理はまた別口で用意します。
用意しました → FileMakerでWordPressメディア管理
メディアのインポート、挿入、参照
メディアを扱うためにデータベーステーブルを一つ作成してフィールドを用意します。何をさておいても画像や動画を収めるメインのフィールドが必要ですね。オブジェクトタイプで作成します。
オブジェクトタイプのフィールド
オブジェクトタイプのフィールドには画像や動画やPDFやファイル、さまざまなオブジェクトを格納できます。
ちょっとつまずくポイントは、その表示の制御が二種類あるってところです。
レイアウトモードでオブジェクトタイプのフィールドを選択しインスペクタを確認するとこういうのがあります。

「次の用途に最適化」でイメージとインタラクティブコンテンツ、どちらかを選択するようになっています。この選択によって、見た目だけでなくメディアを挿入するときの挙動が変わってしまうのです。まずここにこういう設定があるということを抑えておきましょう。
さて、メディアを取り込むいくつかの方法があります。
挿入メニューから挿入
まずは「挿入」メニューです。オブジェクトフィールドを選択して挿入を選ぶとさらに「ピクチャ」「ファイル」それからグレーアウトと選択肢があるので選びます。

あれれ?グレーアウト?何で何で?それは先ほどの書式設定のせいです。
書式設定で「イメージ」を選択しているとビデオがグレーアウトします。「インタラクティブコンテンツ」を選択するとすべての項目が選べます。
書式設定が「インタラクティブコンテンツ」だと、動画ではメディアプレーヤーが内容を表示してくれます。

参照と取り込み場所
「挿入」メニューからダイアログで目的ファイルを選択すると、ダイアログの下方に参照するかどうかのチェックボックスがありますので、データを取り込まず(複製せず)参照にしたい場合はチェックを入れます。参照にするとファイルは元の場所に留まりFileMakerではその場所だけを記録し、管理します。

参照しないときはFileMakerのどこに取り込まれるのでしょう。それを司るのがフィールド定義のオプションです。

オブジェクトフィールドのオプション、データの格納タブに保存場所を指定する欄があります。ここで保存場所をセットできます。セットしないとFileMakerの書類の内部に格納されてしまいファイルサイズが膨れあがるので注意。保存場所はデフォルトの場所以下の設定したフォルダになります。「保存先」と書かれた横のポップアップに示された階層ありますよね。それがデフォルトの格納場所で、外には出られません。
デフォルトの格納場所を変更したい場合はここではなく別のところから設定し直します。ややこしいですね。別のところとは、ファイルメニュー > 管理 > オブジェクト… です。

ここで新規に場所を作り、改めてデータベース管理から設定し直すことになります。しかしここでも[データベースの場所]からは逃れられません。格納場所は常にデータベースファイルのある階層ですか。
そうでもなさそうですね。ここで好きなマスターライブラリの場所を指定できます。
さて、フィールド定義のオプションに「セキュア格納」「オープン格納」という選択肢がありますが、普通にファイルとして扱いたいならオープンで格納します。
ドラッグドロップによる読み込み
読み込み方法についての話に戻ります。
オブジェクトフィールドにドラッグドロップしてもメディアを読み込むことが出来ます。気軽に取り込める方法ですが、無条件に格納として読み込まれ、参照を選べません。ドロップしたものがムービーファイルの場合は無条件に参照になるようです※1。ドロップしたとき、こちらには格納方法を選択する権利が与えられていません。この仕様はちょっぴり残念ですね。
ちなみにApertureでは、オプション+コマンドを押しながらドラッグすると参照で読み込まれます。さすがにこういう機能は無理か。トリガー使ったらできるのかな。
※1 バージョンが上がる度に劣化してぷんぷんしていますが、ドラッグドロップによる読み込みがバージョン17くらい以降、使い物にならなくなりました。
以前は、オブジェクトフィールドにドラッグすると「画像なら挿入、動画なら参照」になりました。その機能が失われ「サイズが大きいから挿入できません」とエラーで突き放されるようになりました。エラー処理も効かず、手も足も出ません。ドラッグドロップについては他の事象(ウェブビューアへのドラドロ)も含め、劣化の一途を辿っており酷い有様で、使い物にならなくなりました。
自作のメディア管理を作るとき、オブジェクトフィールドへのドラッグドロップによる登録は避けるのが賢明です。
フォルダをインポート
さてメディアを取り込む方法、挿入メニュー、ドラッグ、どちらも一つのレコードにひとつのメディアを登録するだけです。まとめてごっそり登録できないのでしょうか。できます。それはフォルダのインポートです。フォルダごとまとめて読み込むことが出来ます。
ファイル > レコードのインポートからさらに「フォルダ…」と進みます。

そうすると、フォルダの一括インポートオプションが出てきます。フォルダを指定し、読み込み方法、下位フォルダを含めるかどうか、そういうのを設定します。

続行すると、通常のインポート画面に切り替わりますので、どのフィールドに何をインポートするのか選んであげます。
インポート画面ではあらかじめ「イメージ」「ファイル名」「ファイルパス」「イメージのサムネール」という項目が用意されていて、対応するフィールドがあればこれらを取り込めます。この画面を最初見たときは「へえ」と少し驚きました。
フォルダをインポートすると、ファイル名やファイルパスまで一緒に登録されます。これはとても有能ですね。フォルダインポートではない読み込みの場合、ファイル名もパスもサムネイルも自動で読み込まれませんから、それを作るための計算式かスクリプトを別途準備しておかねばなりません。
フォルダからのインポートはかなり使えます。これを読み込みのメインに据えることが望ましいかもしれません。
メディアファイルをフォルダごとレコードに追加できるという方法でした。
さてこうして画像などメディアを含めたレコードが作成され、データベースができあがりました。あとはレイアウトを作ってこのデータベースをさらにブラッシュアップしていきます。
していきますが、そのときどういうフィールドが必要か、どういうレイアウトが必要か、そんなのは人それぞれです。勝手に好きなように濃厚なデータベースシステムを作りましょう。
…それではそっけないので、ちょっとだけ触れておきます。
フィールド
メディア管理ですからオブジェクトタイプのメディアフィールドは必須ですね。それ以外に何が必要でしょうか。
ファイル名とファイルパス。特にパスは必須中の必須です。パスにはいろいろ種類があります。FileMakerの形式、POSIX、OSごとのデフォルトの書式、それらをどのように取得するのか、いろいろ計画が必要かもしれません。
サムネイルもあればいいですね。
ID。IDフィールドを用意することが重要です。連番でもuuidでも何でもいいですが、ユニークでレコードを特定できるプライマリーなキー、IDはシステム的に必須です。
メタデータ。メディアを管理するのだからメタデータがないと始まりません。ちょっとしたデータならFileMakerの関数で取得できます。もっと欲を出してがっつりメタデータを取得することも可能です。どういうメタデータを必要としているかがFMメディア管理の根幹を揺るがします。かんたんシンプルデータベースからデジタルアセットマネジメントと呼べる長大高機能システムまで、それは知恵と工夫とやる気と時間次第。
よく使う関数
フィールドの計算式やスクリプトの中で使う計算式です。
GetThumbnail
イメージからサムネイルを作成する関数です。
GetThumbnail (ソースフィールド ; 幅 ; 高さ)
こんなふうに使います。指定サイズ、または幅や高さに合わせたサイズで作成できます。
GetContainerAttribute
オブジェクト関数のGetContainerAttributeは、オブジェクトからメタデータを取得できます。
GetContainerAttribute (オブジェクトフィールド ; "属性名" )
このように書きます。属性名のところに、あらかじめ用意されている属性名をタイプします。
ファイル名を取得するのはこんな感じ。
GetContainerAttribute ( オブジェクトフィールド ; "filename" )
取得できる属性は、ファイル名、ファイルサイズ、イメージだと幅や高さやDPI、写真ならカメラ情報や写真の向きに関するメタデータやタイムスタンプなどいろいろあります。”all” ですべて取得できます。
詳しくはファイルメーカーリファレンスを検索して使える属性名を確認してください。用途によってはGetContainerAttribute さえあれば満足できるかもしれません。もしそうならFileMakerで作るメディア管理システムの完成は近いです。
満足できない場合は、さらなる高見を目指してExifToolをインストールしたりします。
GetAsText
テキスト関数のGetAsTextを使って、オブジェクトからファイル名、ピクセルサイズ、種類、パスなどを取得できる関数です。指定するフィールドによって返すテキストが異なりますから使用するのがちょっぴり難しいのですが、ヘルプによると
外部に保存されたオブジェクトデータでは、データは次の例にある書式で返されます:
GetAsText (オブジェクト) は、次を返します。
remote:cat.jpg
size:320,240
JPEG:Images/Animals/cat.jpg
ということです。
これを実際に使用するときは、計算式が少々複雑になります。結果の内容や行数がオブジェクトによって異なりますし、改行を含むテキストから必要なものを取り出す計算式とセットで使うことになるからです。
検索置換を行うSubstitute、検索文字列が含まれるかどうかを調べるPatternCount、改行が含まれるテキストの何行目かを指定するGetValue、フィールド内容が何行あるのかも示す ValueCount など、関数を巧みに組み合わせて目的のデータ内容を得ることになります。
GetAsText が必要とされるのはファイルパスの取得です。それ以外はGetContainerAttributeで取得できますから。パスは大抵最後の行に書かれています。
ということで、読み込んだ画像に関するいろいろなフィールドのデータは、GetContainerAttribute と GetAsText を使って自動入力できます。
FileMaker Pro v18 以降の便利な機能
バージョン18の新機能として、外部のファイル操作を可能にするスクリプトステップと関数が追加されたようです。ファイルの存在を確認したり、名前を変えたり捨てたりできます。18以降をお持ちならファイル操作もFileMakerの機能を使って行えますね。18未満のあなたや私はAppleScriptを駆使するしかありません。
FileMaker Pro v19 以降の便利な機能
v19 から、パスをFM形式に変換したりFM形式のパスをPOSIXに変更できる関数が追加されました。これまでは自作の変換関数を作っていましたが、簡単に実現できるようになりました。
もうひとつ、webビューアで javascriptが直接扱えるようになりました。上記サムネイルの記事はHTMLとFileMakerの関数だけで乗り切った記事ですが、いろいろ弱点もあります。いずれjavascriptを使ったやり方に更新するでしょう。多分。いつか。
レイアウト
FileMakerの個性的なところはレイアウト中心であるところです。レイアウトとテーブルオカレンスが一体となる概念の理解が難しい点でもありますが、レイアウトの何が楽しいってやっぱデザインで遊べるところですね。機能させることを忘れて見た目に没頭しすぎないよう注意します(←機能させることを忘れて見た目に没頭しすぎているらしい)
セルフポータル
FileMaker Pro 17から(でしたっけ?)セルフポータルの機能が追加されました。リレーション設定を作る必要なく、自己データをポータルとして表示できる機能です。要は画面内にリスト表示を含めることができる機能で、これにより飛躍的にレイアウトの性能が上がりました。リスト表示とメイン画面のレイアウトをそれぞれ用意して切り替えなければならなかったこれまでのレイアウト作法を完全に過去のものにしましたね。
じつはこのセルフポータル機能が追加されたことで、これまでやりたくても出来なかったレイアウトデザインが可能になり、既存ファイルを大幅更新したり、新たに何か作ってみたりするようになりました。メディア管理もそういった中で作ってみようと思えるようになったというわけです。

カード表示
もうひとつちょっとお気に入りはウインドウスタイルにカード表示が追加されたことです。これはFileMaker Pro 16くらいから実装されましたか?

FileMakerのレイアウトデザインを行う中でちょっとした欠点はウェブブラウザのような「戻る」機能がなく、それを実装するのがとても難しいところです。にもかかわらず、レイアウト内でレコード移動や検索、絞り込みなどして他のレコードを参照することは頻繁にあります。元の状態に戻ることができないので都度不便を感じていました。
そんなわけで、一時的に参照したり表示したいとき、これまでは新規ウインドウでやっていましたがこれにカード表示が加わってより小気味よく行うことができるようになりました。
メディア管理ではプレビュー表示でも活躍するんです。
スライドアニメーション
その他、地味に気に入っているのがスライド機能です。タブとスライドは目的も機能も同じようなものなのですが、スライドでは切り替え時にアニメーションを設定できます。ぬるっと切り替わります。こういうのはユーザー体験的に大事なんですよ。アニメーション機能はレコード移動やその他、いろんな切り替え時にもぜひ実装してほしいです。
FileMakerによるメディアカタログは使い物になるか
なります。
付随する情報を好きなだけ付け加えられますし、関連するデータベースとの接続もできますし、メディア管理システムとしてかなり強力なものができます。
ただしメディアそのものの表示の弱さ、メタデータ取得の弱さ、それからファイル操作をはじめFileMakerであること自体の機能の制約はもちろんあります。プラグインで画像レタッチやHandBrakeないんかいとかあらぬことを望んだり、扱えるファイルタイプ少なすぎるやろとか、欲ばかり出てきますがキリがありません。
上のメニューの通り、このポストはいくつかのページにまたがります。
次はフィールドについてさらりと。
実践
FileMakerで作るメディアカタログについて、ごちゃごちゃ書きまくったあげく、実際に基礎からファイルを作っていく試みを始めています。
実際にファイルを作って育てていく試み
これまでのことを踏まえて仕切り直し、基本の素の状態から実際にファイルを作成していく実作編です。バージョンごとにファイルをダウンロードできます。
FileMaker でメディア管理 に関する記事の一覧からもどうぞ。
ファイルメーカーは管理システムとしてかなり強力だが、メディアを表示する機能、拡大、縮小、スキップ機能など問題があると思い、このブログにたどり着きました。プラグインなどでそれを改善する方法はあるのでしょうか?
メディア表示、レコードのタイル表示、そういう機能は一切ないですよね。プラグインも多分実質ないに等しいと思います。近い将来そういう機能を実装するとも到底思えないですね。
(filemaker media plugin あるいは filemaker タイル表示 などで検索するとそれらしいのが出てきますが実践にはちょっと・・・という感じ)
ファイルメーカーはリスト表示とDB管理のみと割り切って、補助的に自動化やビューワアプリを併用する程度の対処で諦めています。