歴代のmacOS自体やAppleScriptの処理系で腹が立ったバグについてまとめてみましょう。腹の立ったOSのバージョンでいえばmacOS 10.13が歴代でダントツの1位ですが、10.15もリリースされる前から「これはひどい」「10.13と同じぐらいひどい」とわかっていたので、10.14.6を選択。
10個にしぼりこむことがたいへんに難しかったですし、未修正の問題などもあり非常に腹立たしいかぎりです。たぶん、ワースト3以下は僅差だと思います。
Mac OS X 10.3でディスク暗号化機能の「FileVault」が登場したときには、野生のカンで「これは使ってはいけない機能だ」と様子見していたところ、見事に「FileVaultをオンにしたホームディレクトリ下のファイルにAppleScriptからアクセスできないバグがある」ことが発覚。以来、これをオンにしたことがありません(最近でも、macOS 10.15でFileVaultをオンにしているとMac mini 2018に接続したeGPUから出力できないとか。なかなか信用できません)。
1位:Mac OS X 10.3 “is in”演算子が動かないバグ(AppleScript)【修正済み】
こんな基礎的な演算子でバグ作られた日には何もできません。とくに、is in演算子はデータの「ゆらぎ吸収」処理に使いまくっているので、WWDCにハリセン持って担当者をブン殴りに行こうかと真剣に悩みました。
2位:macOS 10.13〜 PDFViewのcurrentPageを取得するとおかしな値が返ってくるバグ(Bug Reportしても直らない。殺意を覚える)(Scripting Bridge)【未修正】
これのせいで、自分のMac App Storeにアップしたアプリケーションが動かなくなりましたわ。ひどい。ひどすぎる。しかも、ちゃんとDevelopper Supportに連絡しても返事ひとつなく、修正もされません。Developer Support、仕事してませんよね。
# Developper Support、ほんっとになんにもしない。あの部署、何のためにあるんだろう? 今度、インシデントを消費して「じゃあ逆に、君たちは何をしてくれやがる部署ですか? 後学のために教えてくださいませ」と聞いてみようか
3位:OS X 10.9 ntpのシンクロが狂うバグ(OS)【修正済み】
当時、Mac App Storeに出す時計アプリを作ってたんですが、これのせいで時計が合わずに冷や汗かかされていました。まさかOSのバグとは、、、、おかげでアプリはお蔵入りしてしまいました。
4位:macOS 10.12〜 Input Methodのバグか何かで、ファイル名に不可視文字が混入するケースがあり、混入するとファイル名の文字列に追記するとエラーに(OS、日本語環境)【未修正】
これは、レポートもしていますし、波及範囲が広いので大問題なのですが、直っていませんね。認識すらしていないんじゃないでしょうか。
5位:Mac OS X 10.0〜10.4 File Pathの文字エンコーディングが変で日本語ファイルパスの扱いに慎重になる必要があったバグ(OS、AppleScript)【修正済み】
ファイルパスをas stringしてからas unicode textでcastさせられたりと、煮湯を飲まされていました。10.5で根本的に修正されたものの、10.5で根本的な修正を行うまで、問題が放置されっぱなし(こういうの多いなー)。
6位:Mac OS X 10.0〜10.4 display dialogで日本語表示を行うさいに、国際化対応アプリケーションへのtellブロック内で実行しないと文字化けするバグ(OS、AppleScript)【修正済み】
さすがに困って担当者に問い合わせて回避方法は教えてもらいましたが、そういう付け焼き刃的な回避方法を知らせる前につぶしてほしいと感じるものでした。
7位:Mac OS X 10.4、Script MenuがSystem Eventsの管轄下にあったため、Script Menuから呼び出したScript内でSystem Eventsの機能を呼び出すと実行が止まるバグ(AppleScript)【修正済み】
Mail.appのメッセージ仕分けBot Scriptがこれにヒットしてひどい目に遭いました。毎日使っているものなので、とても大きなダメージを喰らいました。Mac OS X 10.5で修正されました。
8位:OS X 10.10、Cocoa Objectsの実数値をASにcastすると小数点以下が無視されるバグ(Scripting Bridge)【修正済み】
これもひどかったですね。Shaneが対処のためのFrameworkやライブラリを用意しなかったら、いまほどCocoaの機能が利用されていなかったと思います。このバグはmacOS 10.11で修正されました。
9位:macOS 10.12、AppleScript Dropletにドロップしたファイルで、ファイル拡張属性(Xattr)のcom.apple.quarantineがついている場合には処理されないバグ(放置、未修正)(OS、AppleScript)【未修正】
無責任さここに極まれりといったところです。Core OSとAppleScriptの処理系との間で仕様のすりあわせが行われておらず、チーム間でぜんぜん連携が取れていない(というよりも、チーム間で垣根を超えて折衝する権限がないっぽい)、現在のAppleの社内体勢そのものに問題があるんでしょう。これも、対処方法が一応は確立しているものの、たまりません。
10位:macOS 10.13、NSRectがレコードではなくリストで返ってくるように(告知なしで)変更される(Scripting Bridge)【未修正】
なんなんでしょうね、コレ。作業量が増えて腹が立つんですが、個人的にはSwiftのアップデートに合わせてAPI側の仕様を変えてしまったんじゃないんかとにらんでいます。