170 にぃぁ放送局 6

夜。
早々に夕食を済ませた俺はテレビを見るわけでもなくお風呂に入って身体を洗い流し、さっぱりしたところで冷蔵庫にしまっておいたハーゲンダッチのアイスクリームを取り出して使い捨てプラスティックスプーンを突き刺したのち、2階へと上がろうとした。
「キミカちゃん、また解析作業?」
と、そこでマコトが話しかけたきたのだ。
「うん」
「何か分かったの?」
「あー、うん。Coogle Analyzer使ったらひょっとしたらにぃぁのあの言葉が『コンピュータのバイナリデータ』じゃないかって思って、その線で解析してみたの。そしたらビンゴ。画像とかサウンドデータかと思ったけど、そうでもなくて、プログラム言語っぽいんだよね」
「ぷ、プログラム?えっと…キミカちゃんが普段からXCodexとかで開発してるシステムだとかツールだとかを創る時の?」
「そうそう」
「どういうプログラムだったの?」
「それは今から。バイナリデータを逆アセンブルして言語の状態に変換しないと、人が見て理解するのは難しいんだよ」
「な、何を言ってるのか、ボクは専門知識が無いからわからないけれど…もう少しで謎が解けるって事だね!」
「そうだよ!ワクワクするしドキドキするね!」
などと話をしているとテレビを見ていたナツコが間に割り込む。
「お兄様に聞けば何かわかるかも知れませんわ」
「ま、まぁ、それを言ってしまえばそうなんだけれど…。もしかしたらだけど、ケイスケだって分かってないじゃないかと思って。にゃんにゃん言ってるのに意味があるだなんて」
「よくわかんないけれど『にゃんにゃん』言わせとくか可愛いし、って感じでやった可能性も捨てきれませんわ」
「あ〜…」
あ…。
今、なんだか凄い嫌な予感がしてきた。
嫌な予感っていうのは敵が攻めてくるとか自然災害が起きるとかそういうスリル溢れるものじゃなくて、今ままで俺が頑張ってきた事が全部無意味になるような脱力系嫌な予感だ。
プログラム言語だったとして、にぃぁを制御しているプログラムの一つを取り敢えず何らかの形にして、例えば『にゃんにゃん』という形にして言葉として吐かせていたら…。
う、うわぁぁああぁぁ!!!
その線はある…あるぞォ…。
「なんだか、嫌な予感がしてきた…」
「申し訳ございませんわ…キミカさんの苦労が水の泡になる可能性を示唆してしまった。で、でも、お兄様が作ったプログラムをにぃぁの声から逆変換するだなんて、ある意味凄まじい偉業ですわ!」
フォローになってないよォ…。
俺は静かに2階の俺とマコトの部屋へと上がっていった。
そして。
夕方仕掛けておいたCoogleのAnalyzerAPIの結果を確認しようと、俺が環境設定しておいた稼働中のサーバに接続する。
幾つか既に解析が終わっている。
ワクワクとドキドキ、そしてさっきの脱力系不安が俺の脳の中を舞い踊っている…が、その片隅では、恐怖に近いものも沸き上がってくる。
ケイスケが作ったプログラムの説はあったとして、それ以外の結果を想定しているのだ。俺の脳は普段から戦闘を繰り返すうちに、8割型安全圏であっても残りの2割を重視するように出来てしまっている。
今まで色々と命に関わる危機もあったからな…。
例えば…例えばだ。
例えば、家の近くに無造作にゴミが捨ててあって、その配列をビット(0と1で構成されるコンピュータの読み込む情報)とみなして文字コードに変換したとする。そんな間抜けなことを面白半分にやってみたらそこに『死ね』と出力されたら?
無造作に捨ててあるゴミにも実は意味があったことになる。
しかも『死ね』だ。
誰に対して言ってるのか?それはそのビットに興味を持って解析して答えを出した人間に対しての言葉か?恐ろしいことではないだろうか?
『死ね』ならまだいい。
『お前は死ぬ』だとしたら?
俺は、パンドラの箱を開けようとしているのではないか。
仮にケイスケが作り出したプログラムを声に変換して出している、わけではなかったとする。そう仮定して、にぃぁの言葉は何かしらの意味があったとして、その意味を普通の人は知ることはないし知ろうとも思わない。もしかしたらそれ自体がある種の生物としての防衛本能だとしたら?
俺は超えてはならない一線を越えようとしているのではないか。
たまたまビット配列に変換してAnalyzerで解析したら、それはプログラムだった。そこで終わりにしておくべきではないか。
俺の頭の中の最も古い層、最も深い層、もっとも重要な層…恐怖を司る部分が、防衛本能をフルに回転させている。
膨らみ上げる恐怖心の中…真っ暗な恐怖の中に一つだけ光が見えた。
好奇心。
あぁ、最後の最後、ギリギリになってソイツが暗闇を照らす。照らした暗闇からおぞましい地獄が現れても、それすらも面白く感じてしまう奴が、好奇心という輩が、覆い尽くす暗闇からひょっこり頭を覗かせている。ヤバイ。俺は、いまキーを押そうとしている。
Coogle Analyzerのリバース・エンジニアリングAPIの出力結果を俺の開発したサーバアプリは特定のフォルダ内に押し込んでいる。そして、そのフォルダを開けるキー(Command+↓)を押そうとしている。
8割はケイスケが作り出したプログラム変換後の『声』
だが、残りの2割が超イレギュラケースだ。しかし、その2割に俺の脳の中にある好奇心がキラキラと目を輝かせている…。
気がつけばいつの間にか既に深夜。
後ろではマコトがいつの間にかベッドに入っててすーすーと寝息を立てている…それぐらいに時間が経過していた。
俺の中の焦りが時間の経過を速くさせている。
このまま朝になるんじゃないのかっていうぐらいだ。
「えぇい!ままよ!」
Map Proのディスプレイの光だけになった部屋で俺が言った。
フォルダが開く。
俺は思わず目を瞑ってしまった…けれども、こんな子供だましみたいな事をしても仕方がない。見よう、そして事実を把握しよう。好奇心が最後の最後に勝った。暗闇の中から俺を突き動かした。
「…java…?」
ソースファイルを見る限り全部java言語で書かれてある。
ファイル名はjakla1a.javaとかyulas2b.javaとか、なんか意味があってつけてるわけでもなく、ただ解析したら適当なクラスが抽出出来たから、判別できるように重複しないようにというレベルで出力したような名前。
それが、滅茶苦茶沢山ある。
滅茶苦茶だ。
もうドライブの容量128TBに迫る勢い。
ん〜…これは拍子抜けだなぁ…。
もしかしたらjavaに近いけれども、たまたまそうなっただけじゃないか?なんて思えるぐらいに適当につけられたファイル名。
拍子抜けついでに中身を開いて見てみたら、ファイル名と同じ様に適当につけられたクラス名、メソッド名…が沢山。
しかもエントリーポイントがない。
エントリーポイントっていうのをプログラマではない人に向けて言うと、つまり、OSとかから「お前、そろそろ動き始めろよ」「よし、今からお前を起動するからな…あとは好きにせぇや」という起点となる場所。
一つ一つのクラスも小さい。
なかには1KB満たないものもある。
メソッド…つまり、何らかの処理があるものもあれば、ただ単純に変数…つまり、何かのデータを格納するエリアだけのものもある。このエリアは初期値が存在していないな。nullと呼ばれる、どこも指し示していないという意味になる。ただ、プログラムが起動されればそれらに値が入ることになるのだろう。起動されればだけれど…。
ただ、これだけ凄まじい量であって中にifやswitchなどの条件分岐がわんさか入っているわけだから、あながちにぃぁの言葉の羅列がただのノイズとは言い難い…が、Coogle Analyzer APIがなんとか動かせるギリギリまで復元させた、ととれなくもない。
ひょっとしたら8割ぐらいがAnalyzerの功績かもしれない。
あぁ、そこでさっきの2割・8割の話が出てくる。
これ…残りの2割じゃないか?
少なくともケイスケが作ったプログラムじゃぁない。
アセンブルに失敗したものはそれがノイズに近いからだ。
本当にただのノイズか?
ノイズの中にifやswitchがあるのか?
よく見るとforだとかwhileみたいな繰り返し命令もあるぞ。
わからない…ますますわからない。
が、だからこそ、まだやりがいがある。
明日、学校の図書館で調べてみよう…逆アセンブルjavaに関して。さすがに『知り合いの女性が「にゃんにゃん」言ってるのをビット配列に変換してプログラミング言語になったけれど、何かが欠落してるのかうまくいかないので、うまくいく方法はないですか?』的な本はないだろう…。だから本の選別も難しいかもなぁ。
ま、明日だ。
明日。
俺はベッドへ入った、そして興奮冷めやらぬ中だったけれども、1時間ほどで眠りについた。