Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード Twitter

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2009-06-09

[]AppleScriptは難しい?

#とあるコミュニティで書いたもののまとめ。

AppleScriptが難しいという人がいる。まあ、そうかもしれないな、と思う。理由は2つある。

ひとつはよい書籍が(絶版などで)もうないこと。もうひとつはAppleScriptはDOMを専門に扱う言語だから。

書籍がないのはやはりnewerにはつらい。いくらネット上にたくさんの資料があったとしても、基礎からステップバイステップに学べることは大きいのだ。AppleScriptの偉人たちは、もう書籍を書くだけの気力を失ってしまっている。ユーザーはもうほとんど中級者で、読者として見込めない。

アプリケーションのDOM実装はエレガントなものから、吐き気がするものまである。また、アプリケーションが持つ機能をDOMに持たせようとすれば、凄まじい数に上るだろう。現に、InDesignのDOMは何万というオーダーでほとんど「もうひとつのInDesign」と呼んでもいいくらいだ。

JavaScriptも同様にDOMを(も)扱える言語だ。各種ブラウザの実装の違いの例を出すまでもなく、DOMを扱うと途端に泥臭くなる。

PerlRubyを盲目的に信仰する人もいる。それらに比べてAppleScriptがいかにダメかを力説したがる。けれど、PerlRubyでAppleEventをブリッジしてDOMを操作すればすぐにわかるはずだ。これはCrackなのだと。

DOMを触るということは「もうひとつの」アプリケーションを覚えるのと同じことだ。これは、DOMを操作する言語のすべての当てはまる。DOM障壁は一種の運命と言えるだろう。用語辞書からひとつひとつ丁寧に調べるしか、この壁を乗り越える道はない。それは初心者も上級者も同じことだ。


用語辞書にはすべてが書かれている。例えば、miで開いているhtmlをSafariで開いてすぐさま印刷したいなら、こんな感じに書ける。miやSafariのScriptingに精通していなくても、慣れている人にとってはそんなに難しいことでない*1

tell application "mi"
	set my_file to file of document 1
end tell
tell application "Safari"
	open my_file
	--Safariには「print settings」クラスがあるので、指定すれば自動印刷も可能になる。
	print document 1 with print dialog
end tell

AppleScriptの凋落ぶりを見て、「もう古い」「○○アプリケーションではもうメンテナンスモードだ」と囁く声が絶えない。ほんとうにそうだろうか? AppleScriptに代わる言語はまだない。JavaScriptはセキュリティに過敏すぎて手を出せない部分が多い。そのためにUNIXレイヤーさえ叩かせてもらえない。BridgeTalkは所詮限られたAdobeアプリケーション内のことだし、書き方に無理がありすぎる。AEを各言語にブリッジするようなAPIは、AppleScriptの変形であって、それ自体が独立した何かではない。

AppleScriptはなくならない。AppleScriptの理念は、OpenDocまで遡る。それはアプリケーションを関数とみなし、データ(コンテンツ)を操作するための道具として横断的に使用するという理念だ。そしてそれはある程度の成功を収めている。

普段はAdobeアプリケーション内に始終して、JavaScriptが圧倒的に多くなったわたしが言うのも、なんだかヘンな話ではあるけれど...

*1:逆にいうなら、「そんなに難しいことでない」と感じるまで、すなわち用語辞書の読み方がわかるまでがちょっとたいへんだってこと。