第7話“Hello,World!”
12/5の2話目です。
「それじゃ『宿題』を提出してもらおうかな」
「わかりました」
最初に『宿題』を出されてから2週間後、チャットルームにはEGOさんとミスターMが待っていた。
僕はドキドキしながらソースコードを圧縮したZIPファイルを貼り付け、彼らの採点に委ねる。
この2週間、僕なりの全力を注ぎ込んだつもりだ。
今度はネット知識の自習みたいな手探りの学習ではなく、必要な資料はすべて用意してもらった。ここまでお膳立てされて中途半端なものしかできなかったのなら、僕にはアプリ開発の才能などなかったということになる。
「ふむふむ……なるほどね」
「どうだEGOくん。私はソースコードなど門外漢だが、ちゃんと『改良』はできているかね?」
「うん、ちゃんと私が仕込んだ改善点はすべて直せているようだ。連鎖して致命的なエラーを吐くようにしておいたが、それもちゃんと対応できているようだね。いいじゃないか」
……! よかった!
僕はほっと胸を撫で下ろす。どうやらちゃんと彼のお眼鏡にはかなったようだ。
「804行目からのこのコードはキミが付け加えたものだね。これはどういう挙動をするのか説明してもらっていいかな?」
「あ、はい」
さすがEGOさんだ。あっさりと僕のオリジナル部分を見つけてくる。
まあソースコードなんて自分の子供のようなものだから、誰かが手を加えた部分なんて見つけるのは簡単だが。
ここからが僕が本当に試される部分と言っていいだろう。
僕はちょっと声を上ずらせながら、頑張って説明した。
「“Hello,World!”の文字列全体の明滅速度を速めて、とにかく文字列をいっぱい表示させるようにしてみました。このアプリはもう完璧で、何か付け加えるのは蛇足に思えたので」
「ふむ、なるほどね」
「本当に綺麗なアプリです。僕が何をやるにしても、いまいちピンとこなくて……これが精一杯でした」
恥ずかしい話だが、僕がエミュレーションによる動作確認が可能な範囲においては、こうするくらいが精いっぱいだった。
このアプリに備わっている機能美はそれくらい完璧に過ぎた。新たな文字色を加えるのも、新たな表示処理を加えるのもはばかられる。
となれば、方向性は“Hello,World!”の文字列の表示回数をとにかく増やし、『いっぱい表示させる』ことに特化してみようと考えたのだ。
しかし僕が付け加えたこの処理だって言ってしまえば蛇足もいいところで、ソースコードとしては元の方が美しい。
「ふふっ、褒められているなEGOくん? 実際、彼のソースコードは業界でも美しいと評判だからね。それゆえに他の人間が後から手を加えるのをためらって仕方ない、エンジニア泣かせだとも言われているが」
「おっとやめてください先輩。身バレするじゃないですか」
EGOさんは少し笑いが混じった声でミスターMをとがめつつ、いいだろうと小さく呟いた。
「うん、これなら合格だ」
「ホントですか!」
「ああ。よく2週間でここまでできるようになったね。あの連鎖バグは正直現役のエンジニアでも苦労すると思ったが……キミには確かに才能があると思うよ」
僕は思わず両手を強く握り、ガッツポーズを取った。
EGOさんは間違いなくプロ、それも一流のエンジニアのはずだ。
そんな彼から才能があると言われ、嬉しくないわけがなかった。
「まあ、付け加えられた処理は正直ちょっと余計かな……という気はするけどね。もうちょっと面白い、キミなりのコードを見たかった気もする」
「おいおい、辛口だね。中学生だぞ? 一足飛びにプロ目線の採点をするのはやめてあげたまえよ」
「あ、いえ。やっぱり蛇足ですよね。僕もそう思います」
やっぱりプロだな。僕が感じるのと同じことを指摘されないわけがない。
「だから3種類ほど別の処理のバージョンも作ってみたんです」
「ほう?」
「エミュレーションはできなかったので、本当に作るだけで恥ずかしいんですけど……」
そう言いながら、別に用意していた1つめを貼り付ける。
「……これは……なんだ? やたら描画領域を広く取っているが。それに文字色の輝度の範囲もオリジナルと違うね。どう見てもスマホに表示するためのものじゃないようだが……」
「あ、はい。その通りです。それは600インチのフルHDモニタで走らせることを想定しています。具体的に言うと新宿のファッションビルの街頭ビジョンです」
「ほう」
「フルHDに対応させるとなると輝度の範囲ももっと広げられそうなので、文字色には若干調整を加えてます。それにスマホと画角が違うので、文字列の表示パターンも変えました」
「な、るほど……?」
一画面に『いっぱい表示させる』ことに特化させることを追求すると、スマホではやっぱり限界があった。となれば、画面の大きさ自体を変えてしまえばいいというアプローチがこれだ。
「あと、走らせるモニタの大きさや画質をソフト側で読み取って、自動的に表示パターンを組み変えるアルゴリズムも搭載しました。
渋谷のスクランブル交差点には大型ビジョンがいっぱいあるそうなので、そこをいっぺんにジャックすると見ごたえあるだろうなって思って。
四方八方にこの美しいアプリを走らせる……すごく綺麗でしょうね」
僕はその光景を想像して、ほう……とため息を吐いた。
これまでの人生で、僕は美術的感性とはまるで無縁の日々を過ごしてきた。どんな絵画や彫像を見ても、心に訴えかけるような感銘を抱いたことはない。むしろ打ち上げ花火やフラクタル図形が機能美や数学美を感じられて好きだ。
しかしこのアプリに出会ったことで、僕は初めて本当に『美』という概念を理解できたように思う。そういう意味でも、EGOさんとのこの出会いには深い感謝を抱かずにはいられない。
「…………」
「…………」
EGOさんとミスターMも僕と同じ光景に感慨を抱いているようで、無言になっている。やっぱりやってみたいですよね、街頭ジャック。
「エミュレートもできないものを実際にぶっつけで走らせるわけにもいかないのが残念です。何回か予行演習させてくれるなら実地に確かめられるんですけどね」
「なるほど? 他にもあるわけか、こういうアプリ?」
「はい。2つめはこれです」
そう言いながらチャット画面に別のファイルをぺたり。
「……? いや……このコードは何をしようとしてるんだ? もう完全に文字列を表示させるのとは別の方向に向かっているようだけど。これまさか……アプリ側からハードになんか負荷をかけようとしてないか?」
さすがはEGOさんだ。
僕が書いたコードがどういったものか、瞬時で見抜いている!
「はい、その通りです! これは最初に見せたやつの完全版です。スマホのクロック数を強制的に引き上げて、とにかく文字数が明滅する回数を理論値の最大限まで増やしました!」
「えぇ……?」
このバージョンで目指したのは、スマホに表示させるという前提を崩さないまま表示回数の限界に挑むアプローチだ。
「スマホのCPUとメモリに仮想の領域を設定することで、本来のスペックをオーバーさせ、超高速で文字列を表示させ続けます。そうすると普通はハングアップして落ちますが、そこもOSとファームウェアを騙して無理やりに走らせ続けるようにしました」
「スマホ壊れるよね、それ……?」
「はい、壊れますね」
「しれっと言ったぞコイツ……」
内部の回路は発熱と疲労でズタズタになり二度と動かなくなるだろうが、そこに至るまでの一瞬で“Hello,World!”を最大限表示させるという目的は達成される。
「まるで夏の花火のように儚い。だからこそ美しい……ということを、打ち上げ花火を見ながら考えました。あと冬のカイロとしてもいいんじゃないでしょうか、使い捨て回路だけに」
夏と冬兼用で使えますね、アハハ。
「…………………」
「…………………」
小粋なジョークを繰り出してみたのだが、2人は無言だった。
うーん、ちょっと寒かったかな。
「この子、何作ってんの……?」
「これヤバいわ……まかり間違えばテロに転用できるぞ……」
「あ、やっぱスマホ壊すのまずいですか」
コストパフォーマンス悪いもんなあ。
やっぱりこれは失敗作だな。エミュレートさせたら僕のパソコンがぶっ壊れるだろうし、こういう何かを壊す系のは美しくはないよね。
「み……3つと言ったね。まだあるのか、これ」
「はい。あ、最後のは扱いに注意してくださいね。絶対に走らせないでください」
そう念押ししてから、僕は最後のファイルをチャットに貼り付けた。
「う……!? こ、れ、は……」
「どうしたEGOくん? そんなにまずいものか?」
「いや……本人の口から説明してもらいましょう」
おっ、これは好感触か?
何やら口調に激しい動揺が混じっているように感じる。
僕は勢い込んで説明した。
「はい! これは感染型です! このアプリはSNSのアドレス帳を参照して、メッセージをやりとりした相手のスマホにストアを経由せずにインストールされます。林檎フォンでも泥井戸でも、プラットフォームを選ばず動作するはずです」
「……」
「……」
「トロイの木馬ウイルスの挙動を参考にしました。発動するまではアプリの存在を認識することはできません。パソコンの管理画面でも見つけられません」
「…………」
「…………」
「感染すると潜伏を続け、全世界に広まります。そしてあらかじめ指定しておいた時刻になると起動して、“Hello,World!”が一斉に表示されます! SNSに接続したことがある世界中のスマホが、この素晴らしいアプリの機能美を奏でるのです!! なんて素晴らしい光景でしょうか……!!」
「………………」
「………………」
僕はその光景を想像して、感動に打ち震えた。
世界中がEGOさんのアプリの美に圧倒されることだろう。
「この方法が、僕が考える中で“Hello,World!”を一度にもっとも大量にスマホに表示する方法だと思われます。ただ解析されてお縄になると厄介ですから、発動後はアンインストールされるようにしました。メモリからも完全に削除されるので、解析は不可能です。トラフィック履歴も改竄するので、感染経路をいくら探そうが痕跡は一切残しません。人生の中でたった一度だけ使えるジョークアプリ……そう考えると、これもちょっと花火的な美しさがありますよね」
夏休みの自由工作としてはまずまずの出来栄えなのではないだろうかと自負している。
「あ、せっかくだから一度うまくいくか試してみましょうか? 別にスマホを壊すわけでもないので無害ですし」
「やめろ! 絶対にやめなさい!!」
「え、そうですか? でもEGOさんの作ったアプリの美しさを全世界に見せつけるチャンスですよ?」
「俺を巻き込むんじゃねえ!? そんなの望んでないから! 絶対やめろ!!」
「そうですか……残念です」
原作者本人が嫌がっているのなら仕方ない。
この人の才能は広く世に知らしめられるべきだと思うのだが。
「なあ、これ……本当に機能するのか?」
「しますね、多分……。どっかにバグはあると思いますけど、構造自体はちゃんとできてるので。ふ……ふふふ……はははははは!!」
EGOさんが突然笑い出した。どうしたんだろ?
そう思っていると、ぱちぱちと手を叩く音も聞こえてきた。
「いや、見事。本当に素晴らしい。キミは私が思っていた以上の逸材だ。そこで折り入って相談なんだが……ちょっとしたバイトをするつもりはないか?」
「バイト、ですか?」
「ああ。私は副業でアプリ制作をしていてね。こまごまといろんなアプリをストアで販売して収益を得ているのだが……その基礎部分の製作をアウトソーシングとしてキミに委託したい。何しろアプリをまるっきり一人で作るとなると手間がかかるからね。キミは僕の要望に従ってベースを作ってくれればいい」
アウトソーシング。
なるほどなあ、そういうバイトの形態もあるんだ。
バイトといえばコンビニなんかの店員さんやピザ屋の宅配ってイメージだったので、ちょっとびっくりした。
「催眠アプリを作るにも研究費用は必要だろう。かといって中学生の身では他のバイトもままならないだろ? まとまった原資を用立てられるし、アプリ制作にも習熟できる。一石二鳥のおいしい話だと思うがどうかな?」
「なるほど……」
さすがEGOさんは大人だ。僕なんかが考え付かないことを思いつける。
僕も大人になれば、こういったものの考え方ができるようになるんだろうか。
「でもお金をやりとりしたら、親に見つかるかもしれませんよ。預金通帳を見られたりしたらバレちゃうかも」
お父さんとお母さんにアプリ制作でお金を稼いでますなんて言っても、理解されそうにはない。悪い大人に騙されているのではないかと心配されると面倒なことになるだろう。
「その懸念はもっともだ。では、ギャラは仮想通貨で支払おう。ウォレットは私が用意するので、それを使ってくれ」
仮想通貨か。これについてはディープウェブの知識と一緒に学習済みだ。
ディープウェブでは現金のほか、仮想通貨によって商品の売買が行われることがある。ウォレットとは仮想通貨専用のお財布のことで、オンライン上で仮想通貨を貯めておくのに使われるものだ。
ウォレットに貯めた仮想通貨は、オンライン上の取引所を経由して現金に変換し、銀行の預金通帳に入金することができるのだ。
「ただし、仮想通貨を現金化するのは控えた方がいい。税金も発生するしね」
「え、じゃあどうやって使えばいいんですか?」
「そこでここにいるミスターMだよ。この人は論文コレクターでね。いろんな学術書籍や世に出ることがなかった論文のPDFを大量に集めているんだよ。きっとキミの催眠術研究に役立つはずだ」
「は?」
ミスターMがすっとんきょうな声を上げた。
「おい、ちょっと待て」
「彼に仮想通貨払いで研究資料を売ってもらうといい。アプリ開発に必要な資料なら、私も売買に応じよう。そういうわけで先輩、よろしくお願いしますね」
「おい! おい!! 私を巻き込むな!?」
「なーに研究費といったところで、実際のところ多くを占めるのは人件費だからね。あとは書籍代と光熱費と通信費くらいのものだろう。まあ光熱費と通信費についてはちょっとご両親を説得いただくとして、書籍代のやりとりをこの3人の間で完結させれば、他に費用もかからないはずだ。どうだい?」
ここまでお膳立てしてもらって、乗らない手はない。
いくら他人の感情に疎い僕でも、その好意は明確に理解できる。
「ありがとうございます! ぜひやらせてください!!」
「おおーーーい!? ナチュラルに私を巻き込んでるんじゃないよ!! 私はそんな後ろ暗い取引に応じないからな!?」
「あーもうなんです先輩、貴方も学者の端くれでしょう。未来ある若者に手を貸してあげたらどうです」
「だってお前……! この子、まずいぞ! あえて知識を与えるつもりか!?」
「だからこそですよ、よく考えてください先輩」
EGOさんは何やら声を潜めた。
「この子を野放しにするつもりですか?」
「うっ……!?」
「好き勝手にやらせたら何をしでかすかわかりませんよこの子。関わってしまったからには、仕方ありません。私たちがまっとうに導いてあげるべきです。本のあとがきにまともな道を歩めとか無責任な説教書いてる場合じゃないですよ」
「あれは若気の至りだよ! だが……確かにその通りだな……」
「そうです。手綱は必要です。むしろ今私たちがこの子を発見できたのは世界にとって幸運だったと考えてください。私たちが未来のモンスターを封じる鎖になるんです」
???
何やら相談しているが、大人の言うことはよくわからない。
こういうとき、自分が子供だということを痛感させられる。大人になれば意味が解るのだろうか。
「ええと、つまりEGOさんとミスターMが僕の先生になってくれるっていうことでいいんでしょうか?」
「うん、まあそういうことだね! 授業料を支払うなら、講義にも応じようじゃないか。なんでも聞くといい、我々がわかる範囲までならば。それでいいですよね、先輩?」
「ああ……。うう、どうしてこんなことに……」
僕は自分の顔がぱあっと輝くのがわかった。
先生なんてみんなくだらない人種だと思っていた。ただサラリーマンの一形態として教職を選んだだけの、未熟な子供に対してだけ強く出られるつまらない大人。これまで出会った教師という人種は、そんな人間ばかりだった。
だが、この人たちは違う。
それこそ忙しい身であるだろうに、僕のような子供相手に親身になって、自ら教師役を申し出てくれる。なんて立派な大人なんだろう。
僕は生まれて初めて、両親以外の尊敬できる大人に出会った。
ここで頑張らねば嘘だ。
見ていてくれありす。僕はこの人たちに師事して、きっとお前を無理やり土下座させてみせるぞ……!!
「これからよろしくお願いします、お師匠がた!!」
2番目と3番目を混ぜると世界中のスマホを一斉に破壊するテロを起こせます。
===
面白かったら評価とブクマしていただけるとうれしいです。