クリエイター手抜きプロジェクト[410]Mac編 Mac OS X YosemiteをJavaScriptで制御(3)/古籏一浩

投稿:  著者:  読了時間:9分(本文:約4,000文字)


今年最後のネタもOS X YosemiteのJavaScriptです。とりあえず、このネタはこれでおしまいです。

これまでOS X YosemiteのJavaScriptをテストしつつ、どうにか使えないかと挑戦してみましたが、結論から言うと「結構使えない」ということです。基本的にはAppleScriptベースなので、AppleScript未対応のアプリケーションはロクに制御できません、という事になります。

どの程度対応できているかは、簡単に調べることができます。スクリプトエディタのファイルメニューから「用語説明を開く...」を選択し、調べたいアプリケーションを指定します。すると、何が使えるかの一覧が表示されます。見ると、ほとんどのアプリケーションは最低限の対応しかしていないことがわかります。

自動化処理というのは、アプリケーション側が対応していないと大変辛いことになります。アプリケーションがスクリプト制御に対応していない場合は、キーマクロ(キーバッチ処理)やマウス操作を記録し、それで対処することになってしまうからです。

JXAの場合は、AppleScriptがキー入力をシミュレートしているため、以下のページにあるようにキーコンビネーションを利用してアプリを利用できます。

・コマンドキーやシフトキーなど修飾キーも同時に入力する
< http://www.openspc2.org/reibun/JXA/Yosemite/Application/Standard/key/0002/ >




とは言っても、すべてのメニュー項目がキーボードショートカットに対応しているわけではありません。また、キーで操作できない場合はどうしようもありません。

Adobe社のアプリケーションは古くからAppleScriptをサポートしていますが、OSから制御可能な機能は限定されています。このため、この連載で紹介してきたような機能を持つスクリプトを、JXAで実現するのは無理です。

それでも、Illustratorはかなり制御できる方ですが、プレミアやメディアエンコーダーはアプリケーションの起動はできるものの以後の制御ができなかったり、使い物になりません。

ただし、Adobe社のアプリケーションの場合、doScriptやdoscriptfileというAppleScriptから内部のJavaScriptを呼び出すことができるので、うまく連携できればどうにかなることもあります。

それではApple純正のアプリケーションならどうでしょう。Finderは最も対応しているアプリケーションです。ファイル処理などを行うのであれば欠かせません。また、メールとアドレス帳は結構、機能もありますし実用的な範囲で使えそうです。

テキストエディットは、ある程度制御できるものの機能一覧を見ると細かい機能が不足していて、使えそうで使えない場面が発生することがあるという感じです。ちなみにサードパーティー製のエディタであるJEditは結構AppleScritpに対応しているので、JXAでエディタ関連の処理を行うならJEdit Xを利用するのがよいでしょう。

他にもDVDプレイヤーとかiTunesとかFont Bookなども対応しているのですが、iTunesやFont Bookが自動化処理に貢献するか? というと、まずないでしょう。こういうアプリケーションの方が、JXA/AppleScriptに対応しているというのが何ともなところです。

ちなみに、新しいマップ(地図)のアプリケーションは思ったほど対応していませんでした。新しいアプリケーションは、より細かい制御ができるまでに時間がかかるのかもしれません(全く対応しない可能性もありますが。というか、その可能性の方が高いかも)。

頑張ってJXAでどうにかするよりも、既存のオートメーターで自動化できるなら、その方がいいでしょう。というより、無理してJXAでやる意味がないというのが実感です。

これはApple社が悪いというのも若干あるかもしれませんが、基本的にはアプリケーションが対応していなければ、どうしようもない領域です。

UNIXのシェルのように、データをパイプで繋いで連続して処理していけるようなら良いのですが、これをMac OS Xに求めるのは難しいでしょう。アプリケーションが処理するデータを、どこかに出力できる(現状ファイルしかない)ようになっていて、各アプリケーションの機能を利用できるのが理想的です。例えば

photoshop -filter "モザイク" sample.psd
→ illustrator -savetype ai "myfile.ai"
→ copy dropbox/

のように、Photoshopでsample.psdファイルを開いてモザイク処理をした後にIllustratorで、その結果をmyfile.aiで保存。その後、dropboxにコピーする、といった具合です。(なお、上記の→はデータがそちらに流れるというUNIXの|記号的なものを示しています。UNIXのパイプです)

このような処理はAdobe Bridgeを使えばできますが、ここにマップで特定の場所を表示し、それをキャプチャーした後にIllustratorに配置する、という処理を追加しようとすると面倒です。

様々なアプリケーションが絡むと、一連の処理が複雑になっていきます。特にエラー処理が絡むとかなり面倒な事になります。何かうまい一連の処理をやってくれるようなものがあればよいのですが。と思っていたら、こんな言語も出たようです。

・Streem
< https://github.com/matz/streem >
< http://www.softantenna.com/wp/software/streem/ >

アプリケーションの入力と出力の統制が取れていないMac OS X Yosemiteでは、自動処理に使うのは難しいかなあと思います。

15年近く自動化関連の原稿書いたりプログラムを書いたりしましたが、今のMac OS Xだとここらへんが限界じゃないかなと感じます。結局、いろいろ組み合わせないといけないので、ひとつの言語で全部自動化処理が書ける、というのは今後もないんじゃないかなと。

これまではUnix Shell + AppleScript + JavaScriptという3つの組み合わせだったのがUnix Shell + JavaScript(JXA) + JavaScriptにもできるようになったということです。

結局、今まで通りアプリケーションレベルでのプログラムを作成するしかなさそうです。

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

12月18日に「jQueryプラグイン逆引きハンドブック」が発売されます。都合により元々一冊だったのが、三冊に分冊されたうちの最後の一冊です。

・jQueryプラグイン逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541619/ >

本を書いているうちにAndroid Studio 1.0が出たので、いつものように使い方のページを用意しました。使用しているMacのOSや、引き継いだ環境によって違う部分がありますが、クリーンインストールした場合のみ説明しています。

・Android Studio 使い方辞典
< http://www.openspc2.org/reibun/Android_Studio/1.0/ >

今年は、これが最後ということなので定番の言葉で締めくくります。(でも、最後に何か一言あったような)←あります:編集部

「それでは、みなさんよいお年を」

・Mac : JavaScript for Automation(JXA)例文辞典
< http://www.openspc2.org/reibun/JXA/Yosemite/ >

・Nexus 9 (アンドロイドタブレット) 使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus9/ >

・Mac : OS X Yosemite使い方辞典(OS X ver 10.10)
< http://www.openspc2.org/reibun/MacOSX/Yosemite/ >

・jQuery+jQuery UI+jQuery Mobile逆引きハンドブック
< http://www.amazon.co.jp/dp/486354149X >

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

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

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

・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082 >

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

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< https://www.ddc.co.jp/estore/cgi/item/start.cgi?m=DetailViewer&record_id=243 >
吉田印刷所の「印刷の泉」でも購入できるようになりました。