Leopard には、もちろん素晴らしいところが多々あるのですが、またイヤな情報をひとつ。Leopard 上で Kaku の動作をほとんど殺してくれている不具合について、少なくともどの辺にありそうかは分かってきました。
「不安定に」と少し曖昧に書いていますが、僕が知る限り、2つの問題が組合わさっています。
問題1. パラメータに日本語を含む XML-RPC を行うと、高い確率でクラッシュする
スクリプトエディタから実行した場合はスクリプトエディタが、AppleScript Studio アプリから実行した場合は、そのアプリがクラッシュします。
例えば、AppleScript Studio アプリから、日本語パラメータを含む XML-RPC を行うと、次のようなメッセージを残して、アプリがクラッシュします:
XMLRPC Test(10908) malloc: *** error for object 0x2d4290: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
パラメータに英数字を設定していれば、何の問題もありません。日本語の文字列の扱いでトラブっているでは、と想像できます。
Leopard からは、スクリプト内に Unicode 文字を含めることが出来るようになりましたが、その辺との関連で、齟齬が起きているのかもしれません。
問題2. パラメータに日本語を含む XML-RPC が成功したとしても、WordPress で文字化けする
スクリプトエディタを使っている場合、問題1 が発生してスクリプトエディタが強制終了したあと、もう一度そのスクリプトファイルを開いて、すぐ実行すると、XML-RPC が成功する場合があります。
しかし例えば、そうやって WordPress に記事を送信したとすると、記事の内容は「?」の羅列に化けてしまいます。
問題1 が発生している時点ですでにあやしいですが、AEXMLTutor(Leopard でも動くことに感動)で送信している生の XML データを確認すると、次のようになっています(ちなみに記事の内容は「あああああ」):
<struct>
<member>
<name>description</name>
<value>
<string>あああああ</string>
</value>
</member>
</struct>
文字参照になっているのが分かります。これが文字化けの原因だと思うのですが、この辺は(…というか、よく知っていること以外はだいたい)かなりうといので、よく分かりません。
興味深いのは、これが Movable Type や P_BLOG × XML-RPC for P_BLOG (revision e) では、発生しないことです。これは、決して WordPress が悪いわけではなくて、たぶん、構図は:
- 犯人
- AppleScript
- 犯行内容
- 送信するデータがおかしい
- 関係者
- Moveble Type → なんとか対応
- XML-RPC for P_BLOG (revision e) → なんとか対応
- WordPress → 爆死
…ということなんだろうと想像しますが、WordPress の実装は、他の2つとどう違うんでしょうか…?
もしこれらに関して、新たに分かったことがあれば、ここに追記します。
しかし、少なくともこれで、XML-RPC を AppleScript に任せたままで、手っ取り早く解決する方法はなさそうだ、ということは分かりました。なんとかせねば…