
演奏会が終わってホールを出ると、ホームズは満足そうに笑みを浮かべながら言った。
「たっぷりと素晴らしい芸術を堪能させてもらったことだし、今度は我々が精神的な活動を行う番だ」
「なんだい? その精神的活動というのは」
「もちろん、依頼された事件を解決するのさ」
「おや。君は演奏会の前には、すでに結論に達していると言っていたじゃないか」
「いや、新しい可能性が兄えてきたのだよ。いい音楽の精神を刺激する効用といったらじつに素晴らしい。そのうえ副作用はまったくないのだから、その魅力はコカインの7%溶液を凌ぐものがあるよ」
「確かに素晴らしい演奏だったね。友人として、そして医者としても、君が精神の高揚のためにコカインではなく演奏会を選んだことをうれしく思うよ」
「時と場合によっては、コカインのはうが優れていることもあるがね。さあ、行こうじやないか」
「どこに行くんだい?」
「まず、郵便局だ。それから、パソコンをいしるつもりだ。ちょっと足を伸ばせばアッパー・スワンダム・レーンだから、ベーカー街にまで戻ることもなかろう」
ホームズは、市内の少なくとも5か所に、パソコンを備えた隠れ家をもっていて、調査の必要に応じて隠れ家でパソコンが使えるようになっていた。私の知っている隠れ家は2か所だけであるが、どちらの隠れ家にも、必要最低限のアプリケーション・ソフトは揃っているし、事件調査の必要に応じてベーカーストリート・ネットにアクセスし、ホストの大容量ハードディスクにアーカイブされているデータファイルをダウンロードきるようになっていた。
ホームズは、郵便局に奇って電報をいくつか打ってから手をあげて辻馬車を呼び止め、御者にアッパー・スワンダム・レーンに行くように指示した。
「どんな調査方針を立てているんだい?」
馬車が走りだしてから私は、ホームズに間いた。
「ホプキンズ君とワード君に、欧州省で午後5時に会うように電報を打っておいた。まだだいぶ時間があるから、その前に僕の仮説を実証しておきたいんだ。じつは、僕の説はほぼ固まっていたのだが、アルバートホールで音楽を聞いているときに、別の可能性が突然思い浮かんだのだよ」
ホームズが、常人には考えられないような驚くべき集中力を発揮する能力をもち、他に興味が集中しているときには、たとえ調査中の事件であってもやすやすと自分の頭のなかから追い払ってしまえることを私は知っていたので、ホールで演奏を楽しんでいるときに少しでも事件について考えだというのが不思議だった。
「今回の事件は、一見、単純に見えるようだが、最初に考えたよりも複雑かもしれないんだ」
「えっ。君は、この事件が単純だと言うのかい?」
「ああ。事件を構成している要素そのものは、じつに単純だよ。しかし、その底に奥深いものが潜んでいないとは言い切れないから、過ちを犯さないためにも確認しておきたいことがあるんだ」
アッパー・スワンダム・レーンの隠れ家は、ずいぶんこじんまりとしている点を除けば、ベーカー街の我々の下宿と同じように、乱雑ながらじつに居心地がよさそうにしつらえてあった。
ホームズは、市内の少なくとも5カ所に隠れ家をもっていて。
ホームズは、ベーカー街の下宿にはもちろん、私の知っている他の隠れ家にも98を置いていたが、この隠れ家のパソコンはエプソンのPC-386GSであった。
「君が、エプソンを使っているとは思わなかったよ」
彼は、わずかに笑みを浮かべると、古いブライヤのパイプに煙草をつめながら言った。
「時代が変わったのだよ。僕が世界で最初のDOS諮問探偵の看板を掲げたときには、98だけで十分だった。調査依頼の9割以上がDOSといっても98上のMS-DOSに関する相談か、もしくはその上で走るアプリケーションソフトに関する調査依頼だったのだからね。他のマシンを用意する必要なんてなかったのさ。ところが、君も知っているように最近になって事情が大きく変わったのだ。98がパソコンの代名詞だった時代は、確実に終焉を迎えつつある。いまや、依頼人の使っているパソコンは98だけでなく、MacやDOS/Vマシンのこともあれば、FM-TOWNSのこともある。98についてさえ精通していればいいというわけではないのだよ。確かに、僕は古いタイプの人間で、ガス灯や辻馬車、電報をこよなく愛している。電灯や自動車、電話はどうも好きになれないのだ。それと同じように、MacやWindowsのGUlの世界よりも、コマンド入力で操作するテキスト・ベースのMS-DOSの世界のほうが落ちつくことができる。だからといって、こういった感情を優先してしまうほど、僕は愚かじゃないよ。だから、ベーカー街の下宿では98を使っているが、市内のあちこちにある隠れ家のうちいくつかにはMacやDOS/Vマシンが置いてある。この部屋に置いてあるのはエプソンの98互換機だが、Windowsが利用できるようにメモリは13.6Mバイトまで増設してあるしね」
「君がMacやDOS/Vマシンまで使っているとは思わなかったよ」
「ああ。あくまでも仕事上で必要になったときだけだがね」
「ところで、このエプソンでどんなことを調べるんだい」
「君は、ディレクトリ・エントリについては知っているはずだね」
彼は、パイプに火をつけると、肘掛椅子のなかでゆったりとそりかえり、パイプから濃い青い渦巻きを送りだしながら言った。
「あまり詳しいことは知らないよ」「そんなはずはないだろう。何回か、君に詳しく説明してあげた記憶があるんだがね」
「じゃあ、忘れてしまったのかもしれないな」
「ふん。じつに君らしい。それじゃあ、徒労になるかもしれないが、もう1回だけ説明させてもらうよ。MS-DOSのファイルには、以下の4種類の属性があるということは知っているかい?」
・書込禁止属性
・不可視属性
・システム属性
・アーカイブ(書込済み)属性
ホームズは、PC-386GSの横に置いてある黒板にチョークで書きながら言った。
「個々の属性の意味については、おいおい説明していくつもりだが、たとえば、MSDOS.SYSとIO.SYSには、システム属性が備わっているんだ」
「ああ。それなら知っているよ。システム属性を備えたファイルは、DIRコマンドを実行しても見えないんだったね」
「そのとおりだ。そしてMS-DOSでは、ファイルが作成されるたびにディレクトリ・エントリと呼ばれる領域が作られ、次の内容が書き込まれるんだ」
ホームズは、ディレクトリ・エントリに含まれる内容を黒板に書き出しながら言った。
・ファイル名 …………… 8バイト
・ファイルの拡張子名 … 3バイト
・属性 …………………… 1バイト
・予約領域 ……………… 10バイト
・時刻 …………………… 2バイト
・日付 …………………… 2バイト
・クラスタ番号 ………… 2バイト
・ファイルサイズ ……… 4バイト
「合計すればわかるように、ひとつのディレクトリ・エントリは32バイトによって構成されている。ディレクトリ・エントリとは、図書館の索引カードのようなものを想像してもらえばいいだろう。DIRコマンドでディレクトリが表示されたり、実行ファイルのファイル名を人力するとそのファイルが実行されるのは、このディレクトリ・エントリに書き込まれている情報を参照して、MS-DOSが処理を行うからなんだ」
「ああ、思い出したよ。ディレクトリ・エントリの時刻に関する情報を『00:00:00』に書き換えることによって、DIRコマンドを実行しても時刻が表示されなくなるという事件があったね。たしか『時刻失踪事件』という名前で記録しておいたはずだよ」
「あのとき問題になったのは『時刻』だが、今回注目したいのが『属性』なんだ。属性には、1バイトすなわち8ビットの情報が書き込まれているのだが、各ビットには次のような意味かあるんだ。
・0ビット目 … 書込禁止ファイル
・1ビット目 … 不可視ファイル
・2ビット国 … システムファイル
・3ビット目 … ボリュームラベル
・4ビット目 … サブディレクトリ
・5ビット目 … アーカイブ(書込済みファイル)
・6ビット目 … 予約
・7ビット目 … 千約
「どういうことだい?」
「これだけでは、何のことかよくわからないかもしれないね。横に並べ替えて表にして見ればわかりやすいだろう」
ビット位置 7 6 5 4 3 2 1 0
内 容 予 予 書フ サデ ボラ シフ 不フ 読フ
約 約 込ァ ブィ リベ スァ 可ァ 出ァ
済イ レ ュル テイ 視イ 専イ
みル ク | ムル ル 用ル
ト ム
リ
一般のファイル 0 0 1 0 0 0 0 0
システムファイル 0 0 1 0 0 1 1 1
ボリュームラベル 0 0 0 0 1 0 0 0
サブディレクトリ 0 0 0 1 0 0 0 0
「この表を見ればわかるように、通常のファイルは、5ビット目に『1』が立つ。これを2進数で表現すると『0010000』となる。サブディレクトリの場合は、4ビット目に『1』が立つから、2進数で表現すると『0001000』ということになる。ここまでは分かるかい」
「ああ。理解できたつもりだよ。でも、2進数の表現というのはどうも馴染みにくいうえに、わかりづらいね」
「だから、コンピュータの世界じゃ16進数を使うことが多いんだ。その方面の専門家ともなると、頭のなかで変換できるらしいが、我々にはちょっと無理だから、この表を参考にしてもらえばいいだろう」
ホームズは、引き出しから1枚のプリントアウトを取り出すと、投げてよこした。
2進数…16進数 2進数…16進数 2進数…16進数 2進数…16進数
00000000…0h 00010000…10h 00100000…20h 00110000…30h
00000001…1h 00010001…11h 00100001…21h 00110001…31h
00000010…2h 00010010…12h 00100010…22h 00110010…32h
00000011…3h 00010011…13h 00100011…23h 00110011…33h
00000100…4h 00010100…14h 00100100…24h 00110100…34h
00000101…5h 00010101…15h 00100101…25h 00110101…35h
00000110…6h 00010110…16h 00100110…26h 00110110…36h
00000111…7h 00010111…17h 00100111…27h 00110111…37h
00001000…8h 00011000…18h 00101000…28h 00111000…38h
00001001…9h 00011001…19h 00101001…29h 00111001…39h
00001010…Ah 00011010…1Ah 00101010…2Ah 00111010…3Ah
00001011…Bh 00011011…1Bh 00101011…2Bh 00111011…3Bh
00001100…Ch 00011100…1Ch 00101100…2Ch 00110100…3Ch
00001101…Dh 00011101…1Dh 00101101…2Dh 00110101…3Dh
00001110…Eh 00011110…1Eh 00101110…2Eh :
00001111…Fh 00011110…1Fh 00101111…2Fh 11111111…FFh
「この16進数の表の後ろについている『h』は何なんだい?」
「16進数であることを示す記号さ。Hexadecimalの略で、本来は『27(16進)』とか『27hex』と書くらしいが、省略して『h』や『H』がついているだけのことも多いようた。この記号がないと、10進数なのか16進数なのか区別がつかない場合があるからね」
「なるほどね」
「さて、この表を見ると、一般のファイルの属性は『0010000』だから『20h』、サブディレクトリは『0001000』だから『10h』であることがわかるはずだ」
「そうだね」
「じゃあ、実際に調べてみよう」
ホームズは、エプソンの電源を入れながら言った。
「ワトスン君。すまないが1.2Mバイトのフロッピーディスクが、君の後ろの書棚に入っているから取ってくれないかい」
私は、書棚のケースからフロッピーディスクを取り出すと、ホームズに手渡した。彼は、フォーマットを実行した後で、長い繊細な指を巧みに動かしてコマンドを入力しながら言った。
「サリー州のデート氏の事件の際にも説明したかと思うのだが、この画面は、システムを転送してフォーマットした1.2Mバイトのフロッピーディスクのディレクトリ・エントリの内容なんだ」
00000000 49 4F 20 20 20 20 20 20-53 59 53 27 00 00 00 00 IO SYS'....
00000010 00 00 00 00 00 00 02 00-68 17 02 00 00 00 01 00 ........h.......
00000020 4D 53 44 4F 53 20 20 20-53 59 53 27 00 00 00 00 MSDOS SYS'....
00000030 00 00 00 00 00 00 02 00-68 17 42 00 00 74 00 00 ........h.B..t..
00000040 43 4F 4D 4D 41 4E 44 20-43 4F 4D 20 00 00 00 00 COMMAND COM ....
00000050 00 00 00 00 00 00 00 00-68 17 5F 00 63 61 00 00 ........h._.ca..
00000060 00 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 .裏裏裏裏裏裏裏裏
00000070 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 裏裏裏裏裏裏裏.
00000080 00 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 .裏裏裏裏裏裏裏裏
00000090 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 裏裏裏裏裏裏裏.
000000A0 00 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 .裏裏裏裏裏裏裏裏
000000B0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 裏裏裏裏裏裏裏.
000000C0 00 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 .裏裏裏裏裏裏裏裏
000000D0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 裏裏裏裏裏裏裏.
000000E0 00 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 .裏裏裏裏裏裏裏裏
000000F0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 裏裏裏裏裏裏裏.
「ああ。確か、MS-DOSの『拡張機能セット』に入っているなんとかというコマンドを使えば、表示させることができるんだったね」
「SYMDEBコマンドさ。5〜6行目に注目してみたまえ。COMMAND.COMファイルに関する情報がここに格納されている」
「つまり、これがディレクトリ・エントリなんだね」
「そうさ。さっきも説明したように、最初の8バイトにはファイル名が書き込まれている。5行目の『43 4F 4D 4D 41 4E 44』は、アスキーコードを16進数で表現したものであり、アスキーコード表を使って調べれば『COMMAND』と書かれていることがわかる。1バイト飛ばして、『43 4F 4D』はCOMMAND.COMの拡張子の『COM』を表わしている」
「『COMMAND』と『COM』の間で、なぜ1バイト飛ばしたんだい?」
「君も知っているように、MS-DOSのファイル名は最大8文字まで使えるようになっている。ところが、『COMMAND』は7文字しかないからさ」
「ああ、そうか。それで、8バイト目にはアスキーコードで空白を示す『20h』が入っているというわけなんだ」
「その通りだ。そして、今回の問題となっている『属性』は、拡張子の次の1バイトを調べればいい」
「『20h』になっているね」
「『20h』を2進数で表わすと『0010000』だから、COMMAND.COMファイルの属性は一般ファイルということになる。上の行のIO.SYSファイルとMSDOS.SYSファイルの属性は『27h』になっているだろう。これを16進数で表わすと『00100111』だから、書込済みファイル、システムファイル、不可視ファイル、書込禁止ファイルの4つの属性を備えているということさ。試しに、I0.SYSファイルの属性を『21h』に変更してみよう。16進数で表わすと『00100001』だから、システムと不可視の属性を解除してしまうことになる」
ホームズは、私には理解できない操作をしばらく行ってから言った。
「さあ、ドライブEのディレクトリをとってみたまえ」
DIRコマンドを実行すると、IO.SYSファイルが表示された。
A:¥>dir e:
ドライブ E: のディスクのボリュームラベルはありません.
ボリュームシリアル番号は 221C-18D9
ディレクトリは E:¥
IO SYS 65536 91-11-18 0:00
COMMAND COM 48416 91-11-18 0:00
2 個 113952 バイトのファイルがあります.
1095680 バイトが使用可能です.
A:¥>
「ヘえ。属性を変更することによって、システムファイルのIO.SYSファイルをDIRコマンドで表示させることができるようになるのか」
「それだけじゃない。一般ファイルに不可視属性を指定することによって、ファイルを見えなくすることだってできるんだ。それに、実用的ではないが、こんなこともできるんだぜ」ホームズは、再びキーボードを操作してから言った。
「さあ、ワトスン君。ドライブEのディレクトリをとってみたまえ」
A:¥>dir e:
ドライブ E: のディスクのボリュームラベルはありません.
ボリュームシリアル番号は 221C-18D9
ディレクトリは E:¥
IO SYS 65536 91-11-18 0:00
COMMAND COM <DIR> 91-11-18 0:00
2 個 65536 バイトのファイルがあります.
1095680 バイトが使用可能です.
A:¥>
「なんだい、これは! COMMAND.COMファイルがサブディレクトリとして表示されているじゃないか」
「サブディレクトリの属性は『0001000』だから、16進数の『10h』に書きなおした結果、見事、サブディレクトリに変身したというわけさ。試しにカレントディレクトリをCOMMAND.COMに移して、ディレクトリをとってみたまえ」
E:¥>command.com
E:¥>COMMAND.COM>dir
ドライブ E: のディスクのボリュームラベルはありません.
ボリュームシリアル番号は 221C-18D9
ディレクトリは E:¥COMMAND.COM
鮨 0
1 個 0 バイトのファイルがあります.
1095680 バイトが使用可能です.
E:¥>COMMAND.COM
「おや。本当だ! COMMAND.COMがサブディレクトリになっているよ」
「DIRコマンドを実行すると、一部の表示がおかしくなってしまうし、いろいろと不都合な点もあるのだが、属性を変更するだけで、一般ファイルがサブディレクトリになってしまうことはわかっただろう。当然、書込禁止属性が設定されていれば、RENDIRコマンドでサブディレクトリ名を変更することはできないし、不可視属性が設定されていれば、DIRコマンドを実行してもそのサブディレクトリ名は表示されないということになる」
「ヘえ。ファイルもサブディレクトリも、MS-DOSの内部的にはディレクトリ・エントリの属性がわずか1バイト違うだけというのは驚きだよ」
「それこそ今回の事件解決のカギを握っているのさ」
「えっ! どういうことだい」
そのとき、部屋をノックする音がして、浮浪児が一人はいってきた。みすぼらしいカカシ同然の格好ではあったが、汚れた顔をよく見ると、意外に聡明そうな表情をしているのが印象的だった。
「やあ。ウィギンス。待っていたぞ。首尾はどうだった」
「はい。電報を受け取ってから、街中のショップを駆け回りましたよ。けっこう数があったんでたいへんでしたが、人気のある主なものはだいたい集めてきました」
ウィギンスと呼ばれた少年は、ソフトウェアのパッケージらしきものがたくさん入った紙袋をホームズに手渡した。
「よくやった。駄賃に1ギニーだ」
少年は、軽く会釈すると、勢いよく通りに飛び出していった。ホームズは、机を離れると、パイプに火をつけながら言った。
「ワトスン君。突然ですまないが、僕をしばらく一人にしておいてくれないかい。5時ちょうどに、欧州省の前で落ち合おうじゃないか」
私は、ホームズが精神力を集中する際には、一人で思索に耽ける必要があることを知っていたので、快く承知した。
部屋をノックする音がして、浮浪児が一人はいってきた。
5時すこし前に、欧州省の玄関に辻馬車をつけると、ホームズとホプキンズ警部が待っていた。欧州省の受け付けで、クレイトン・ワードに面会をもとめると、私たち3人は応接間に通された。
「ワードさん。ホープさんがパソコンをいじるようなことはありませんでしたね」
「ええ。お言い付けどおりにしました。私がずっと表計算に取り組んでいたので、彼はパソコンを使うことができなかったのです」
「それは結構。もっとも、今になって考えるとそこまでやる必要はなかったようですがね。さあ、彼に会いに行きましょう」
事務室に4人で入ると、机に向かって仕事をしていたホープが怪訝そうな顔をして我々を見回した。クレイトン・ワードが、ホープに我々を紹介しようとするのを遮って、ホームズがやさしく言った。
「ホープさん。微妙な問題を含んだ話が少しあるのですが、10分ばかり二人きりになれませんかね?」
「なんだい、君は。私は、とても忙しい身なんだ。ワード君。君は、なんでこんな失礼な連中を事務室に入れるんだホープは、ホームズを睨みながら語気鋭く言った。ホームズは前屈みになって、「ランスとドラゴンナイトの保管場所について知りたいと言えば、それで十分じゃないですか?」とささやいた。突然、ホープ氏の顔色が真っ青になったかと思うと、「どうやら、応接室で二人っきりで会ったほうがいいようですね」と、弱々しく言った。
突然、ホープの顔色が真っ青になった。
しばらくすると、ホームズはホープといっしょに応接室から出てきながら言った。「では、くれぐれも、私の言うとおりにしてください」ホープは汗をハンカチで拭きながら答えた。「はい。それは、もう。もちろんです」
「さて。ホプキンズ君にワードさん。事件は無事解決したよ。明日までには、ハードディスクの消えた9Mバイト分の容量はもとに戻っているはずだし、ホープさんのスパイ容疑も完全に晴れた。若干、微妙な問題があるんで真相をすべて君たちに話すわけにはいかないが、近い将来、ワトスン君が、登場人物をうまくこまかして事件簿のひとつに取り上げてくれるだろう。さあ、ワトスン。そろそろ居心地のいいベーカー街の下宿に戻ろうじゃないか」
不可視属性にしたサブディレクトリは表示されないが、そのサブディレクトリに移動すればファイルは見ることができるんだ。
「いったい、どういうことなんだい?」
ベーカー街への帰り道の途中で、私はホームズに聞いた。
「じつに簡単なことさ。ホープ君は、不可視属性に設定したサブディレクトリに、いわゆる美少女ソフトをたくさん貯め込んでいたんだ。9Mバイト分もね」
「サブディレクトリを不可視属性にして?」
「ああ、そうなんだ。さっき隠れ家で実験してみせただろう。MS-DOSでは、ファイルもサブディレクトリも扱いが同じだから、サブディレクトリを不可視属性にすることができるんだ。その場合、DIRコマンドを実行してディレクトリをとってもそのサブディレクトリは表示されない。しかし、不可視属性になっているサブディレクトリにカレントディレクトリを移してからDIRコマンドを実行すれば、その下のサブディレクトリやファイルは通常どおり表示されるから実行に支障はない。他人に見せたくないディレクトリやファイルを隠しておくには便利なんだ」
「それで、ワードさんは、美少女ソフトがハードディスクに保存されていることに気付かなかったわけだね」
「/VパラメータをつけてCHKDSKコマンドを実行すれば、不可視属性のついたサブディレクトリやファイルも表示されるから、それで気付くこともできたんだがね」
「ところで、さっき君がホープさんに囁いたドラゴンなんとかというのは、何なんだい?」
「ああドラゴンナイトだ。ランスもそうなんだが、いわゆる美少女ソフトのなかでもとくに人気があるらしいん。そっちの分野のソフトは、僕にもまったく未知の世界だったんで、ウィギンスに急いで集めてもらって、例の隠れ家で少しばかり研究してきたというわけさ」
「しかし、密かに隠しているファイルが美少女ソフトだというのがよくわかったね」
「ああ。演奏会の最中に閃いたんだ。依頼人の講を聞いたかぎりでは、どうもホープさんは小心者のようだし、いまの彼の地位や環境を考えると、とてもスパイ行為を働くとは思えない。そんな人物が、同僚に隠れてこそこそと便うソフトは何かと考えてみれば、君にも容易に推測できたはずだ」
「そういうことだったのか。でも、なぜ、ホプキンズ警部やワードさんには教えなかったんだい」
「ああ。会社の財産であるハードディスクの一部を私用のアプリケーションで専有してしまうことが、法律的にどんな罪になるのかは、僕はその道の専門家ではないのでよく分からない。ただ、彼は、自分の行為を恥じて、明日までにハードディスクの内容を削除することを約束してくれたんだし、正義の結末さえつけば、知っていることを何でも暴露するには及ばないさ」
「彼は約束を守るかな」
「きっと彼の未来が、僕の今日の判断が正しかったことを証明してくれるだろう」(おわり)