FileMakerでメディア管理システムを作る話

FileMakerで画像管理データベースや動画管理データベース、即ちメディア管理システムを作ってみましょう。

FileMakerで画像・動画データベース

画像管理のアプリケーションを探し求めて試用しまくり、どれにも満足できないとき「自分でアプリケーションを作れたらなあ」とよく思います。ですがスキルがないので何もできません。

でも待てよ。結局画像管理のデータベースがほしいだけだろ?ならFileMakerで作ってみればいいじゃないか。と、思ったりしますので、さっそく試しましょう。

実は遙か昔に同じことを考えたことがありました。FileMakerで会計システムを作ろうとしたり画像管理システムを作ろうとしたりしていました。でも当時のFileMakerはリレーション機能もないし、そもそもパソコンで画像を扱うこと自体が重く大変で、しかもHyperCardで絵本を作るくらいしかできないぼんくらスキルではどうにもなりません。とうてい使い物になるようなものは出来ず、それ以降完全に諦めていました。でも今ならコンピュータも速いしストレージ容量たっぷりあるしFileMakerの機能も豊富だから割といいものができるかもしれない、スキルはともかく、と、そう思って再チャレンジするのです。

FileMakerのメディア機能

FileMakerには画像や動画などメディアファイルを扱える機能があります。

まず画像を取り込めます。取り込んだ画像を指定したフォルダに格納したり、そもそも取り込まず「参照」して表示できたりします。動画プレイヤーが内蔵されていて動画を再生することもできます。

リレーションもポータルもありますから、表示上の工夫も若干できます。ただし、世にある画像管理のアプリみたいに、レコードをタイル状に配置して表示することはできません(無理矢理できなくもないですが無理矢理すぎで却下)

画像管理ソフトのサムネイル表示
このようなタイル状の表示はFileMakerではできません

FileMakerにポータル機能がついたとき「いつかポータルを横方向やタイル状に並べたりできるようになるに違いない」と思いましたがなりませんでした。

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

FileMakerで作ったメディア管理の例
FileMakerで作ったリスト中心のメディア管理の例

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

Apertureのリスト表示
Apertureのリスト表示

 

FileMakerではメディアに関する関数も用意されています。ですがこれは期待していたより貧弱でした。とくに映像に関しては弱いですし、ファイルそのものから取得できる情報も少ないです。もうちょっと何とかなってくれればなあと正直思いましたが。

では実際に機能を見ながらやっていきます。この記事はFileMakerでWordPressを扱うという意図で、WordPressの話が後でメインになりますが、とりあえずは汎用的にFileMakerでメディアを扱うということで続けます。

注 という感じで書き始めましたがWordPressまでは届きませんでした。普通にFileMakerだけの記事になりました。

メディアのインポート、挿入、参照

メディアを扱うためにデータベーステーブルを一つ作成してフィールドを用意します。画像や動画はオブジェクトタイプのフィールドに格納しますので、ファイル名、ファイルパスなどのテキストフィールドと共に、オブジェクトタイプの例えば「イメージ」とか「サムネイル」とかそういうフィールドを用意しておきます。

オブジェクトタイプのフィールド

オブジェクトタイプのフィールドには画像や動画やPDFやファイルやさまざまなオブジェクトを格納できます。

ちょっとつまずくポイントは、その表示の制御が二種類あるってところです。

レイアウトモードでオブジェクトタイプのフィールドを選択しインスペクタを確認するとこういうのがあります。

データの書式設定
データの書式設定

「次の用途に最適化」でイメージとインタラクティブコンテンツ、どちらかを選択するようになっています。この選択によって、メディアを挿入するときの挙動が変わってしまうのです。まずここにこういう設定があるということを抑えておきましょう。

挿入メニュー

さて、メディアを取り込むいくつかの方法があります。

まずは「挿入」メニューです。オブジェクトフィールドを選択して挿入を選ぶとさらに「ピクチャ」「ファイル」グレーアウトと選択肢があるので選びます。

挿入メニュー
挿入メニュー

あれれ?グレーアウト?何で何で?それは先ほどの書式設定のせいです。

書式設定でイメージを選択しているとビデオがグレーアウトします。インタラクティブコンテンツを選択するとすべての項目が選べます。

書式設定が「イメージ」だと、フィールドにはファイルのアイコンが登録されます。単にファイルとして挿入されたというわけです。

書式設定が「インタラクティブコンテンツ」だと、メディアプレーヤーが内容を表示してくれます。

FileMaker内蔵ムービープレイヤー
内蔵ムービープレイヤー

参照と取り込み場所

「挿入」メニューからダイアログで目的ファイルを選択すると、ダイアログの下方に参照するかどうかのチェックボックスがありますので、データを取り込まず参照したいだけのときはチェックを入れます。

チェック項目 - 参照データの保存
チェック項目 – 参照データの保存

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

フィールドオプション
フィールドオプション

オブジェクトフィールドのオプション、データの格納タブに保存場所を指定する欄があります。ここで保存場所をセットできます。セットしないとFileMakerの書類の内部に格納されてしまいファイルサイズが膨れあがるので注意。保存場所はデフォルトで「そのFileMakerファイルと同階層以下」の場所になってます。わかりやすくていいですけど。ぜんぜん違う場所に保存したい場合はここではなく別のところから設定し直します。

ややこしいですね。別のところとは、ファイルメニュー>管理>オブジェクトです。

オブジェクトの管理ウインドウ
オブジェクトの管理

ここで新規に場所を作り、改めてデータベース管理から設定し直すことになります。

「参照」でないときは、このように保存フォルダを指定しましょう。

フィールドオプションに「セキュア格納」「オープン格納」という選択肢がありますが、普通にファイルとして扱いたいならオープンで格納します。

他にドラッグドラッグで挿入もできます。フィールドにドラッグして挿入した場合、参照ではなく取り込みになります。ファイルサイズが大きいことが想定されるムービーファイルは参照になるようです。

 

フォルダをインポート

さて再びメディアを取り込む方法に戻りますが、挿入以外にもその方法があります。それはフォルダのインポートです。

挿入メニューではフィールドを選んで一つずつ取り込みますが、フォルダごとまとめて取り込むことも出来ます。

ファイル>レコードのインポートからさらに「フォルダ…」と進みます。

インポートメニュー
インポートメニュー

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

インポートオプション
インポートオプション

続行すると、通常のインポート画面に切り替わりますので、どのフィールドに何をインポートするのか選んであげます。

インポート画面ではあらかじめ「イメージ」「ファイル名」「ファイルパス」「イメージのサムネール」という項目が用意されていて、対応するフィールドがあればこれらを取り込めます。この画面を最初見たときは「へえ」と少し驚きました。

インポート画面

というふうにメディアファイルをフォルダごとレコードに追加できるという方法でした。

さてこうして画像などメディアを含めたレコードが作成され、データベースができあがりました。あとはレイアウトを作ってこのデータベースをさらにブラッシュアップしていきます。

していきますが、そのときどういうフィールドが必要か、どういうレイアウトが必要か、そんなのは人それぞれです。勝手に好きなように濃厚なデータベースシステムを作りましょう。

関数

とはいえ、いくつか汎用的な事柄ってのもありますので、自分のためのメモを兼ねていくつか。

フォルダインポートで登録したのならいいのですが挿入で登録したレコードにはファイル名やパスがありませんのでこれを自動で入力させたいですね。

フォルダインポートを利用していない場合、サムネイルを作ったりもしたいですか。

FileMakerの独自なファイルパスの書き方を一般的なUNIXの書き方に変更したい場合もあるでしょう。

パスの/を改行に置き換えてフォルダを取得できたりもします。

それらは計算式や関数を使います。

GetThumbnail

イメージからサムネイルを作成する関数です。

GetThumbnail (ソースフィールド ; 幅に合わせる ; 高さに合わせる)

こんなふうに使うようです。指定サイズ、または幅や高さに合わせたサイズで作成できます。

GetContainerAttribute

オブジェクト関数のGetContainerAttributeは、いくつかのファイルメタデータを取得できます。

GetContainerAttribute (フィールド ; 属性名)

このように書きます。ファイル名を取得するのは例えばこんな感じ。

GetContainerAttribute ( イメージ ; “filename” )

取得できる属性は、ファイル名、ファイルサイズ、イメージだと幅や高さやDPI、写真なら写真の向きに関するメタデータやタイムスタンプなど、いくつかあります。詳しくはファイルメーカーリファレンスを検索して確認してください。もうちょっと取得できるメタデータが多ければいいのになあ。

GetAsText

テキスト関数のGetAsTextがちょっと侮れません。外部に保存されたオブジェクトフィールドを指定すればファイル名、ピクセルサイズ、種類、パスみたいのを取得できます。ちょっとこの関数は指定するフィールドによって返すテキストが異なりますから使用するのがちょっぴり難しいのですが、ヘルプによると

外部に保存されたオブジェクトデータでは、データは次の例にある書式で返されます:
GetAsText (オブジェクト) は、次を返します。
remote:cat.jpg
size:320,240
JPEG:Images/Animals/cat.jpg

ということです。

これを実際に使用するときは、計算式が複雑になります。いつも3行を返すとは限らないし、「?」の場合もあるし、オブジェクトによっていろいろ変化します。それに項目名みたいな表示がセットされてますね。「remote:」とか「size:」とか、実際の運用上こうしたテキストを除外したいことが多いでしょうし、ピンポイントで例えばパスだけを得たいとかあると思います。

だから、計算式でGetAsTextを使うときは、検索置換を行うSubstitute、検索文字列が含まれるかどうかを調べるPatternCount、改行が含まれるテキストの何行目かを指定するGetValue、フィールド内容が何行あるのかも示すValueCount、こういった関数を巧みに組み合わせて目的のデータ内容を得ることになります。頭混乱しますがこれによりパスやファイルタイプをピンポイントで得ることも可能になります。

置換を使ってFileMaker流儀のパスの冒頭をUNIXふうに変更したりもできますし「/」を「¶」に置換して改行してあげてフォルダ名として取得したりできますし、その他関数の組み合わせでいろいろできます。私こういうの考えるのがとても苦手なのですが。

レイアウト

FileMakerの個性的なところはレイアウト中心であるところです。レイアウトとテーブルオカレンスが一体となる概念の理解が難しい点でもありますが。

セルフポータル

FileMaker Pro 17から(でしたっけ?)セルフポータルの機能が追加されました。リレーション設定を作る必要なく、自己データをポータルとして表示できる機能です。要は画面内にリスト表示を含めることができる機能で、これにより飛躍的にレイアウトの性能が上がりました。リスト表示とメイン画面のレイアウトをそれぞれ用意して切り替えなければならなかったこれまでのレイアウト作法を完全に過去のものにしましたね。

じつはこのセルフポータル機能が追加されたことで、これまでやりたくても出来なかったレイアウトデザインが可能になり、既存ファイルを大幅更新したり、新たに何か作ってみたりするようになりました。メディア管理もそういった中で作ってみようと思えるようになったというわけです。

リストを画面内に配置することが出来るようになったのが実に大きい

カード表示

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

window style: card
カード表示

FileMakerのレイアウトデザインを行う中でちょっとした欠点はウェブブラウザのような「戻る」機能がなく、それを実装するのがとても難しいところです。にもかかわらず、レイアウト内でレコード移動や検索、絞り込みなどして他のレコードを参照することは頻繁にあります。元の状態に戻ることができないので都度不便を感じていました。

そんなわけで、一時的に参照したり表示したいとき、これまでは新規ウインドウでやっていましたがこれにカード表示が加わってより小気味よく行うことができるようになりました。

メディア管理ではプレビュー表示でも活躍するんです。

スライドアニメーション

その他、地味に気に入っているのがスライド機能です。タブとスライドは目的も機能も同じようなものなのですが、スライドでは切り替え時にアニメーションを設定できます。ぬるっと切り替わります。こういうのはユーザー体験的に大事なんですよ。アニメーション機能はレコード移動やその他、いろんな切り替え時にもぜひ実装してほしいです。

FileMakerによるメディアカタログは使い物になるか

なります。

付随する情報を好きなだけ付け加えられますし、関連するデータベースとの接続もできますし、メディア管理システムとしてかなり強力なものができます。

ただしメディアそのものの表示の弱さ、メタデータ取得の弱さ、それからファイル操作をはじめFileMakerであること自体の機能の制約はもちろんあります。プラグインで画像レタッチやHandBrakeないんかいとかあらぬことを望んだり、扱えるファイルタイプ少なすぎるやろとか、欲ばかり出てきますがキリがありません。

ペンギンアイコン mini

ということで、この記事は最初WordPressのアップロードした画像を管理する話を書こうとしていたんですが、枕としてFileMakerのオブジェクト機能について書いているとすっかり長くなりましたのでここで一旦締めることにします。WPでの使用実践編はまた別の記事にいたします。

その前に FileMakerでメディア管理システムを作る話 2 を書いてしまいました。ここでざっくり書いたことをもうちょっと丁寧に仕切り直しましたので興味ある方はどうぞ。

広告
FileMakerでメディア管理
カテゴリーFileMaker
このエントリーをはてなブックマークに追加

コメントを残す

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