Infinite Mac OS X
(blog.persistent.info)- Infinite Mac プラットフォームで、Mac OS X シリーズの初期バージョン(10.1、10.3)がウェブブラウザ上で実行可能になった
- PowerPC エミュレータ PearPC を Emscripten/WebAssembly に移植し、互換性と安定性の向上を実現した
- DingusPPC との比較を通じて性能や原因不明のバグを改善し、アルゴリズム面の最適化を進めた
- Mac OS X 向けの Infinite HD ディスクイメージも新たに構築し、2000年代のさまざまなソフトウェアや開発ツールにアクセスできる
- UI に Aqua スタイル を適用するなど、レトロな使用体験を強化しつつ、今後のさらなる発展も視野に入れている
要約
Infinite Mac プラットフォームで長年のレガシーシステムをオンラインで体験できるプロジェクト Infinite Mac が、Mac OS X 10.1 や 10.3 などの初期バージョンをサポートしたことで、現代のウェブブラウザ上で実行可能になった。この過程では、PearPC や DingusPPC などの PowerPC エミュレータを Emscripten/WebAssembly ベースへ移植し、性能改善と安定性確保のためにさまざまな取り組みが行われた。アルゴリズム最適化とバグ修正により、オリジナルのハードウェアと比べて解像度と信頼性を高め、当時のソフトウェアや開発ツールを収録した Infinite HD も再構成して実用性を強化している。さらに、サイト UI に Aqua テーマを適用して情緒的な体験を提供し、A/UX や Lisa のような、よりレトロな OS への対応拡張も今後検討している。本プロジェクトは、プログラムエミュレーション、オープンソースアーカイブの拡張、UI 復元など、複合的な目的を達成する技術的な試みを示している。
Mac OS X 対応の拡大
- Infinite Mac で Mac OS X 10.1 や 10.3 などの 初期 OS X バージョン をウェブブラウザ上で実行できるように移植した
- 実機での遅い性能もそのまま再現し、当時の NetNewsWire Lite や Terminal など代表的なアプリケーションの利用も体験できる
- 最新のディスクイメージには 当時のインディーソフトウェア も一部含まれており、レトロソフトウェアを探しやすくなった
PearPC 移植の過程
- 当初は DingusPPC エミュレータの移植と修正に注力していたが、カーネルパニック やグラフィックエラーの問題により PearPC へ方針転換した
- PearPC は 2000年代初頭の x86 環境で Mac OS X を実行するために設計された マルチプラットフォームのコードベース で、追加作業なしでも WebAssembly 向けへの移植が比較的容易だった
- 最近では Basilisk II、SheepShaver の主要メンテナが PearPC の実験ブランチを作成し、現代の macOS でもビルド可能になった
- ソースは古く、レガシーな C++ ベースだが、独自 string class、sprintf、GIF デコーダなど独特な部分が存在する
- マルチプラットフォーム構造、ほとんどスレッドを使わない設計、構造化された抽象化レイヤーのおかげで移植は迅速に進んだ
性能最適化と限界
- PearPC での Mac OS X 10.2 の起動と実行の信頼性は高かったが、DingusPPC に比べて実行速度が遅い
- MMU キャッシュ不在などによる性能低下が大きい
- DingusPPC で適用したさまざまな アルゴリズムベースの最適化 を PearPC にも移植し、起動速度を一部短縮する効果を得た
- PearPC は必要な PowerPC 命令のサブセットのみを実装し、カスタムファームウェアやドライバなど複数の「チート」を活用している
- 依然として高速かつ安定した Mac OS X エミュレーションには、長期的には DingusPPC のほうが有望だと期待している
副次的な発見: FP 例外処理
- PearPC 内のインタプリタで 統合デコード方式 を導入した際、浮動小数点演算でレンダリングエラーが発生した
- Mac OS X カーネルが MSI レジスタの FP ビット状態に応じて例外処理を登録していたため、これをコードに実装するとレンダリング問題が解決した
- DingusPPC でも同じ FP ビット欠落の問題によりテキストレンダリング異常が起きていたが、修正後に安定性が大きく向上した
- その場しのぎのハンドリングから「正攻法」の実装へ進化し、最終的に 10.1 の実行信頼性も大幅に向上した
- 2つのエミュレータを組み合わせ、さまざまな OS X バージョンの実行対応範囲を広げた
Infinite HD ディスクイメージの再構築
- Mac OS X 時代に合った ディスクイメージ を新たに構築し、その時期のインディーソフトウェアや開発者ツールを多数収録した
- 旧版の .dmg ファイルは最新の macOS でそのままマウントできないため、dmg2img などのツールを用いた変換と自動化パイプラインを構築した
- HFS と HFS+ ファイルシステムの違いによる一部制約はあるが、大半のソフトウェアは正常に動作する
- ライブラリサイトや Wayback Machine など多様なソースを通じて、2000年代初頭のソフトウェア実行環境を整えた
- マルチパーティションイメージを動的生成する手法を導入し、起動ディスク、Infinite HD、保存用 Saved HD まで最大 3 つのボリュームをマウント可能にした
UI: Aqua スタイルの適用
- Aqua テーマを Infinite Mac UI にも採用し、レトロな雰囲気 を最大化した
- Mac OS X 10.0/10.1 スタイルの画像アセットを直接抽出し、半透明効果まで再現した
- サイトの操作部のスタイルも OS ごとの外観(クラシック、Platinum、NeXT など)に合わせて自動適用される
- 今後予告される Apple macOS の大規模 UI 変更に合わせ、過去の UI の「リファレンスポイント」としての役割も提供する
追加機能とマイルストーン
- Mac OS 9 パーティションのマウントおよび Classic 環境の実行 機能を追加(10.1 のみ対応)
- 昔の Calculator アプリにおける繰り返し演算動作など、OS 間の UX 差異も検証できる
- PearPC に内蔵された ブートメッセージ(Verbose)モード を有効化し、DingusPPC では Open Firmware 変数を指定する方式を実装した
- macosx.app ドメインによるブランディング拡大も試みているが、現在は他者が保有している
今後の拡張とまとめ
- Mac OS X 対応の拡大により、Infinite Mac は現代の macOS との つながり を築いた
- より深いレトロ体験のため、A/UX、Lisa、Pippin、Newton などへの移植可能性にも言及している
- WebAssembly ベースの QEMU(wasm)にも実験的な関心を示し、性能テストでは前向きな兆候を確認した
- Mac OS X のウェブベースエミュレーションは、体験、レガシーソフトウェア保存、開発実験など多様な IT・スタートアップのシナリオで価値を提供する
1件のコメント
Hacker Newsの反応