「村上朝日堂 夢のサーフシティー」付属CDを今のMacで読む方法
ひらけないCD-ROM
村上春樹の『村上朝日堂 夢のサーフシティー』を古本で買ったら、裏表紙にCD-ROMがついていた。

書籍自体は1998年、朝日新聞社発行。すでに絶版となっている本で、付録のCDにはかつて公開されていた村上朝日堂ホームページがまるごと収録されている(参考)らしい。村上朝日堂というのは30年ほど前に「週刊朝日」で連載されていた村上のエッセーのことで、「村上朝日堂ホームページ」は、その雑誌上のエッセーとサイト限定の近況報告、さらに読者から寄せられた膨大なメールとそれに対する返信が公開されていた場所だという。さっそく中身を見てみようとMacBookにつなげた外付けのDVDドライブに突っ込んでみたのだが、これがまったく反応がない。

まぁそりゃそうである。そもそも対応環境が「漢字トーク7.1以上」に「QuickTime2.1以上」だ。IT業界には長くいるとは思うけど、正直ぜんぜんピンとこない。私が生まれたころのOSだ。いま自分が使っているmacOS 26.6.2は漢字トーク7.1よりは当然あたらしいにせよ、それが以上といえるのかどうか、そもそも比較可能なものなのかよくわからない。解像度640x480ドット以上にメモリ5MB以上ともある。今使っている手元のMacBook Airの解像度は2560×1664にメモリは24GB積んでいるのでここに関しては恐ろしいほど充足している。なのにドライブにいれても何も起こらない。
なぜ読めないのか
この付属CDをディスクイメージ化して調べてみると、Classic Mac OS(漢字トーク)向けのHFS Standardと、Windows側から読むISO 9660/Jolietという二つのファイルシステムを1枚のディスクに同居させていることがわかる。書籍の案内にあるようにMac/Windowsの両方に対応したハイブリッド形式のようで、現代ではまず目にしないが、1990年代にはこのような構造のCDがよく作られていた、らしい。
現行macOSはすでにこのHFS Standardの読み取りサポートを削除しているのでこのCDのMac用の部分はそもそも読めない。さらにディスクの先頭には古いMac用のApple Partition Map(以下APM)と呼ばれるGUID Partition Tableみたいなものが置かれており、そこに実体パーティションとして登録されているのはHFS Standardだけだった。Windowsでは無視されるこの情報自体は現代のmacOSでも読み込んでくれるものの、前述の通りHFS Standardの読み取りサポートが失われているため、読み込めないデータを読み込もうとして失敗してしまう。
ちなみに現代のmacOSでもこのCDのWindows用部分を読み込むことはできる。しかしAPMにその部分の情報が含まれていないので、結果としてCDの全体に通常の方法ではアクセスできなかったのだ。
読めないHFS側には何があったのか
とはいえ、読めないほうに大事なものが入っていたら困る。気になったのでHFS Standard側の中身も調べてみた(現行macOSでは読めないので、サードパーティ製ツールを使うか、カタログを自前で解釈する必要がある。閲覧の手順には関係しないので省略)。
入っていたファイルは696個。そのうち651個はISOという名前のフォルダの下にあり、ISO 9660側とまったく同じパス構成だった。このCDでは両方のファイルシステムから同じ実体を参照する構造になっていて、ディスク上には1度しか記録されていない。Mac側からもWindows向けのHTML一式に手が届くようになっている。私はCD-ROMがそういう仕組みを構成できることすら知らなかった。
Mac固有だったのは残る45個で、内訳は以下のようになる。
夢のサーフシティー— Mac用の閲覧アプリ本体LIB/MacEVERESTとINDEX/・LIST/— 全文検索エンジンとその索引PICT/・HELP/— アプリのUI画像とヘルプ画面MOV/Taidan.mov— 対談音声Communicator_JA_403_5_PPC/— Mac版Netscape Communicator 4.03Desktop DB・Desktop DF・Icon— Classic Mac OSのデスクトップ管理ファイル
つまりMac固有分の大半は閲覧アプリとその周辺ファイルで、ISO 9660側には存在しない独自コンテンツのようなものはない。唯一コンテンツらしいMOV/Taidan.movにしても、ISO 9660側のTAIDAN.WAVと同じ対談音声だった。ファイルサイズはそれぞれ7,211,000バイトと7,210,855バイトで、両者は同じ音声を収録しており、MOVファイルにも映像トラックはない。ファイルサイズの145バイトの差もコンテナ形式の違いによるものだろう。結局、読めなくて困るコンテンツはなにも無かった。
ISO 9660を名指しでマウントする
macOSにはISO 9660を明示的にマウントするためのmount_cd9660というコマンドが標準で入っている。
diskutil list # CDのデバイス番号を確認する mkdir -p ~/surfcity sudo mount_cd9660 /dev/disk4 ~/surfcity
各パーティション(disk4s2とか)ではなくディスク全体(disk4)に対してISO 9660だと指定してマウントさせることに注意しよう。mount_cd9660の実行にはなぜかsudoが要るが、CDの中身を読むだけならmacOS標準のコマンドだけで完結する。
$ ls ~/surfcity ASAHIDO/ Asahido.hlp BAR.RTF Netscape/ WORD.IDX Asahido.exe AUTORUN.INF FILE.IDX TAIDAN.WAV
ルート直下にはASAHIDO(サイト本体・中身は273個のHTMLファイルと画像)のほか、Asahido.exeとAsahido.hlp(Windows用の専用ビューア)、Netscape(Netscapeインストーラ)、そして前述したTAIDAN.WAVである。この音声はどのHTMLからもリンクされていないファイルとなっているので、もしかしたら隠しトラック的な要素だったのだろうか。この対談音声の中身は作者である村上春樹とイラストレーター安西水丸の雑談だが、恐ろしく音質が悪いので聞いているのは正直に言って苦痛を伴う。30年でマイクの品質も飛躍的に向上したのかもしれない。サイト本体はあとで文字コードを書き換えるのでホームディレクトリにでもコピーしておこう。
文字化けを直す
CDのメインコンテンツであるWebページ群は30年前の仕様なので今のブラウザで開いても文字化けしてしまう。この本が出版されたころはHTMLタグとして文字コードを指定するような作法は一般的ではなく、当時の主流だったShift-JISが暗黙的に使われている。最近のブラウザでは明示的な指定がなければブラウザ自身が都度文字コードを判定しており、それは当然ながら必ずしも成功するわけではない。リンクを巡るたびにエンコーディングを毎回指定するのも不便なので、まとめて文字コードを変換してしまおう。
素朴にiconv -f SHIFT_JIS -t UTF-8で一括変換しようとすると、273個のうちASAHIDO/FORUM/FORUM025.HTMの1個だけがエラーで止まる。中を覗いてみると、8f 36・82 21・82 20という、Shift-JISとして成立しないバイト列が4箇所混じっていた。該当箇所はいずれも1997年1月に読者から届いたメールの引用部分となっているので、これは破損したまま採録してしまったのだろう。普通はこんなの校正してから出版しそうなものではあるが、牧歌的な時代だったのかもしれない。文字コードの変換に使うiconvはこの最初の破損箇所で処理を打ち切ってしまうので、//IGNOREというオプションを付けて最後まで走ってもらおう。
find ASAHIDO -iname "*.htm" -exec sh -c '
iconv -f SHIFT_JIS -t UTF-8//IGNORE "$1" > "$1.tmp" && mv "$1.tmp" "$1"
' _ {} \;
273個すべてが、UTF-8として問題なく読めるファイルになった。変換後、ついでに各HTMLの<HEAD>にcharset指定を追加しておけば安心だ。
find ASAHIDO -iname "*.htm" -exec sh -c '
grep -qi "charset" "$1" || sed -i "" "/<HEAD>/a\\
<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">
" "$1"
' _ {} \;
ページをひらいてみる
ここまでくればASAHIDO/INDEX.HTMをブラウザで開くだけで、当時のサイトがそのまま閲覧できるようになった。<script>タグも存在しない素のHTMLと画像のサイトなのでローカルで完結する。19264個あるリンク・画像参照のうち絶対URLは一つしかなく、それもすでに閉鎖されているインターネット雑誌「DOORS」の公式サイトへのリンクopendoors.asahi-np.co.jpだけだった。なくても問題ない。
すさまじいレトロさ
<HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <TITLE>村上朝日堂/扉</TITLE> </HEAD> <BODY BACKGROUND="image/wara2.gif" text="#000000" link="#FF2626" vlink="#2268CFF" alink="#F9FF53"> <BASEFONT SIZE=3> <CENTER> <TABLE CELLPADDING="2" BORDER="5"><TR ALIGN="CENTER"><TD> <IMG SRC="image/kanban.gif" WIDTH="255" HEIGHT="47" alt="村上朝日堂"> </TD></TR></TABLE> <FONT SIZE=-1><CD-ROM版></FONT><BR> <FONT SIZE=+2>夢のサーフシティー</FONT><BR> <BR><B>WELCOME TO <BR>MURAKAMI'S HOUSE OF THE RISING SUN</B><BR> </CENTER>
スタイルシートも文字コード指定もない、控えめで味わい深いHTMLだが、現在のブラウザで問題なく動いている。Appleの後方互換性への意識の低さと、Webという異常なほど後方互換性に執着しているプラットフォームの差を感じる本だった。