第3話 デバッグ・モード起動
カーテンを閉め切った薄暗い部屋には、モニターの青白い光だけが灯っていた。
キーボードを叩く乾いた音が、不規則なリズムで響き続ける。
俺、木島蓮(きじま れん)は、ここ数日間、一歩も外に出ていなかった。食事はウーバーで頼んだ冷めた弁当を機械的に胃に流し込むだけ。睡眠も最小限に削り、ひたすらコードの海を泳いでいた。
「……見つけた」
掠れた声が漏れる。
目の前のモニターには、無数のウィンドウが展開されている。
Twotterの特定のアカウント群の相関図、画像解析ツールの結果画面、そして大学の掲示板のログ。
俺を陥れた偽造写真の拡散元となったアカウントは、一見すると無関係な複数のユーザーに見えた。だが、投稿時間とIPアドレスのパターンを解析すると、ある共通点が浮かび上がってきたのだ。
「VPNを使って海外経由に見せかけてるけど……パケットのヘッダ情報に残骸がある。発信元は、大学構内のWi-Fiスポット」
しかも、そのMACアドレスは、以前サークルの部室で佐伯が使っていたノートPCのものと一致する可能性が高い。
だが、これだけでは弱い。あくまで「可能性」であり、決定的な証拠にはならない。佐伯は金に物を言わせて高価なセキュリティソフトを入れているし、自分では手を下さず、取り巻きにやらせている部分も多いようだ。
もっと深く、奴の懐に潜り込む必要がある。
ピコン。
PCのメーラーが着信を知らせる音を立てた。
差出人は『星野舞』。同じ学科の同級生だ。
普段は眼鏡をかけて図書館の隅にいる目立たない女子だが、俺は知っている。彼女が、学部内でもトップクラスのセキュリティ知識を持つ「隠れハッカー」であることを。
メールの件名は『解析結果について』。
本文を開くと、そこには簡潔な文章と共に、添付ファイルがあった。
『木島くん。頼まれていた画像の解析、終わったよ。添付のPDFを見て。メタデータは削除されてたけど、ノイズパターンの不整合と、光源のベクトル解析から、間違いなく複数の画像を合成したものであることが証明できる。特に、3枚目のホテル街の写真、背景の影の角度と人物の影の角度が3度ズレてる。これは自然光ではありえない現象』
俺は添付ファイルを開いた。
そこには、俺を絶望の淵に突き落としたあの写真が、赤ペンでびっしりと添削されるように解析されていた。
専門的な数式と図解で示されたそのレポートは、感情論を一切排した、純粋な「事実」の塊だった。
「……ありがとう、星野さん」
画面に向かって呟く。
彼女とはそれほど親しいわけではなかった。講義で何度か言葉を交わし、プログラミングの課題について議論したことがある程度だ。
だが、今回の騒動で周囲が掌を返す中、彼女だけは違った。
俺が孤立無援になった直後、彼女からこんなメールが届いたのだ。
『私は、コードの書き方でその人の思考が分かると思ってる。木島くんの書くコードは、無駄がなくて誠実だから、あんなことをする人だとは思えない。それに、あの写真、違和感がある。もしよかったら、私が調べてみてもいいかな?』
その言葉に、どれほど救われたか。
俺はすぐに、手元にある全ての画像データを彼女に送った。
そして今、その結果が返ってきた。
俺は返信を書いた。
『ありがとう。完璧な解析だ。これがあれば、少なくとも画像の信憑性は崩せる。でも、これだけじゃ足りない。犯人を特定し、その悪意を証明しないと、俺の社会的信用は戻らない』
送信ボタンを押して数秒後、すぐに返信が来た。
『手伝うよ。私、嘘つきとバグは大嫌いだから』
心強い味方を得て、俺の中で思考が加速する。
エンジニアとしての「デバッグ・モード」が完全に起動した。
感情に流されず、事実を積み上げ、バグの原因を特定し、排除する。
ターゲットは佐伯巧。そして、それに加担したサークルのメンバーたち。
* * *
俺は大学へ向かうことにした。
もちろん、真正面から行くわけではない。今はまだ、公の場に姿を現すのはリスクが高すぎる。
目深に帽子を被り、マスクをして顔を隠す。
向かったのは、理工学部の棟にある、24時間利用可能な高度情報処理演習室。通称「ラボ」。
ここなら、サークルの連中が来ることはまずないし、星野舞もよく利用している場所だ。
ラボの扉を開けると、冷房の効いた涼しい空気が肌を撫でた。
サーバーの稼働音が低い唸りを上げている薄暗い室内。
その一番奥の席に、彼女はいた。
黒縁眼鏡に、少し大きめのパーカーを着たショートボブの女性、星野舞。
彼女はトリプルディスプレイに向かい、猛烈な勢いでキーボードを叩いていたが、俺の気配に気づいて手を止めた。
「……木島くん。来たんだ」
彼女は椅子を回転させてこちらを向いた。
その表情はいつも通り淡々としていたが、眼鏡の奥の瞳は鋭く光っていた。
「星野さん、本当にありがとう。君がいなかったら、俺は今頃……」
「お礼はいいよ。それより、状況整理しよう」
舞は手元のタブレットを操作し、モニターの一つに佐伯のSNSアカウントを表示させた。
そこには、最新の投稿が映し出されていた。
高級焼肉店での写真。隣には、幸せそうに笑う由奈の姿がある。
キャプションには、『新しい彼女とリフレッシュ。やっぱり誠実さが一番だよね』という、吐き気を催すような文言。
「いいね!」の数は千を超え、コメント欄には『お似合い!』『前の彼氏とは大違いですね』といった称賛の言葉が並んでいる。
俺は唇を噛み締めた。
怒りで指先が震えそうになるのを、必死で抑え込む。
「……酷いね。マッチポンプもいいところ」
舞が冷ややかに言った。
「でも、これだけ派手に動いてるってことは、必ずボロが出る。特に、彼は自分の承認欲求を抑えきれていない。そこがセキュリティホールになる」
「ああ。俺もそう思う。奴は、自分を賢いと思ってる。だから、デジタルタトゥーの本当の怖さを理解していない」
俺は自分のノートPCを取り出し、舞の隣に座ってケーブルを接続した。
「俺たちが狙うのは、奴の『裏の顔』だ。表向きは完璧なリア充を演じているが、サークルの経費を私的に流用している噂があるし、女性関係も派手だという話は聞いていた。それを裏付けるデータを見つけ出す」
「分かった。私はネットワークトラフィックを監視して、彼が使っている裏アカウントや、非公開のストレージを探る。木島くんは、サークルの共有クラウドに侵入して、会計データやチャットログを洗って」
「了解。サークルのクラウドには、以前由奈のPCの設定を手伝った時に、アクセス権限の脆弱性があるのを確認してる。管理者パスワードも、推測しやすいものだったはずだ」
俺たちは無言で作業を開始した。
キーボードを叩く音だけが、ラボの中に響き渡る。
まるで即席のハッカーチームだ。
かつて、由奈と未来を語り合ったこの場所で、今は彼女を奪った男を社会的に葬るためのコードを書いている。
皮肉な話だが、不思議と心は落ち着いていた。
隣にいる舞の、無駄のないタイピング音と、冷静な横顔が、俺の理性を繋ぎ止めてくれている気がした。
数時間が経過した頃。
「……ビンゴ」
俺の手が止まった。
「サークルの共有ドライブに入れた。予想通り、パスワードは『tennis2024』。セキュリティ意識が低すぎる」
画面には、膨大なフォルダ群が表示された。
『合宿写真』『イベント企画書』といった普通のフォルダに混じって、不可解な名前の隠しフォルダが見つかった。
フォルダ名は『BlackBox』。
中を開こうとすると、パスワードを要求された。
「暗号化されてるな。でも、この形式なら……」
「ブルートフォース(総当たり)じゃ時間がかかる。辞書攻撃でいこう。彼のSNSの投稿内容や、プロフィール情報からキーワードリストを作ってある」
舞がすかさずUSBメモリを俺に手渡した。
「……準備がいいな」
「敵を知り己を知れば、だよ」
舞の作成したリストを読み込ませ、解析ツールを走らせる。
数分後。
『Password Matched: yuna_love_money』
表示されたパスワードを見て、俺は思わず失笑した。
「『yuna_love_money』……? 俺への当てつけか、それとも本性か」
フォルダの中身が開かれた。
そこには、驚くべきデータが眠っていた。
サークルの会計帳簿の裏帳簿と思われるエクセルファイル。
『飲み会費』という名目で計上された金額が、実際には高級ブランド店の領収書と紐付いている証拠画像。
そして、何より決定的だったのが、チャットアプリ『MINE』のログバックアップデータだ。
「これ……佐伯のスマホのバックアップデータだ。なんでこんなところに?」
「多分、容量がいっぱいになって、一時的に共有ドライブに退避させたのを忘れてるんだと思う。クラウドの同期設定ミスかな」
舞が呆れたように言った。
「デジタルリテラシーの欠如が生んだ致命的なミスだね」
俺たちは、そのログファイルを開いた。
膨大なテキストデータの中から、特定の日付――俺の偽造写真が拡散された日の前後――を検索する。
ヒットした会話は、俺の想像を遥かに超える悪意に満ちていた。
佐伯『おい、例の画像の加工、まだかよ。もっとリアルにしろ。影の角度とか気をつけろって言ったろ』
サークルメンバーA『すいません、今やってます。ディープフェイクのレンダリングに時間かかってて』
佐伯『急げよ。来週の記念日にぶつけるんだから。あいつが幸せそうな顔してる時に突き落とすのが一番面白いんだよ』
サークルメンバーB『木島、内定決まって調子乗ってますもんねw 潰しましょう』
佐伯『由奈ちゃんもさ、俺がちょっと優しくすればすぐ落ちるよ。あの子、押しに弱いから。木島が浮気したって証拠さえあれば、こっちのもんだ』
画面の文字を目で追うたびに、怒りで視界が赤く染まりそうになる。
こいつらは、ゲーム感覚で俺の人生を壊し、由奈を奪ったのだ。
由奈の弱さにつけ込み、俺への信頼を破壊し、嘲笑いながら計画を進めていた。
「……許せない」
俺の声は低く、地を這うようだった。
「こんな連中が、のうのうと大学生活を送り、社会に出ようとしているなんて」
「木島くん」
舞が静かに俺の手の上に自分の手を重ねた。その体温が、俺の暴走しそうな感情を現実に引き戻す。
「怒るなとは言わない。でも、冷静さを失ったら負け。このデータをどう使うかが重要だよ」
「……分かってる」
俺は深呼吸をして、舞の手の温もりを感じながら頷いた。
「これをただネットにばら撒くだけじゃ、泥仕合になる。奴らは『これも捏造だ』と言い張るだろう」
「そう。だから、公的な場で、逃げ場のない状況で突きつける必要がある」
「来週、サークルの『総会』がある」
俺は思い出した。
毎年この時期に行われる、次期役員を決めるための重要な会議だ。全サークル員が出席し、OBやOGも顔を出す大規模なイベント。佐伯はそこで、次期代表への就任演説を行う予定だったはずだ。
由奈も、そこに参加するだろう。
「そこで、これを流すのか?」
舞が少し不安そうに尋ねた。
「リスクが高いよ。乱闘になるかもしれない」
「ああ。でも、奴を社会的に抹殺し、俺の潔白を証明するには、それしかない。全員の前で、奴の化けの皮を剥ぐ」
俺は決意を固めた。
これは、ただの復讐劇ではない。
汚された自分の名誉と、プログレス・ゲートという未来を取り戻すための、最初で最後のプレゼンテーションだ。
「協力してくれるか? 星野さん」
「……もちろん。乗りかかった船だもん」
舞は小さく笑い、眼鏡の位置を直した。
「それに、私、悪い奴がギャフンと言うところ見るの、結構好きなんだ」
* * *
その日の帰り道。
俺は大学の正門近くで、信じられない光景を目撃した。
佐伯と由奈が、腕を組んで歩いてくる。
周りにはサークルの取り巻きたちがいて、何やら楽しそうに談笑している。
俺は帽子を目深に被り、近くの木の陰に身を隠した。
「佐伯先輩、総会の演説、楽しみにしてますよ!」
「任せとけって。サークル費で打ち上げも豪華にするからさ」
「さすが次期代表! 太っ腹!」
佐伯は満更でもない様子で笑い、隣にいる由奈の頭をポンポンと撫でた。
由奈は少し痩せたように見えたが、佐伯に合わせてぎこちなく微笑んでいる。
その笑顔は、かつて俺に見せてくれた心からの笑顔とは似ても似つかない、作り物のような表情だった。
由奈。
お前は本当にそれでいいのか?
自分が信じたものを捨て、安易な場所に逃げ込んで、その先に幸せがあると思っているのか?
彼女の首元には、俺がプレゼントしたネックレスはもう無く、代わりにブランド物の派手なチョーカーが光っていた。
「……ねえ、巧くん。本当に大丈夫かな? 蓮、何かしてこないかな」
すれ違いざま、由奈の怯えたような声が聞こえた。
「大丈夫だって。あいつはもう終わりだよ。誰もあいつの話なんて聞かない。負け犬の遠吠えさ」
佐伯は嘲笑い、大げさに肩をすくめた。
「それに、もし何か言ってきても、俺たちが『また嘘をついてる』って言えば、みんな信じるよ。今のあいつには信用なんてカケラもないんだから」
二人が通り過ぎていく。
その背中を見送りながら、俺はポケットの中のUSBメモリを強く握りしめた。
そうか。お前たちはそう思っているんだな。
俺が無力で、声も上げられない敗北者だと。
信用というパラメータがゼロになった人間は、社会からデリートされるのを待つしかないと。
だが、残念だったな。
俺の信用スコアはゼロかもしれないが、俺が持っている「真実」というデータの強度は、お前らの薄っぺらい嘘の数万倍だ。
「……楽しみにしてろよ、総会」
俺は闇の中で呟いた。
復讐のシナリオは完成した。
あとは、その幕を上げるだけだ。
次期代表就任という栄光の瞬間を、お前たちの断罪の処刑台に変えてやる。
背後から、舞がそっと近づいてきた。
「行こう、木島くん。準備することはまだたくさんある」
「ああ。やろう」
俺たちは並んで歩き出した。
冷たい夜風が吹き抜けるキャンパス。
かつては希望に満ちていたこの場所が、今は戦場に見える。
だが、もう迷いはない。
失ったものは大きい。傷ついた心は癒えないかもしれない。
それでも、前に進むために。
俺は、この手で「終わり」と「始まり」を描くのだ。
進歩への扉を開くのは、佐伯のような詐欺師ではない。
真実を直視し、バグを修正できる人間だけだ。
俺はその資格があることを、自分自身に証明しなければならない。
戦いのゴングは、既に鳴り響いている。