Leopardのスクリプトエディタは2つのplistフォーマットをサポートしていた

plistファイルを読んで設定内容を取得するというのは、AppleScript界隈では割とよくある処理だ。どこぞの御仁が聞いたら怒りそうな話だが、最低限の時間と手間で確実に処理を済ませたいScripterという人種にとって、それはとくに目くじらをたてるような話ではなかった。

そうはいうものの、ついにLeopardでplistファイルのフォーマットが変わって、「さあ、どうしよう」という事態になった。もっと分かりやすく直裁的な表現を行うならば「困った」と書くのが正しいだろう。正直なところかなり困っている。いまだにメイン環境をLeopardに移行できていない理由のうちの1つだ。
だが、別になんでもかんでも読めなくて困っているというのではない。読めなくて困っているのはただひとつ、Script Editorのplistファイルのパラメータの内容だ。
620510134_151
Script Editorの編集を補助するための数百あるAppleScript群が、Script Editorの設定内容を読み込んで処理をしている。たとえば、変数名(だけ)のリネームを行うようなスクリプトの場合には、設定ファイルから構文要素ごとの色分けの情報を読んできて、それを基に構文要素の判別を行っている(同一色の構文要素がある場合には「処理できない」と警告を出すようになっている)。
これができるのとできないのとでは、スクリプトの生産性に雲泥の差では済まないほどの差が出る。いまさら、こうしたScript記述支援ツールのない「原始時代」に逆戻りする気はないし、できるわけがない。

かくして、記録フォーマットの解析らしきものやらなにやらを休みの日にごそごそ行っていたわけであるが、結果からいうとこの解析は(当分の間)必要なくなった。
これまで、LeopardのBetaなどはまっさらのパーティーションに新規インストールしてきた。従来バージョンのOSのパーティションをLeopardにアップグレード、ということは一切してこなかったのだ。
iMac CoreDuoは自宅用の比較的ゆる〜い作業を行うコンピュータだが、こいつは家のMacの中でも真っ先にTigerからLeopardにアップグレードした。自分がさわってきたLeopard環境でも、はじめてのアップグレード環境だった。
そのiMac CoreDuo上で、com.apple.applescript.plistの内容を確認してわが目を疑った。Tigerまでのものと同じ内容が表示されたからだ。

試しに、Script Editorを一度終了させ、com.apple.applescript.plistを別の場所に移動。再度、Script Editorを起動。この状態で構文要素の内容をいろいろと変更し、plistファイルを見てみた。……この状態だと、クリーンインストールした時のフォーマットになる。
Tigerまでの形式のplistファイルが存在していれば、それをそのまま使うということなのか?
Script Editorを終了させ、この新フォーマットのplistファイルを削除。旧フォーマットのplistファイルを~/Library/Preferences/フォルダに戻してみた。Script Editorを起動して、設定内容を変更してみても……フォーマットはreadableな旧フォーマットが維持されたままだ。
620510134_240
これらの事実から推測するに、Leopard上のScript Editorは設定ファイルの読み書きを行うのに2つのplistフォーマットをサポートしており、従来OSからのアップグレード時には旧フォーマットをそのまま継承。内容を変更してもフォーマット自体は旧フォーマットを維持するという動きを行うらしい。じゃあこの新フォーマットは何のために存在するのだろう、という疑問は残るわけだが……気にしないことにした。

Leopardユーザー向けにこのスクリプト記述支援Scriptsを配布するような場合には、インストーラを作成し、旧フォーマットのplistファイルをユーザーのホームディレクトリ下にコピーするようにすればいい。

またひとつ問題が解決した。うむっ!

Copyright By Piyomaru Software. All Rights Reserved