仕事上、大量の画像を扱うことがあり、絵柄やメタ情報を確認する必要があります。
以前は”MediaPro”というMacの最強コンタクトシートアプリがありましたが、64ビット対応前にCapture Oneというソフトに統合されてしまったようです。
私はワガママユーザーなので、たまにしか使わないものにお金をかけたくないなということで、無料でなんとかしたい! できれば1円も払わずに済ませたい、という正直な気持ちでMacで使える代替アプリを探していました。
私の求めているものは、キリヌキが必要か(クリッピングパスの有無や背景が透明か)、カラースペースがなんなのかをいちいちPhotoshopを開かないでも確認したい、しかも無料で!というのが根底にありそれ以上の機能は求めていないので、有料のアプリでは自分の用途としては手に余ります。
Adobe Bridgeでもやりたいことは概ねできるのですが、コンタクトシートとして書き出すと、ファイル名以外のメタ情報を書き出せなかったり、背景が透明なのかクリッピングパスがあるかが確認できないのが少し物足りず…。試してないけどもしかしたら最新のBridgeならできるようになっているかもしれませんが。
InDesign上でドラッグアンドドロップ(グリッド配置)してササっと作るのがほぼやりたいことはできるし1番手っ取り早いけど、普段InDesignを立ち上げていないのでその一手間が面倒くさい。
また、”GraphicConverter”や”XnViewMP(個人利用なら無料のようです)”などもありますが有料なので…。
そこで近年のAIの進化を目の当たりにして重い腰を上げました。
ないなら自分で作っちゃおう!(AIに丸投げして)
前回、ほぼ構想通りにリネームアプリ(「AIにお願いしてリネームアプリを作ってもらいました」)を作れたことに味を占めて、これもPythonでできるのでは!? と閃きました。
実践
macOS 13.7.7、Pythonの実行環境はJupyterLab DesktopのMac版、Python 3.12.2
いつもInDesignで作っているコンタクトシート(pdf)を見本としてアップロードし作成開始です。



で、最初に生成したコードがこちら(素人のコードなので画像として掲載します)。
ブロックコメントを見てみると見本を元に出力サイズやグリッドのサイズ、フォントなどを見本に合わせたり表示できるファイル形式の指定なども設定してくれています。

まずはこのコードを実行してみました。

おおー素晴らしい(1発でそれらしいものが出来た!)、(冷静にみてみると)あー、画像のサイズに合わせて枠を入れちゃったのね、あとなんかファイル名も小さいな。
これなら調整していけば、求めているものが実装できそうだなと思えたので、さらに要望を伝えてみました(効果があるかはわからないけど第一声は褒めてみました)。


おー仕事が早い、褒めたことでさらにやる気になってくれてるのでは!?(褒めるの大事)
ファイル名自体のテキストデータは不要ですが、あとで追加予定のメタ情報はテキストデータとして使えた方がいいかなと思い、要望しましたがいらなかったかも。

まだ全ての要望を伝えていないのにこのコードの長さ。一抹の不安を覚えながら実行してみました。

うーん、ちょっと違うところがある。褒めが足りなかったか。

さらに微調整しながら会話を重ね、そろそろ本題(メタ情報表示、キリヌキ・透明の背景表示)に取り掛かります。

メタ情報の表示まではうまくいきました。

そしてここから長い旅(修正の繰り返し)が始まります。
クリッピングパスや透明の表示に大苦戦
クリッピングパス・透明に取り掛かる前に表示できるファイル形式を確認していなかったな、と思い確認してみました。

DTP用途だと⚠️のAIやEPS、PSDは必須だし、HEICなども今後さらに増えてくると思うので表示できるようにしてもらいました。
さらに検証を進めると、背景が透明のpngを表示させてみるとチャンネルごとに色がずれて表示されたり、レイヤーが統合されていない画像やレイヤーマスクのある画像の表示がおかしくなったり、epsの画像が枠からはみ出して表示されたりして何度修正してもなかなか改善できず、他のAIにコードをレビューしてもらったりしてやっとこれらを正確に表示できるようになりました(何時間費やしたかわからない)。
やっと完成かと思ったのも束の間、次はクリッピングパスが正確に表示されないのと、カラースペースが間違って表示されたりして絶望しました。
褒めるのもとっくに忘れて修正の繰り返し。内部的に合成をするからパスや透明が反映されなかったりするらしく(ファイル形式ごとに違う処理をしてるみたい)、ImageMagickというソフトウェアを追加することで解決できるものもありました。
最後まで解決できなかったのがeps形式のクリッピングパスやメタ情報の表示です。クリッピングパスが表示できると、今度は縦横のサイズが取得できなくなったりでChatGPTからも、最終的には『別の形式に変換した方がよいのでは』という方向の回答が返ってくる始末。
何度修正しても埒が空かなかったので、いったん実装を保留にしました。
時が経ち、GPT-5.4がリリースされ、今までのコードをレビューしてもらいながら改善をおこないましたがそれでもダメでした。
途方に暮れていましたが、もしやepsは古いフォーマットなので、現在参照しやすい技術情報が少なくなっているのでは!? AIにとっても、古いフォーマット特有の情報は扱いづらいのでは!? と思い、eps関連のリンクが切れているサイトのうち、Internet Archiveから閲覧できるサイトのテキストをChatGPTに渡してみたところ、いくらか改善がみえました。
完全に解決はできなかったものの、安定してクリッピングパスの表示はできるようになりました。
その代わりeps形式の縦横サイズと解像度が取得できないまま現在に至ります。ひとまずこの状態でGUI化、アプリ化することにしました。
アプリ化の際は前回(リネームアプリ)と同じく署名の問題や、Ghostscriptをどうするか、Mac版のアプリがダブルクリックで起動できなくなったりで苦戦しましたが、自分の用途ではなんとか実務で使えるレベルまで仕上げられたと思います。


これだけ苦労してInDesignのグリッド配置と大して変わらないんじゃ…、というのは無しでお願いします。
LLMの最新バージョンがアップデートされたら再度チャレンジしてみたいと思います。


