Raymond Chen『Windowsプログラミングの極意』(アスキー)を読んだ。
最初のWindows(バージョン1.0、1985年)は、ゲームボーイアドバンス並みのハードウェアで動いた。そのときにはすでにGlobalAllocがあり、GetWindowTextがあった。どちらもハードウェアに密着した仕様になっていた。この密着がのちにWindows 3.1の成功をもたらす。Windows 3.1は、当時のボリュームゾーンのPCから最高の実行速度を絞り出して、OS/2とMacを叩きのめした。
Win64にもGlobalAllocとGetWindowTextがある。
途方もないことが――途方もないことが起きたのだ。
本書はそのドラマの端々をエピソード的に垣間見せてくれる。バイナリ互換性、ソースコード互換性、セキュリティ、ユーザビリティ、サードパーティの糞ドライバ。天文学のスケールと歴史学の身近さを兼ね備えたエピソードの数々に、ため息の連続だ。
しかし391ページ、「UTF-8をANSIコードページとして設定できないのはなぜか」は納得できない。
「UTF-8をANSIコードページに設定しても、MBCSのソフトウェアが即Unicode対応になるわけではない」という著者の説明は正しい。しかし別の利点、「MacOS XなどのUTF-8対応OSとのソースコードの共有」はどうなのか。Windows以外の環境では、wchar_tによるUnicode対応はとっくの昔に放棄された。
UTF-8をANSIコードページに設定できないのは、.NET移行のための怠慢か、それともソースコードの共有に対して分断を図っているか、あるいはその両方としか考えられない。それを言おうとせず、「それほど利益があるわけではない」という説明だけで済ませる態度に、不信感を覚える。