2008-09-28

OmniGraffle 5 の AppleScript サポート

OmniGroup と言えば、古くは NeXTSTEP 時代からの老舗で、最近でも OmniGraffleOmniOutliner、最近では GTD を実践するための OmniFocus などのなかなか使いやすいソフトウェアを開発・販売している。自分でも OmniGraffle や OmniOutliner (どちらも Pro 版)を愛用してはいるのだけど、まだまだ十分に活用しているとは言い難く、ときどきそれまで使ってなかった機能を見付けては改めて感心したりしている。

さて、先日もそんなソフトウェアのひとつである OmniGraffle で、編集メニューの「別形式でコピー」項目のサブメニューに「AppleScripto」というのを見付けたので、ちょっと試してみた(注: 以下の例で「OmniGraffle Professional 5」となっているのは普通にインストールしているなら「OmniGraffle Professional」となっているはず)

たとえば、適当に描いた長方形を選択して、それを AppleScript 形式でコピーすると、その図形を描画するためのスクリプトがそのままクリップボードというかペーストボードというかに入る。

tell application "OmniGraffle Professional 5"
tell canvas of front window
make new shape at end of graphics with properties {origin:{59.0, 63.0}, size:{140.0, 121.0}}
end tell
end tell
これをそのまま Script Editor にペーストして実行すると当然全く同じ図形が描画される。もちろん、osascript(1) で実行してやってもいい。

もともと OmniGraffle は図形の移動時にガイドが効いたり、きれいに整列させながら作業するのが得意なのだけど、スクリプトを書けばもっと色んなことが楽にできそうだ。

こんなことも簡単にできちゃう(カレンダーなんか作るのに便利?)。スクリプトエディタがイヤならば、osascript(1) を使って、各種のシェルや Perl などの LL と組み合わせるという手段もある。

もともと AppleScript で書けばいろいろできるのは分かっていたのだけど、ApppleScript 自体に慣れないことはもちろん、なにができるのかがよく分かっていないとなかなか手がでない状態だったのだけど、実際に欲しい図形を描いてみれば AppleScript でどう書けばいいのかも分かるというこのアプローチはなかなか面白い。

惜しいのは、OmniGraffle 自体が AppleScript 的に記録可能(Recordable)でないこと。以前からも少なかったけど、Mac OS X になってから記録に対応したアプリケーションというのを見かけたことがないような気がする。技術的な制約でもあるのだろうか。以前 Excel で AppleScript を使おうと思ったときも、どうやればいいのかよく分からなかったので 結局 VB で書いたこともある(おかげで Office 2008 には移行してない)が、Excel が Recordable であればきっと AppleScript で書いただろう。プログラミング言語としてはともかく、それなりの潜在能力がある AppleScript はもっと活用されていい技術だと思うんだけどなぁ。

No comments: