ムキムキマッチョマンになりたい人です。心も体もムキムキマッチョマン。 Webフロントエンド領域でのムキムキマッチョマン目指して頑張っています。 この記事は技術記事の皮を被った、IT知識トレーニングの記録です。
Web考古学
ちゃんとした名称がありそうですが、1989年にティムバーナーズリー氏によって提唱されたWorld Wide Webに端を発した「Web」そのものの歴史を辿る試みです。具体的にはWikipediaを起点に、W3CやWHATWGの仕様書やドキュメント、果ては古のブログやニュース記事を漁り当時その技術や対象がどう捉えられどうなると考えられていて結果としてどうなったのかを探っています。その中では古い実装で動くブラウザやOSなどに触れていく必要もあるかもしれません。本記事ではNetscape Navigator 3.0とIE4.5をmacOS 14上で動かす試みに挑戦したことを記録しています。
そもそも、なぜ考古学をするのか
2024年現在、Webフロントエンド領域は混迷を極めています。さまざまなライブラリやフレームワークが台頭し、エコシステムですら時事刻々と変化しています。それらを否定的に感じる人もおり、Webフロントエンド領域は手を出すべきではない、なんて言われることもありますね。
ですが、それらが現在私たちITエンジニアだけでなく多くの人が使う「Web」の中で使われている技術であることは間違いありません。 であれば、Webフロントエンドの技術的・環境的・文化的な問題点・課題点を改善することはあっても否定することだけでは進歩がないのでは?目指すべき姿であるムキムキマッチョマンにはなれないのでは?と考えました。
そこで大事になるのが歴史に学ぶことだと。
ドイツのビスマルクはこう言いました「愚者は経験に学び、賢者は歴史に学ぶ」 歴史の流れと思想を捉え、次に「Web」がとるべき姿、変化していく姿を予測し、自分の技術へと活かすことが大事だと。
ですが、マッチョマンにはそれだけでは足りないのかもしれないと考えました。 マッチョマンとして愚者であり賢者でありたい、経験も歴史もどっちも学びたいです。
Web技術の多くは先人たちによってさまざまなアーカイブ活動が行われアクセスすることも可能です。歴史を学びその歴史を体感・経験し、過去と現在を反復横跳びし、未来を考えることが今のフロントエンド領域に取り組むエンジニアにとって重要だと考えたのがWeb考古学のきっかけでした。
本題「Netscape 3 / IE4.5をmacOS 14で動かす」
Netscape NavigatorはNetscape Communicationsが開発した、NCSA Mosaicから派生したブラウザで、今のFirefoxの源流にあたります。 対してInternet ExplorerはMicrosoftが開発した、こちらもNCSA Mosaic派生のブラウザです。
これらはどちらも標準化前のJavaScriptを採用しているブラウザです。2024年現在私たちが触れているブラウザで動くJavaScriptは正式名称ECMAScriptで標準化団体ECMAScriptが定めた仕様に沿って標準化されています。
ですが最初期のJavaScriptはこれら2つのブラウザが独自に実装した、誤解を恐れずにいうのであれば2つのJavaScriptが動いていました。 それらを実際に触って動かし、現在のJavaScriptとの乖離を確認することで、なぜ今のJavaScriptになったのかという経緯を探るための第一歩です。
macOS 14でNetscape 3 / IE4.5を動かすためには
残念ながらNetscape 3もIE4.5もそのままではmacOS 14で起動しません。 かつてmacOSにはClassic modeと呼ばれるMacOS 9.xまでのアプリケーション起動をサポートする仕組みがあったようなのですが現在それらは無効になっています。 逆に言えば、MacOS 9.xでは動くということです。
MacOS 9.xで動くのであれば、MacOS 9.xが動く環境を作りそこにインストールすればいいのでは????
幸い、Netscape 3は以下URLなどからインストーラーがダウンロードすることができました。
https://www.macintoshrepository.org/2712-netscape-navigator-3-x-standard-gold-edition-
あとは、MacoS 9.x が動く環境を用意するだけです。
MacOS 9.xをエミュレーターで動かす
世の中にはエミュレーターというものがあります。コンピューターや機械の動き、とりわけ動かしたいソフトウェアよりも1つ下のレイヤーにあるものを模倣し、ソフトウェアをある種騙す形で動いてもらう仕組みです。
最初調べている中で、 https://infinitemac.org/ と呼ばれるWebAssembly上でエミュレーターを起動させ、MacOSを動かすソフトウェアがありました。 これらはすごい!と思いつつ外部とのインターネットを介した通信ができず悩んでいたところ、infinite-macのGitリポジトリ にてMacOS上で動くエミュレーターの存在を知りました。
それが、SheepShaverでした。
SheepShaver とは? オープンソースソフトウェアであり、古いMacOSやUnix、Windowsを動かす事のできるエミュレーターです。
ですがSheepShaver本体はソースコードのみが公開されており、macOS向けに動くアプリケーションは提供されていない....と思ったところ有志がコミュニティサイト「E-malculation」のフォーラムにてmacOS14向けにビルドされたSheepShaverを提供していました。
これで光明が見えてきました
SheepShaverをインストールし動かすためには
ここから先は全て自己責任です
SheepShaverはOSイメージなどは同梱していません。そのため以下のものが必要になります
- MacOSをインストールするためのROM
- MacOSのOSイメージ(isoファイル)
- SheepShaverの設定フォルダ
- keycodesファイル
- SheepShaver Scripts
- SheepShaverの本体
上記を任意フォルダ上にダウンロード後展開していく流れです。 以下のようなフォルダ構成になれば正解です ※new.dskはマウントしているドライブであり、このあと作成するため現時点ではなくても問題ないです。
ISOとROM以外はRonald P. Regensburgさんが2024年2月28日に公開してくれており、今回は最新版であるVersion 2.5 Universal版20240228を利用します。Universal版のためIntel macでもM1 macでも動きます。
では実際にインストールしていきます
ダウンロードサイトから必要なものをインストールする
SheepShaver本体
Ronald P. Regensburgさんのフォーラムへの投稿からダウンロードできます。
• Version 2.5, 28 February 2024, universal (x86_64 and arm64) と書かれた下のDownload:
から、zipファイルをダウンロードし、展開します。
この時点では起動しないでください。
SheepShaver Scripts
上記サイトの• For the above version 2.5 builds:と書かれた下のFor a new setup, also download the SheepShaver folder:
から、zipファイルをダウンロードし、展開します。
MacOS ISO
本来であればDVD/CDにてISOイメージを取得する必要があるのですが、今回はこちらも有志のサイトよりISOイメージを拝借します。 今回はMacOS 9.0.4 のISOを利用します。以下サイトよりダウンロード可能です。
ページ下部、Downloadsの箇所にある、(ISO)と書かれたものをクリックし、遷移後のページでServer 1
を選び(どちらでも良いです)クリックしてください。
すると7zファイルがダウンロードされるのでそれらを展開します。.iso
と書かれたファイルが展開されればOKです。
MacOS ROM
以下サイトより、New World PPC ROMをダウンロード、展開します。名前はMacOS ROMに変更しましょう。 https://www.redundantrobot.com/sheepshaver
起動準備
上記ダウンロードしたものをApplicationsフォルダに「SheepShaver」フォルダを新たに作り、その中に以下の画像のように全部入れ込みます。
起動してみる
初期起動では、「?」と書かれたアイコンのみが表示されると思いますがこれで成功です。 ここまででうまくいかなかった場合は上記画像に従って適切にフォルダやファイルが配置されているか確認してください。
初期設定
初期設定を行います。SheepShaverを起動した後に左上の「SheepShaver」をクリックするとメニューが出てきます。 ここで「Settings...」をクリックしてください。
すると、Virutal Machine Settingsという画面が出てきますので、ここで各種設定を行います。
- Volumes: インストール先のVolumeとISOメディアを指定します。ISOは「Add...」からFinderで選択、Volumeは「Create...」から選んでください
- ROM File: 同じフォルダ下のROMファイルを「Browse...」からFinderで選択します
- Unix Root: これはmacOSホストOSとエミュレータ上で共有化されるフォルダを指定します。エミュレータOS上ではデスクトップがこのフォルダに当たります。
- Boot From: 初期は「Disable CD-ROM」のチェックを外し、RAMを512MB程度、「Boot form」を「Any」にしてください・
- インストール後は「Disable CD-ROM」にチェックを入れ再起動します。
「Miscellaneous」と書かれた別タブに移動します ここで重要なのはEthernet Interfaceの項目です。ここには「slirp」と記入しましょう。
これで初期設定は完了です。Ctrl+Escを押してSheepShaverを終了し、再起動します。 以下のような画面が出れば成功です!
「Name: 」はボリューム名なので「mac」とかにしておくと良いでしょう。 このあとは「Initialize」を押し、出てきたインストーラーでMacOSをインストールし、Virtual Machine SettingsにてDisable ROMを有効化しボリュームディスクから起動すればOKです。
ここまででインターネット接続も完了します。(macOSがインターネットに繋がっていれば)
MacOS 9.0.4にNetscape Navigator 3をインストールする
やっと目的のNetscape Navigator 3をインストールできます。 以下URLからファイルをダウンロードします。未展開のまま、先ほどUnix Rootで設定したフォルダにおくことでデスクトップにファイルが追加されているはずです。あとはこれを解凍し、インストールするだけです。
https://www.macintoshrepository.org/2712-netscape-navigator-3-x-standard-gold-edition-
Netscape Navigator 3が立ち上がったよ!
ブラウザが立ち上がったので、http://example.comにアクセスして画面が出てくることを確認して終了です。
@kumikumitmさんに聞いたところによると、どうやらNetscape Navigatorはデフォルトグレー背景らしいです。知らんかった
最後とこれから
古のJavaScriptに触れる環境ができました。SheepShaverを使えばWindows 2000なんかも動くということで今後はActive Xなども触れていってみようと思います。 ムキムキマッチョマンに近づけたかな...?