10.5のAppleScriptは頑固になった

そもそものはじまりは、Hossyさんに頼まれてiCal上の重複スケジュールの削除Scriptを組んだときに、これまで使っていて何の問題もなかった「getMLen」という指定年&指定月の日数を求めるAppleScriptのサブルーチンが異常動作したことにある。 

getMLenの処理内容は、翌月の1日目を求めて、そこから-1日することで指定月の日数を求めるという、それはそれは実にオーソドックスで工夫のカケラもないような地道なものであった。 

そのルーチンには、12月のときだけ例外処理がしかけてあり、12月を指定したときには翌年の1月1日を求め、そこから-1日するようになっていた。 

冒頭で出てきたプログラムでは、「2008年の13月なんてねえよ」という不思議なエラーが出ていた。「13月なんて指定したことねえよ」などと悪態をつきつつ、いろいろ調べてみると……12月の判定を行えていなかったようだ。そこにたまたま文字列で「12」という月パラメータが渡されたときに、10.4までは数値として評価して判定していたのが、10.5でそれをやらなくなったようだ。 

……つまり、AppleScriptでは変数のキャストを自動的かつ暗黙のうちにやってくれるのだが、Mac OS X 10.5になってから、その判定が厳しくなった(手抜きをするようになった)ということだ。 

まー、丁寧に型を指定すれば問題は生じないようなので、すぐさまルーチンを書き直したのだが……またユーザーに断りもなく仕様を変更したのかApple。やってくれるなApple。

Copyright By Piyomaru Software. All Rights Reserved