クリエイター手抜きプロジェクト[434]Adobe Premiere編 Adobe Premiereと「踊る人形」/古籏一浩

投稿:  著者:  読了時間:8分(本文:約3,700文字)


シャーロックホームズと言えば、有名すぎるほど有名な探偵小説の主人公です。そんなシャーロックホームズの話の中に「踊る人形」があります。シャーロックホームズは全部読んだわけではありませんが、大変好きな話です。「踊る人形」は青空文庫でも読むことができます。

< https://ja.wikipedia.org/wiki/踊る人形 >
< http://www.aozora.gr.jp/cards/000009/card50713.html >
< http://www.alz.jp/221b/holmes/danc.html >

「踊る人形」は暗号を解く話です。暗号といっても複雑なものではなく、人形一つが、アルファベットの一文字に対応するというシンプルなものです。ただ、その暗号をどのようにして解読していくのか、その手順が好きでした。

ところで、Adobe Premiereと「踊る人形」に何の関係があるのかというと、今まさに暗号を解いているような状態になっているからです。


Adobe PremiereはJavaScriptを使って自動化することができます。しかし、困ったことに公式のドキュメントがひとつもありません。また、非公式のものもなく、検索すると自分のページが出て来るという、ナントモな状態になっています。

仕事の都合上、Adobe Premiereを制御するための命令を調べないといけません。問題は、どうやってオブジェクトやプロパティ、メソッドを調べていくかということです。

そこで、ふと思い出したのがシャーロックホームズの「踊る人形」でした。基本的に人間が作ったものであれば解けるはず、という信念のもとにやるしかありません。

さすがにシャーロックホームズのようにはいきませんが、Adobe Premiereを自動制御する際に必要なオブジェクトやメソッドなどを、どのように調べているのか書いてみます。参考になるかどうかは分かりませんが。

まず、Adobe Premiereは映像編集を行うアプリケーションです。映像系と言えば、After Effectsがあります。同じAdobe社から出ていますので、単純に考えればAfter Effectsのオブジェクト構成や機能と似ているに違いありません。

オブジェクト構成については、簡単に調べることができます。開発ツールであるESTK(Extend Script Toolkit)を使えば、オブジェクト階層とメソッド名、プロパティ名が分かります。

どうも、Adobe PremiereとAfter Effectsでは、かなり階層構造も異なるようです。機能の違うアプリケーションなので、当然と言えば当然かもしれません。ESTKを使えばプロパティ名の値も分かりますので、これに関しては解析する必要すらありません。

ここまでは、暗号を解くようなことはまったくなく、誰でもできます。問題はメソッドです。

例えば、importFiles() というメソッドがあります。名前からすると、ファイルをプロジェクトにインポート(読み込む)するメソッドのようです。

Filesのように複数形になっているので、複数のファイルをまとめて読み込むことができると思われます。問題はこのメソッドのパラメーターは何を指定すればよいのか、ということです。

実は、ESTKではどんなパラメーターを指定すればよいかがわかりません。プロパティの値は分かっても、メソッドのパラメーターが記載されていないのです。片手落ちのような気もしますが、ないものはないのでどうしようもありません。

そこで、シャーロックホームズの「踊る人形」のように、地道に探っていくことになります。

まず最初にやることは、Adobe PremiereとimportFilesのキーワードで検索することです。検索するといくつかヒットします。

フォーラムにあるようで、見るとimportFiles([File("パス")])のようになっています。パスはファイルのディスク上の場所を示します。[〜]で囲まれているので、これは配列です。

複数のファイルを読み込む場合、JavaScriptではいくつかの方法があります。ひとつは読み込むファイルの数だけ、importFiles() のパラメーターとして指定する方法です。

これが、正しいかどうかはすぐに分かります。ESTKではパラメーターの数が合っていないとエラーを出してくれるからです。

二つ目は[〜]のように配列を使って指定する方法です。読み込むファイルの数だけ、配列要素としてパスを書くことになります。

三番目はJSON形式で指定する方法です。JSON形式はAdobe Premiere CC 2015から使用できます。しかし、importFilesはCS6からありますから、JSON形式ということはありません。

ということで、配列をパラメーターとして渡すことになります。検索して出てきたからといって、それが正しいとは限りません。

実際のところ [File(〜), File(〜)]となっていますが、File()はなくても動作します。パスを示す文字列だけで動作します。ただし、絶対パスでないと読み込まれません。

importFilesには、読み込みオプションがあるかもしれません。そこで二番目のパラメーターを指定してみます。あっさりとエラーになります。つまり、importFilesのパラメーターはひとつだけということが分かります。

次に、importFiles()で処理した結果が、どうなるか調べる必要があります。正常に動作すると、ESTKのJavaScriptコンソールに結果が表示されます。undefinedと表示されたら戻り値はないことになります。

importFilesは検索すれば出てくるのでよいのですが、ほとんどのメソッドは検索してもでてきません。このような場合、メソッド名を見て簡単に動きそうなものから手を付けます。

例えば、selectという名前のメソッドというのがあります。名前からしても項目を選択するメソッドに違いありません。どうして、そう言えるのかというと、selectという名前のメソッドは他のAdobe製品にも存在するからです。ただし、パラメーターがあるのか、ないのかという部分は調べないといけません。

まず、select() として実行すると問題なく動作します。ここでパラメーターを指定します。どんなパラメーターを指定すればよいかですが、最初に指定するパラメーターは決まっています。0、1、true、falseのいずれかです。

他にもnullがありますが、とりあえずこれらのパラメーターを指定して様子を見ます。指定すると、あっさりとエラーになります。

つまり、パラメーターはなさそうだと推測できます。決定できないのは、もしかしたら配列を指定するのかもしれないし、JSON形式かもしれません。

ただ、以下のようなコードにおいて項目を選択するというパターンでは、trueかfalseか、0か1くらいしか想定できません。

app.project.rootItem.children[1].select();

対象を選択するか、その際すでに選択されている項目をそのままにするかどうかといった程度です。決定的ではないが、90%間違いないだろうといったところです。完璧でなくても、分かる範囲からどんどんクリアすることで、知識がたまり、どのように書けばよいのかが分かってきます。


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

残念ながら、シャーロックホームズのように全部謎が解けるわけではありません。ここらへんは、やはり頭のいい人に解いてもらうのがよいかなと思います。この続きは夏休み明けにでも。

・Apple Watch(アップルウォッチ)使い方辞典
< http://www.openspc2.org/reibun/AppleWatch/2015/ >

・Photoshop自動化基本編
< http://www.amazon.co.jp/dp/B00W952JQW/ >

・Illustrator自動化基本編
< http://www.amazon.co.jp/dp/B00R5MZ1PA >

・Adobe JavaScriptリファレンス
< http://www.amazon.co.jp/dp/B00FZEK6J6/ >

・ExtendScript Toolkit(ESTK)基本編
< http://www.amazon.co.jp/dp/B00JUBQKKY/ >

・データビジュアライゼーションのためのD3.js徹底入門
< http://www.amazon.co.jp/dp/4797368861 >

・4K/ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/ >