Prologue 奇妙な招待状
2012年1月4日、東京都楓野市。
冬休みも残り数日となった夕方、僕は自分の部屋で古文の教科書と睨み合っていた。
かれこれ30分ほど経つのだが、状況は一向に改善していない。
「……いや、知らんがな」
とうとう声に出してしまった。
冬休みの課題として出されたのは、古文を読んで登場人物の心情を考察するというものだった。文章を現代語に訳すところまでは問題ない。単語の意味も文法も分かるし、話の内容だって理解できる。
問題は、その先である。
『このときの男性の心情について、あなたの考えを原稿用紙2枚程度にまとめなさい』
いや、だから知らないって。
教科書の中では、昔の男が恋人に会えないことを嘆いていた。会いたい。会えない。悲しい。なるほど、ああ、そっすか……w 大変っすね(笑)
……これ以上、何を書けばいいのだろう。
そもそも、彼女がいたことすらない高校生に恋愛感情の考察を求めるのは、少々難易度が高すぎやしないだろうか。
「会いたいなら会いに行けばいいじゃん……」
呟いてから、当時の身分制度や交通事情を思い出した。そう簡単に会いに行ける時代ではなかったのかもしれない……となると、彼は相当に辛かったのだろう。うん。それは分かった。
で、残りの原稿用紙はどうすればいい?
僕はシャープペンシルを置き、椅子の背もたれに寄りかかった。
数学なら、こういう悩み方をしなくて済むのに。
もちろん数学だって、すべての問題に簡単な答えがあるわけじゃない。何時間考えても解けない問題はあるし、そもそも答えが分かっていない問題だって存在する。でも、少なくとも何を求められているのかは明確だ。条件を整理して、使えそうな方法を試して、間違っていたら別の方法を考える。難しいほど面白いし、解けたときは気持ちがいい。
それに比べて、千年近く昔の恋愛感情を原稿用紙2枚にまとめろという課題は、あまりにも自由度が高すぎる。
僕には向いていないと思う。
「……ちょっと休憩しよう」
時計を見ると、午後5時を少し回ったところだった。
夕飯までにはまだ時間がある。休憩するにはちょうどいい。
というわけで、僕は古文の教科書を閉じ、机の右側に置かれたマウスへ手を伸ばした。
相沢透。16歳。
東京都立白峰高等学校に通う高校1年生である。
好きなものはアニメ、漫画、ゲーム。それからパソコン関係全般。身長は162cmで、同年代の男子と並ぶと大抵見上げる側になる。
まあ、身長についてはこれから伸びる予定なので、特に問題はない。
……予定は未定だけど。
ついでに女子と話すのもあまり得意ではない。
学校ではちょっと変わったやつだと思われているらしいが、僕としては普通に生活しているつもりだ。 そんな僕の机には、デスクトップパソコン用のモニターが2台並んでいる。周囲には電子部品や専門書が積まれ、本棚は漫画とゲームソフトでほぼ埋まっていた。 母さんにはよく片付けろと言われるものの、個人的にはそれほど散らかっていると思っていない。 必要なものがどこにあるのか、大体は把握しているからだ。
パソコンの画面には、海外の技術者たちが利用しているチャットが開かれていた。
僕が日頃から出入りしている場所の1つで、暗号やプログラミング、情報セキュリティに関する話題がよく飛び交っている。
ちょうど新しいメッセージが届いていた。
WALKER:NIL, are you there?
――NIL、いるか?
僕はキーボードに手を伸ばした。
NIL:Yeah. What's up?
――いるよ。どうしたの?
そして、すぐに返事が届く。どうやら、検証中の暗号アルゴリズムが想定どおりに動かず、原因を探しているらしい。
続けて数式とプログラムの一部が送られてきた。
「お、面白そう」
僕は椅子を少し前へ動かし、資料を読み始めた。
昔から海外の技術コミュニティに入り浸っていたおかげで、英語に関しては読み書きはもちろん、会話にも苦労はない。
送られてきた資料を読み進める。
問題になっているのは、ある条件で暗号処理を行ったとき、復号後のデータが元の値と一致しなくなるという現象だった。
相手は何度も検証したらしく、試した手順も細かく書いてある。
僕は数式を追いながら、途中で首を傾げた。
「……あれ?」
もう一度、最初から確認する。
ある処理で使っている値が、その前の定義と一致していない。
大した違いではないが、そこが変われば後の計算結果も当然変わってしまう。
「いや、ここじゃん」
念のため、問題の部分だけを取り出して簡単な検証プログラムを書いてみる。
予想していた結果が出た。
次に、怪しい箇所を修正する。
今度は正常に動いた。
「……よし」
僕は問題の行を示し、修正案をチャットへ送った。
数分後、相手から返信が届く。
WALKER:Oh, you're right. That fixes it.
――ああ、本当だ。それで直った。
続けて、もう1通。
WALKER:You're a genius.」
――君は天才だな。
「ふっふっふ……」
思わず口元が緩んだ。
いや、別に褒められるためにやったわけではない。困っている人がいたから手伝っただけだ。 ただ、天才と言われて悪い気はしない。
僕は椅子の上で腕を組み、誰もいない部屋で偉そうに頷いた。
「まあ、そうでしょうとも」
「透ー、ちょっといい?」
「うひゃあっ!?」
突然背後から声が聞こえ、危うく椅子から転げ落ちそうになった。
慌てて机を掴み、なんとか体勢を立て直す。ついでに反射的に画面も切り替えてしまった。
振り返ると、部屋の入り口に姉ちゃんが立っていた。 相沢美月、19歳。大学1年生。
僕にとっては、どんな難解な暗号より対処が難しい人物である。
「……何その声。カエルでも踏んだ?」
「踏んでない! ていうかノックしてよ!」
「したよ。3回」
「聞こえてないんだけど!?」
「じゃあ次からもっと強く叩くね」
「いや、そういう問題じゃなくて……」
姉ちゃんは僕の抗議を聞き流し、部屋へ入ってきた。
「お母さんが夕飯何食べたいかって」
「なんでもいい」
「出た。世界のママが一番困る回答ランキング堂々の第1位」
「じゃあカレー」
「昨日食べたじゃん」
「じゃあハンバーグ」
「ひき肉ないって」
「……僕に選択権ある?」
「一応、希望は聞いとこうかなって」
なんという形式的なアンケートだろう。
最初から母さんに任せればいいのではないだろうか。
「じゃあもうなんでもいいよ。酢豚でも豚汁でも洗濯機でも」
「はいはいはい。伝えとく」
用事が済んだので、これで帰ってくれると思った。 しかし、姉ちゃんはなぜか僕の机の方を見ていた。 嫌な予感がする。
「ねえ、透」
「……何?」
「あんた、さっき何隠したの?」
「はい?」
「パソコンの画面。私が来た瞬間、慌てて切り替えたでしょ」
しまった……どうやら見られていたらしい。
「いや、別に何も?」
「ふーん」
姉ちゃんはにやりと笑った。
ああ、まずい、なんかめんどくさそう。
「もしかして、女の子とチャットしてた?」
「……はあ!?」
思わず声が裏返った。
「なんでそうなるわけ!?」
「だって、すっごい慌ててたじゃん」
「別に慌ててないし! そもそもインターネット上の交流において、相手の性別がどうとかいうのは本質的な問題じゃないというか、現代社会では男女がチャットをすること自体は極めて自然なことであって――」
「うわ、すんごい早口」
「最後まで聞けよ!」
姉ちゃんは腹を抱えて笑い始めた。
完全に遊ばれている。
何が楽しいのか知らないが、なんか楽しいらしい。
もうもはや何が楽しくて笑ってるのか自分でも理解できてなさそうで、そこまでくるともはや人生楽しそうで羨ましい。
「いやー、透って分かりやすいよね」
「何が!?」
「そういうところ」
「説明してよ!」
「まあまあ。彼女できたら教えてね」
「できてないって言ってるでしょ!」
「できたら、ね」
最後まで僕の話を聞く気はないらしい。
一方通行すぎる。ダンプカーと話してるみたいだ。
姉ちゃんはひとしきり笑うと、夕飯までには降りてくるよう言い残して部屋を出ていった。
扉が閉まったところで、僕は大きく息を吐いた。
「……まったく。プライバシーという概念を覚えていただきたい」
別に、怪しいことをしていたわけではない。
ただ、家族にはネットで何をしているのか詳しく話していなかった。
NILという名前で活動していることも知らない。
NIL。
それが、僕が中学1年生の頃から使っているハンドルネームだ。
最初は面白そうな暗号を見つけては解いて遊んでいただけだったのだが、いつの間にか海外の技術者や研究者ともやり取りするようになっていた。
おかげで一部の暗号解読コミュニティでは、NILという名前を知っている人もそれなりにいる。
もっとも、そんなのは本当に狭い世界の話だ。
学校でNILと言ったところで、知っている人はまずいないだろう。
それに、ネットでは本名も年齢も公開していない。 相手が大学教授でも企業の技術者でも、僕が高校生であることを気にせず普通に議論してくれる。それが気に入っていた。
現実の学校では、女子に話しかけられただけで変な声が出ることもあるのに、ネットなら案外まともに会話できるのだから不思議である。
……いや、さっき姉ちゃん相手にも変な声が出ていたけど。
まあ、それはそれとして。
僕は画面を戻し、先ほどの相手へ短い返信を送った。
NIL:Glad it worked.
――直ってよかった。
それから机の上の古文の教科書と白紙の原稿を見てため息をつく。
「……明日の僕に任せよう」
うん。
明日の僕なら、きっと何とかしてくれるだろう。
しらんけど。
僕はブラウザを開き、海外の匿名掲示板へアクセスした。
4chan。
アニメやゲームから政治、科学、オカルトまで、ありとあらゆる話題が飛び交う巨大な画像掲示板だ。
僕も暇なときにはよく覗いている。
たまに専門的で面白い議論がある一方、何が面白いのかよく分からない画像や、クソしょーもない言い争いも大量に流れてくる。
むしろ、そちらが大半を占めている気がする。
「……相変わらずカオスだなー」
いくつかのスレッドを眺めてみたが、特に面白そうなものはなかった。
そろそろ別のサイトへ移ろうか。
そう思いながら、オカルトや超常現象を扱う掲示板を開いたときだった。
「……ん?」
少し変わった投稿が目に留まった。
添付されていたのは、1枚の画像。
「……何これ」
最初は、よくある悪戯だと思った。
特別な装飾もないし、誰かを笑わせようとしているようにも見えない。宣伝なら何の商品なのか分からないし、投稿者の名前も目立っていない。
ただ、妙に気になった。
画像に書かれていた英文はこうだ。
Hello. We are looking for highly intelligent individuals. To find them, we have devised a test.
――こんにちは。我々は高度な知性を持つ人々を探しています。そのような人々を見つけるために、我々は試験を用意しました。
There is a message hidden in this image.
――この画像には、メッセージが隠されています。
Find it, and it will lead you on the road to finding us. We look forward to meeting the few that will make it all the way through.
――それを見つけてください。そうすれば、我々へとたどり着く道が開かれるでしょう。我々は、最後まで到達する少数の人々に会えることを楽しみにしています。
Good luck.
――幸運を祈ります。
3301
「……なんだよこの、いかにもな怪しさ溢れるオーラ」
思わず笑ってしまった。
高度な知性を持つ人間を探しているんで、そのために試験を用意しました〜! と、ずいぶん大げさなことを言っているが、肝心の組織名も目的も書いていない。
「いや、せめて給料くらい書いとけよ。福利厚生はどうなってんだよ」
もっとも、よく考えれば求人広告ではないのかもしれない。
あくまで、問題を解ける人間を探しているということなのだろう。
掲示板にはすでに何件か返信がついていた。
単なる悪戯だと笑っている人もいれば、政府機関の採用試験ではないかと推測している人もいる。
実際に画像を調べ始めている参加者もいるようだった。
僕は改めて、画像に書かれた文章を読み直す。
この画像には、メッセージが隠されている。 わざわざそんなことを書くのだから、何か仕掛けがあるのだろう。
「……ふうん」
ちょっと面白そうじゃないか。
僕は椅子に座り直した。
画像ファイルには、画面に表示される絵とは別の情報を埋め込める。
たとえば、画像として使われない部分へ文字列を追加することもできるし、人間の目では分からない形で情報を隠す方法もある。
その手の仕組みなら、少しは知っている。
「とりあえず、見てみるか」
画像を保存する。
ファイル名は《final.jpg》だった。
「ファイナル、ねえ……」
最初の問題なのにファイナルとは、なかなか気の早い名前である。
まあ、単に投稿者がそう名付けたかっただけかもしれないし、この時はそのファイナルというファイル名について、深く考えることもなかった。
僕は保存した画像をバイナリエディタで開いた。
画面には16進数の数字と、それに対応する文字列が表示される。普段はただの画像として見ているものが、内部ではどんなデータになっているのかを確認するためのものだ。
まずはファイルの基本構造を調べてみる。
JPEGとしては普通に開けるし、特におかしなところは見当たらない。
次に、データの末尾へ移動する。
「……あれ?」
手が止まった。
JPEGファイルには、画像データの終わりを示す部分がある。
ところが、その後ろに余計な文字列がくっついていた。
僕は表示位置を調整し、その部分を読み取った。
TIBERIVS CLAVDIVS CAESAR says "lxxt>33m2mqkyv2gsq3q=w]O2ntk"
「ティベリウス・クラウディウス・カエサル……?」
声に出してから、首を傾げた。
古代ローマ皇帝の名前だ。
確か、第4代皇帝クラウディウスの名前だったはず。
その後ろには、意味の分からない文字列が続いている。
「カエサル……カエサル、ね、そうか……」
その名前から思い当たる暗号がある。
──カエサル暗号。
アルファベットを決まった数だけずらす、古典的な暗号方式だ。
例えば3文字進める場合、AはDになり、BはEになる。復号するときは逆方向へ戻せばいい。
ただ、今回の文字列にはアルファベットだけでなく、数字や記号も含まれていた。
英字だけをずらしても、全部は読めそうにない。
僕はもう一度、皇帝の名前を確認した。
第4代ローマ皇帝。
「……4?」
数字として使えそうなのは、それくらいだ。
試しに文字を4つ戻してみよう。
ただし、今度はアルファベットだけを動かすのではない。
コンピューターでは、文字や記号にもそれぞれ数字が割り当てられている。ASCIIと呼ばれる文字コードでは、例えば大文字のAは65、小文字のaは97として扱われる。
この番号自体を4つ戻せば、英字以外の記号もまとめて変換できる。
もちろん、それで正解になるとは限らない。
でも、試すのに時間はかからない。
僕は短いプログラムを書き、文字列を入力した。
まず、先頭の4文字を確認する。
lxxt。
それぞれの文字コードから4を引く。
lはh。
xはt。
もう1つのxもt。
最後のtはp。
「……http?」
お? ちょっと待て。
僕は続きを変換した。
次の記号は「>」だ。文字コードで4つ戻すと「:」になる。その後ろの「33」は「//」だ。
http://
ここまで来れば、さすがに偶然ではないだろう。
僕は残りの文字列をまとめて処理した。
画面に結果が表示される。
http://i.imgur.com/m9sYK.jpg
「……おお!」
思わず声が出た。
URLだ。
しかも、画像共有サイトのアドレスになっている。 「へえ……ちゃんと作ってるじゃん!」
少しテンションが上がった。
最初は変な求人広告みたいなものだと思っていたが、どうやら違うらしい。
僕は掲示板へ戻り、ほかの参加者たちの書き込みを確認した。
すでに同じ文字列を発見した人がいる。
4文字戻すことに気づいた人もいた。
一方で、画像のどこに情報が隠されているのか分からず困っている人もいる。
「お、盛り上がってるな」
思わず口元が緩み、もう一度、解読したURLを見る。
次はどんな画像が表示されるのだろう。
そもそも、この問題を作ったのは誰なんだろうか。
最初の文章には、最後まで到達した少数の人間に会うのを楽しみにしている、と書かれていた。
ということは、まだ問題が続いているのかもしれない。
だとしたら、ぜひ挑戦してみたい。
どこまで続くのかは分からないけれど、少なくとも古文の感想文よりは面白そうだ。
そこで、ふと時計が目に入った。
「……あ」
夕飯の時間を過ぎている。
あー、やばい。
姉さんがまた呼びに来るかもしれない。
というか、さっきまで夕飯のメニューについて話していたのに、完全に忘れていた。
僕は少し考えた。
ここでやめて、ご飯を食べに行くべきだろうか。 ……いや。
次の画像を見るくらいなら、きっと1分もかからない。
うん。1分だけ。
それくらいなら問題ないはずだ。
僕は解読したURLをコピーし、ブラウザのアドレス欄へ貼り付けた。
「よし。ちょっとだけ遊んでやるか」
そう呟いて、Enterキーを押した。




