1990年代のMacをブラウザ上で完全再現すべく作られたエミュレーター「Infinite Mac」
オープンソースのMac 68KエミュレーターであるBasilisk IIをブラウザ上でも利用できるように拡張したというエミュレーターの「Infinite Mac」が登場しました。作者はMihai Parparita氏で、Infinite Macの開発経緯などをブログ上で明かしています。
persistent.info: Infinite Mac: An Instant-Booting Quadra in Your Browser
https://blog.persistent.info/2022/03/blog-post.html
近年、古いOSをエミュレーションする試みが人気を博しており、v86ではさまざまな古いOSをブラウザ上で実行することが可能です。しかし、古いMacのエミュレーションにv86は利用できなかったため、Parparita氏はこれらを現代のPCでエミュレーションするのに適した方法は何かを調査したとのこと。最初に見つけたのはMac向けのエミュレーターとして知名度の高いBasilisk IIです。Basilisk IIは十分に機能したものの、ROM・ブートイメージの収集・構成ファイルの操作といったセットアップが非常に面倒だったとのこと。
MacのエミュレーターにはBasilisk IIだけでなくPCE.jsやインターネットアーカイブのMacintoshエミュレーター、RetroWeb Vintage Computer Musemなどさまざまなものがありますが、「どれも1990年代のMacを使用した際の本当の感覚を再現したものとは言えませんでした」「Mac向けのエミュレーターは単一のプログラムを素早く起動して試してみるには最適ですが、データを出し入れしたり、一度に複数のプログラムを実行したりすることはできません」と、問題点を挙げています。
そこで、Basilisk IIを拡張してブラウザ上でMac OS 8を実行できるようにしたのが「Infinite Mac」です。Infinite Macは以下のリンクから使用可能。
Infinite Mac
https://macos8.app/
実際にInfinite Macを使用している様子は以下のムービーでもチェックできます。
Infinite Mac Demo - YouTube
Parparita氏はエミュレーターの起動時間を短縮するために、使用するディスクイメージのダウンロードにかかる時間を短縮することを目指したそうです。理想は「Brotliを使用してストレージ内のデータを圧縮したり未使用データを削除したりすること」だったそうですが、これには手に負えない問題が複数あった模様。また、「Brotliを使用してストレージ内のデータを圧縮したり未使用データを削除したりする」という方法では、別の目標である「複数のプログラムを同時に実行する」ことと互換性がないように思えた、とParparita氏。その理由は単純で、起動できるソフトウェアを多く準備すればするほど、必要なディスクイメージのサイズは大きくなるためです。
そのため、Parparita氏は「ディスクイメージを事前にダウンロードするのではなく、オンデマンドでダウンロードする」という方法に切り替えます。これにより、Infinite Macはファイルシステムへの要求からロードされていないチャンクを検知すると、ネットワークを介して必要なチャンクのみダウンロードするよう設計することに成功。これにいくつかのウェブ最適化を施すことで、Infinite Macは起動画面をわずか1秒で表示できるほど高速に動作することが可能となったそうです。
また、複数のMac向けソフトウェアがインストールされたディスクイメージを構築するための持続可能で再現性のある方法を求めていたというParparita氏。Basilisk IIのネイティブバージョンを起動して手動でコピーすることも可能ですが、その場合、別のベースOSでプロセスを繰り返したい場合などに、すべての動作を繰り返す必要があります。これは面倒でエラーが発生しやすい方法であるため、Parparita氏は「より効果的な方法を模索していた」とのこと。そこでParparita氏がたどり着いたのが、ディスクイメージを構築するためにDockerfileを利用するというものだったそうです。なお、各種ソフトウェアはインターネットアーカイブにディスクイメージで保存されていたものをmachfsを使ってDockerfileにコピーしたり、StuffItにアーカイブされているソフトウェアをXADMasterなどを使って解凍してコピーしたりすることで実装することに成功したそうです。
なお、Infinite MacのソースコードはGitHub上で公開されています。
GitHub - mihaip/infinite-mac: A Mac with everything you'd want in 1995.
https://github.com/mihaip/infinite-mac
・関連記事
1997年に登場したMac OS 8をエミュレートできる「macintosh.js」が登場 - GIGAZINE
初期のマッキントッシュ用ソフトの数々をブラウザ上でエミュレートできる「Software Library: Macintosh」 - GIGAZINE
Mac向けのエミュレーター「OpenEmu」が初代PS・64・ワンダースワンなど16種類のゲーム機器に新しく対応 - GIGAZINE
懐かしのMac OS System 7をブラウザ上でエミュレートして再現できる「PCE.js」 - GIGAZINE
・関連コンテンツ