解決策
Windows 95はMS-DOSアプリとWindowsアプリを統合し、APIセットを16ビットから32ビットに引き上げた。Microsoftは、ユーザーがアップグレードしない理由を一切持たないようにしたかった。その理由の一つが、あわや生き残りかけた。Windows 3.x向けのSimCityで、作者のJon Rossが誤って、解放したばかりのメモリを読み出すバグを残していたのだ。Windows 3.xではメモリがどこにも行かなかったため問題なく動作したが、Windows 95のベータ版ではゲームが壊れた。500万本以上を売り上げたSimCityは、支障なく動作しなければならなかった。
Microsoftはバグを突き止め、Windows 95にSimCityを探すコードを追加した。ゲームの実行を検出すると、メモリをすぐには解放しない特別モードでメモリアロケータを実行する。SimCityだけではなかった。Windows ADKのCompatibility Administratorには、アプリごとの修正データベースが表示される。Windows NTは、Final Fantasy VIIとともに通常インストールされるファイルを検出すると、文字通り「Win95VersionLie」と名付けられた修正を適用する。これは単にゲームにWindows 95上で動作していると伝えるものだ。一方、Dungeon Keeperには「Horny.tif」などのファイルをキーにしたファイルパスの修正が適用される。
この執着は組織的なものだった。Raymond Chenは2005年、Windows 95の開発マネージャーが地元のEgghead Software店舗までピックアップトラックを走らせ、店にあるすべてのPCプログラムを1本ずつ購入したと記録している。各開発者は最大2本のプログラムを担当し、インストールして実行し、バグを文書化した。テスターは終えたものを保持できた。Maxisの元クリエイティブディレクターであるMike Perryは後に、RossがMaxisを離れた後Microsoftで働くようになったと述べている。
何を達成したか
互換性シム:OSは特定のアプリを認識し、自身の動作を静かに曲げる。解放の遅延やバージョンの偽装によって、古いバイナリは何も変わっていないと信じ込む。
OSのアップグレードはアプリのカタログ次第で成否が決まる。ユーザーは、すでに所有しているゲームやツールを壊すOSを買おうとはしない。
すべてのサードパーティベンダーを修正するのは不可能だったため、シムによってMicrosoftは他社のコードに触れることなく互換性を修復できた。
アプリを名前やインストールされたファイルで検出することで、すべての動作を変えるのではなく、各修正を外科手術的に保つことができた。
実際の市販ソフトウェアを大規模にテストすることで、未知の非互換性は発売前に文書化され、割り当て可能なチェックリストになった。
応用できること
後方互換性はアプリごとに買うことができる。古いプラットフォームのバグ、さらにはそのメモリの誤りさえもエミュレートすることで、アップグレードしないあらゆる言い訳を排除し、ソフトウェアの鶏と卵の問題を打破できる。
その後
2000年にSimCityの物語を再び語ったJoel Spolskyは、これをOSの鶏と卵の問題を打破する方法と呼び、こう述べた。「後方互換モードを提供する。それは見方によっては鶏をトラック一杯分届けるものでもあり、卵をトラック一杯分届けるものでもあり、あとは座って大金を稼ぐだけだ」。アプリごとのシムデータベースはWindows 95より長生きし、現在もWindows Assessment and Deployment Kitで検査できる。
出典をたどる
出典
- Windows 95 went the extra mile to ensure compatibility of SimCity, other games Ars Technica · arstechnica.com ·