Adobe Lightroom Classic CC 2019 SDK を使う

鳥写真の編集作業を自動化したい、ということでLightroomのプラグイン用SDKを調べてみた。

背景

鳥写真の選別や現像にAdobe Lightroom Classic (==デスクトップ版。クラウドじゃないほう)を使いはじめまして、大した加工は私にはできないのですがとにかく連写で失敗作を大量にとってしまうので枚数が多く、一方で個々の処理はほとんど定型という状況であります。スクリプト処理でなんか自動化する方法があるだろと思って調べたところ、プラグイン開発者向けのSDKがある模様。まずはこれの使い方を調べることにしました。

公式ページはこちらです。

ダウンロードはこちらから:中身はドキュメントとサンプルコード一式で特に開発用ツールは入ってないです。Lightroomのアイコンをクリックすると「Select an option」の欄に3つ表示されますが、3つともあったほうが良いです。

こちらに、少し前のバージョンで実際に使ってみた方のブログがありますが参考になります。(歴史あるソフトウェアのわりに) 現像工程の機能(Develop Control)がプラグインからいじれるようになったのは意外と最近とのこと。

ちなみにClassic CCでないクラウド版の自動化・拡張法については自分が使ってないこともあり全然わかりません。

Lightroom SDKの概要

Lightroomのプラグインというのは、あるきまったファイル・ディレクトリ構成を持ったLuaプログラムでして、その中からだとLuaのnamespaceもしくはclassとしてラップされたLightroomアプリケーションの機能を呼び出せるようになっています。

Lightroomの側からは「ファイル」「プラグインマネージャ」メニューで、プラグインファイルを収めた上記のディレクトリを登録します。

ドキュメントはLightroom SDK 8.0 SDK Guideのほうが一般的なプラグイン開発ガイドで、lightroom-controller-sdk-guide_2019のほうが現像機能(Develop Controller)のガイドになります。どうやらもともとプラグインの用途としてExport / Publish機能の拡張 (主として現像後の画像をネットサービスに公開するためのプラグインを作るため)を想定しており、後に外部デバイス(ジョイスティックのような?)から写真の現像操作を行うプラグインの開発のためにDevelop Controller SDKを付け足したようです。が、まあ当初の目的はともかく日常処理の自動化につかっても構わんだろうと思います。

自分で開発する分に関しては、Lightroom Classic CCの製品さえ持っていれば特に追加のツールやライセンス料やらはいらないようです。

ということさえ分かっていればサンプルとドキュメントの内容は分かると思われる。

知見 (またの名をハマりどころ)

SDKドキュメントのサンプル及びgetting startedは最後の方にある。現像操作のapiはDevelop Control SDKという別のドキュメントを参照。クラスやネームスペースが違うだけでプラグインとしては同じ仕組み。

現像パラメーターの一覧はAPIドキュメントLrDevelopControlのはコンプリートではない。特に切り抜き(cropping)関連が載っていない。LrPhotoの方が全て載っているが将来の互換性は保証されないとの事でLrPhotoのインスタンスobjに対してobj:getDevelopControlSettings()で得られるテーブルのキーを列挙し、UIと見比べて特定するのが確実。

同様にパラメーターの有効範囲も実際の値を前記APIで表示するか、LrDevelopControl.getRange()で確認するのが確実。UI表記と単位が異なる事がある。一般的に浮動小数点かboolean。整数だと思いこんでてハマった。
ちなみに切り抜き関連はCropTop,CropBottom,CropLeft,CropRightで範囲は0-1。

LrPhotoインスタンスはLrApplication.activeCatalog()の戻り値のLrCatalogインスタンスに対してcatalog:targetPhoto()などで取得できる。どれか写真が選択状態であること。

プラグインが提供するメニューはinfo.luaで指定するが、ファイル、ライブラリ、ヘルプ、の中のプラグインエクストラの中に追加される。現像モードではライブラリメニューは表示されないのでLrDevelopControlを使うプラグインは別のメニューに登録する事。

今後

ちょっと気になることに、Creative SDKがディスコンになることが発表されていました。こちらで紹介しているLightroom Classic CC SDKが影響を受けるという意味ではないと読んだのですが、クラウドアプリケーションの事も考えると今後SDKに何らかの大きい変更があるかもしれないですね。Adobeの開発者コミュニティから縁遠かったので今後調べてみたいと思います。

まとめ

いかがでしたか。浅く調べてみましたがわからないことだらけですね!


この記事が気に入ったらサポートをしてみませんか?