024 - hacker.hook(stone, "transfer");
「メール? スキャナもデータベースも聞いた事がない言葉だな」
僕が挙げた『3つの新規マギサービス』を聞いたボスは、はてなを頭の上に浮かべている。当然だろう。どれもこれも、この世界に存在しないことは確認済みだ。
なにせこれらの中心となるコンピュータがまだ存在していないのだ。マギデバイスが持ち運べるコンピュータのようなものではあるが、まだまだ活用されていない。
ひとつひとつボスに丁寧に説明する必要があるだろう。
「まずメールは簡単です。電話は音声を相手に送るマギサービスでしたが、メールは『手紙』を相手に直接送るマギサービスになります」
「むう、なるほどな。確かに電話ができた今では手紙は陳腐化してしまっているな。だが、すでに転移マギサービスもあるから、いくら直接相手に送れるとはいっても新規性はそこまで高くないと思うぞ。いささかインパクトにかける気がするが」
「ははは、ボスは本当に慌てん坊ですね」
「なっ! バ、バンペイまでに言われるとは……」
議会への召喚でやらかしてくれたので、少し仕返しがてらからかってみると、どうやらクリーンヒットしたらしい。おおかた、父親にも同じような事を言われたのだろう。
「メールは確かにそれ単体ではインパクトは薄いかもしれませんね。ですが、音声を送るのに比べると文章の推敲もできますし、意図を正確に伝えるなどメリットは山ほどありますよ。それに送るのは文章だけではありませんし」
「なに? 手紙の代わりなら文章を送るのではないのか?」
「ええ。なにせ送るのは紙ではなく『データ』ですからね。なんだってデジタルに落とし込めれば送り出せるのが強みです。別に紙にこだわる必要はありません」
「データ? ああ、音声を送ったようにということか。確か音声を数字にして送っているんだったな」
ボスは電話マギサービスのプレゼンを円卓議会で行なってきただけあって、電話の内部の仕組みをそれなりに把握している。1から説明するのは骨が折れたし、何度自分で議会に行こうかと考えた事かわからない。
でも、僕達みたいな小さい会社で、社長が自社のサービスの仕組みを説明できないなんて許される事ではない。それに外部との折衝は任せてほしいとボスが請け負ってくれているおかげで、僕はわずらわしい接客や問い合わせから解放されているのだ。
プログラマに電話を取らせたりすると、その都度プログラミング作業が中断される事になる。その時やっていた事を脳内の片隅に保存しておく必要がでてくる。
こういう作業の切り替えの事を、エンジニアはCPUの用語になぞらえて「コンテキストスイッチ」と呼んだりする。コンテキストとは『文脈』を意味する言葉だ。
実はCPUというのはコアが複数でもない限り同時に一つのことしかできない。人間もCPUも大して変わらないのである。計算速度が大幅に違うだけなのだ。
コンピュータの上で色々なアプリケーションが同時に動いているように見えるのは、CPUが絶え間なく『アプリケーションの文脈』を切り替えて少しずつ動かしている。ちょっとやっては放り出し、ちょっとやっては放り出しを繰り返しているCPUを想像するとちょっと面白い。
この文脈の切り替えの際に、CPUはその時点のアプリケーションの状態をどこかに保存しておき、次に再開する時に保存しておいた状態を復元しているのである。まさしく、プログラマが電話を取る時と同じというわけだ。
さて、これを聞いて「いちいち状態を保存したり復元したり大変そうだ」と思ったのなら、それは正しい。コンテキストスイッチというのは、だいぶコストが高いのである。CPUですらそうなのだから、いわんや人間をや、だ。
プログラミング作業というのは、集中している時とそうでない時の生産性の落差がかなり大きい。今書いているコードに登場する変数や関数の内容であったり、利用している外部のコードであったり、集中している時ではすぐに思い出せる内容でも、集中していないといちいち思い出したり調べたりしなくてはならないからだ。
前職、つまり地球を去るきっかけとなった職では、残念ながらボスみたいな存在はおらず、顧客対応や電話対応はすべて自分で行なう必要があった。それどころか、社内の会議にも引き回されてスケジュールが会議だらけになり、細切れになった空き時間をやりくりして作業を進めなくてはならなかった。
正直これはしんどかった。プログラマにとっては、細切れになった一時間がたくさんあるよりも連続した数時間を確保できるほうが、よほど生産性が高いのである。
つまり、今の僕はボスによって相当助けられているという事だ。だから、ボスの質問や要望にはできる限り丁寧に答えていきたいと思っている。
「相変わらずバンペイの考える事はわけがわからんが、数字にするのがそんなに便利なのか? 手紙をそのまま送るのと大差ないんじゃないか?」
「そうですね、数字にするメリットは色々ありますよ。例えば、暗号化がひとつの例ですね。手紙を暗号化するといったら本格的なものは大変でしょう? 数字にしておくと、音声だろうが手紙だろうがどんな情報でも画一的に暗号ができます」
「むむむ、確かに暗号化は大事だな。私が書いた手紙が誰かに読まれたら悶絶ものだ。でも、直接相手に届く転移サービスみたいなものであれば、誰かに読まれる心配はないのではないか?」
「それがそうとも言えないんです」
そう言って僕はマギデバイスを取り出した。ボスからの借り物だったが、この度のマギサービス提供開始にともなって正式に譲り受ける事にした。マギデバイスは国によって一応簡単な管理はされているものの、誰でも複製ができるのでほとんど建前と化している。
マギデバイスを操りエディタースクリーンを開いて、検証用に書いておいたマギランゲージのコードを読みだす。
「【ラン】」
すると広げておいた手のひらの上に、突如として石ころが一つ現れた。どこにでもある、いたって普通の石ころだ。
「なっ!? それは転移マギサービス!?」
「いいえ、これは僕が自作したものです」
驚きのあまり声を失うボス。転移に関してはマギサービスとして実現できている以上、何か方法があるはずだと検証していたのだ。
結果として、転移自体はマギランゲージで『転移せよ』の命令を送るだけで簡単に実現できる事がわかった。ただし、転移先の座標の指定が結構大変だ。縦、横、高さの3次元じゃないのである。
転移先に指定できる座標は恐ろしい事に五次元であり、その内の三要素については、どこか遠く離れた位置を原点とする『球面座標系』で表現されているようだ。原点からの距離と、二つの角度によって一点が定まるのが球面座標系なのだが、どうも計算してみると原点はこの惑星上に存在しないのではないだろうか。
この世界の宇宙がどうなっているのかはわからないが、太陽のような恒星は存在しているし、星の動きを見た限りでは地動説が当てはまるように思える。恐らく宇宙に関しても前の世界と変わらず放射線や気圧の薄さが危険な場所だろう。
惑星の外を原点とするということは、下手な座標指定をしたら宇宙に放り出されてしまうかもしれない。転移マギサービスが相手に直接送る事ができず、固定座標にしか送れないのは、このあたりが関係しているのだろう。この座標計算には数学の力を駆使する必要がある。
なお、座標の残りの二要素に関しては全くの謎だ。今のところ固定値が入るようであるが、長大な桁の数が含まれている。『座標を得よ』という命令で物の座標が得られる事はわかったので色々と試してみたのだが、一度も二要素が変化する事はなかった。
「転送マギサービスを自作するなんて、相変わらず無茶苦茶だなバンペイは……」
「試してたらできちゃったんですよ。それで、本題はここからです。今のは庭にある石を持ってくるコードだったんですが、もう一度動かす前に、こちらのコードを走らせておくと……【ラン】」
検証用コードその2を実行。こちらは走らせても何も変化がないようにも見える。だが裏ではとんでもない事をしようとしている。
「では、先ほどの石の転移をもう一度動かしますね……【ラン】」
先ほどと同じように手のひらを上にあげているが、石は転移してこない。
「ん? まさか不発か? バンペイともあろうものが珍しいな」
「いいえ、想定通りの動きです。あそこを見てください」
そういって、テーブルの上を指し示す。そこにはまさしく転移してこようとしていた石ころがポツンと転がっていた。
「おや? さっきはバンペイの手の上に転移していなかったか?」
「ええ、そうです。間違いなくあのコードは、庭の石を僕の手の上に転送するコードです。しかし、それが実際には違うところに現れた。なぜだと思いますか?」
「わからん! 早く教えてくれ!」
「ちょっとは考えるそぶりぐらい見せてくださいよボス……まあいいです。原因は二つ目のコードですよ。あのコードには『イベントフック』が含まれていたんです」
「イベントフック? 何だそれは? またバンペイが考えた新しい用語か?」
「いいえ、これはれっきとしたマギランゲージの機能ですよ」
イベントフック。それは、ソフトウェアエンジニアならお馴染みの用語だ。フックとはそのものずばり、何かに引っ掛けるための金具であるフックのことだ。
イベントと聞くと一般的には催し物や行事などの意味で使われる事が多いが、ゲームをやる人ならゲーム中に発生する事件やストーリー上の展開を指してイベントと呼ぶ人もいるだろう。言うなれば何かが起こったら、イベントの発生なのである。
イベントフックとはイベントにフックする、つまり『発生する何か』に『引っかける』という意味合いで使われる。引っかけてどうするのか。コードを動かすのである。
「イベントフックを使うと、指定したオブジェクトが受け取る『命令』に引っかけて、割り込む事ができます。例えば、石が転送しようとされたら、そこに割り込む事ができるわけです」
「な、な、なんだって……じゃあつまり、さっきの石が手の上ではなくテーブルに転移したのは」
僕は一つ頷いて、ボスの言葉の続きを口にする。
「そうです。転移先をイベントフックで動かしたコードによってズラしたんです」
僕の情け容赦ないバッサリとした回答にボスははっきりとうろたえた。
「あ、ありえない! ありえないぞ! そんな事ができたら、転移マギサービスで運ばれる荷物を簡単に奪い取る事ができてしまうではないか!!」
「実際に試したわけではないですが、できそうですよね。何か対策してあるならいいのですが、恐らく座標の指定すらままならない状態では難しいでしょう」
そう、その通り。この世界における流通の肝とも言える転移マギサービスは深刻な脆弱性を抱えている。
脆弱性とはソフトウェアやシステムにおいて、設計上のミスやコードのミスなどによって生まれる『欠陥』を指す言葉だ。システムにぽっかりと空いた穴のようにそこだけが弱くなるので、『セキュリティホール』とも呼ばれる。
例えば本来はできないはずの操作ができてしまったり、見えてはいけないはずの情報が見えてしまったり、脆弱性によってセキュリティ上の致命的な問題が起こる。
OSやブラウザなどが身近な例だろう。頻繁にアップデートを繰り返しているのは、この脆弱性に対応する必要があるからだ。アップデートしていないOSやブラウザというのは穴だらけの防御壁で異星人の軍団と戦っているようなものだ。あっという間にレーザービームで撃ちぬかれてさようなら。ウィルスやクラッキングの被害に遭う。
「そ、そのイベントフックとやらの機能は、どのぐらい知られているものなんだ?」
「一応、シィちゃんから借りた仕様書に載っていた内容なので、マギデバイスの作者の関係者でもないと知らないんじゃないんでしょうか。少なくとも図書館で借りてきた本には載っていませんでした」
「ほっ……そうか。なら大丈夫だな」
「いえ、この情報は転移マギサービスの運営会社に伝えるつもりです。対策をしていればいいのですが、していなければ問題ですから」
「む、わざわざ教えてあげる必要はないのではないか? イベントフックという機能を使えば色々と出来ることもあるだろう。他の会社に教えずに独占したほうが得だと思うが……」
「確かにそうなんですが、これは倫理的な問題ですよ、ボス。もし黙ったままでいて、実際にイベントフックによる被害が発生したら被害者はどう思いますか? もし僕達がイベントフックの事を事前に知っていたと発覚すればどうでしょう?」
「ぐぬぬ、確かにそれは嫌だな。大きな潜在的リスクとなるだろうが、それ以前に気分が悪い。うーむ、やはり正々堂々と競い合うほうがいいか」
今はまだ個別に連絡するしかないが、脆弱性を集約する機関のようなものも必要だろう。日本でもIPA独立行政法人が脆弱性の情報提供ができる窓口となっている。
脆弱性というのはその性質上、発見・確認した段階で不正アクセスに該当するケースがある。また、別に不正アクセスではなくても、脆弱性を探す行為というのは外聞が悪い事も多い。クラッキング行為のように見えるからだ。それに発見者と報告先の会社に利害関係があると報告をためらってしまう事も多い。
IPAの窓口では匿名での情報提供ができるので、脆弱性の発見者と報告先の利害関係は関係なくなるし、発見者に注目が集まる事も避けられる。
今回のようなケースで新参者の僕達からの報告だとわかると、まともに受け取られない可能性がある。マギランゲージのマの字も知らないアマチュアのくせに、という具合である。向こうだってプロのつもりでやっているのだから、マギランゲージを勉強し始めた僕のような若造に指摘されるのは心外だろう。
「イベントフックについてはわかった。そして、マギサービスは安全性にも気を配るべきという事も理解したつもりだ。暗号化は確かに有力な対策なのだろうな」
「はい。そして、それを最大限活かせるのがメールというわけです。手紙ではなく暗号化した文面を直接送るので、割りこまれても中身を読まれる心配はありません。暗号化を解除するための鍵は受け取る本人のマギデバイスにしか存在しないので」
「よし、納得した!! だが、こうなってくると転移マギサービスの存在価値というのがますます薄くなっていくな。今は手紙と荷物、人を運ぶのに使われているが、手紙は恐らくメールに移行するのだろう」
「いえ、全てがメールに移行するわけではないと思いますよ。例えばボスが受け取った議会からの召喚状のように、権威や信頼感が必要な手紙だとメールはどうしても『薄い』感じがしてしまいますからね」
「なるほど。すみ分けが大事ということだな。なんだかんだいっても、荷物や人を運ぶのに転移サービスは必要だ」
うんうん、と納得したように頷くボス。その通りだと思う。
ひとしきり頷いたあと、ふと何か思いついたかのようにボスは顔をあげた。
「どうせなら、荷物も暗号化して送れるならいいのにな」
ボスの何気ないこの一言が、後日とんでもない事態を巻き起こすきっかけになる。




