失敗と仮説
渡界管理施設の一室にて、白峰ら四人は重苦しい沈黙のまま、各自の席に座っていた。
魔法とプログラムを組み合わせた実験は失敗だった。
まず、出力が大きすぎる。それこそ、太陽でも発生したのかと言わんばかりの光の発生は、想定外だった。
魔法の持続時間は5秒で設定していたが、明らかにおかしいということで、ほぼ反射的に実験装置は爆破処理された。実際に魔法が起動していたのは1秒から2秒程度だろう。この対応は賢明な判断だったと言わざるを得ない。
マナの消費量についても、通常の光発生魔法に比べたら明らかに異常と言えるほどの消費が観測されたと聞いている。具体的に数値化出来ない上に、観測者にとっても一瞬の出来事であったため、詳細は不明であるが。
ただ、実際に爆破後のその周囲のマナの量は薄くなっていたように思われる。幸いにして、この状態であればまだまだ魔法は使えるし、さほどの時間も必要とせず、通常レベルにまで回復するだろうと見込まれているが。
強い光を直視したことから、しばらくの間目が見えなくなる人間もいたが、それも一時的なもので数時間もすれば全員が見えるように回復した。
「あの。すまんな。うち、あんなもん作ってしもうて」
項垂れたまま、佐上が囁くように謝罪の声を漏らした。
「佐上さん。あなたのせいではありませんよ。あなたは学者の先生の要望通りに実験用の魔法を実装しただけです」
「せやけど。もうちょっと、気を付けていればってなあ」
悔しそうに、佐上は呻いた。
「でも何で、あんな事になってしまったんでしょうね?」
不思議そうに、海棠が呟いた。
「それについては、今頃は学者の先生方も考え中だと思いますけど。確かに、気になりますね」
佐上が嘆息した。
「それについては、うちに一つ心当たりがある。ほんまに合っているかどうかは知らんけどな」
「どういう事ですか?」
「せやなあ。どこから説明したらいいもんか分からんけど」
力無く、佐上は頭を掻いた。
「ITの分野ではもう大分古くから言われているような用語なんやけど。オブジェクト指向っちゅう言葉知っとるか?」
「いいえ、分かりません」
「うん。まあ、普通はそうやろな」
佐上は頷いた。
「多分、うちの説明なんかよりもIT用語集をネットで検索した方が正確で分かりやすいと思うけれど。オブジェクト指向っていうのは、プログラミングの方法の一つ何や。クラスって呼ばれる、物を抽象化した鋳型を作り、そこにパラメータとかを注入して、実際に動く実体を用意するみたいな」
「すみません。全然分かりません」
白峰他三人は一様に首を傾げた。
「ああうん。それもしゃあないわ。これ、初めてプログラム覚える新人皆そんな感じになる話やから」
ごそごそと、佐上は鞄の中からノートと筆記用具を取り出す。
「まずな? システムって色々なプログラムが組み合わさって出来ているわけやけど。その各のプログラムって、特定の役割っちゅうか、役目で分けられる訳や。DBに接続する役とか、計算をする役とか、データを加工する役とかな?」
「それはまあ、はい。そんな感じなのだろうなとは思います」
「うん。それでや? その特定の役割っちゅうのをどこでどう分けるか? それがシステム作りっちゅうか、何プログラムが必要になるのか洗い出しというか。そういう話になってくると、どう分ければいいと思う?」
「そう言われると、難しそうな気がしますね」
「うん。実際難しい。これをしくじると無駄なプログラムがいっぱい出来たりして後々面倒なことになるんや。でもまあ、そういう話は一旦置いておいて。どう分けるか? という話には一つの方法がある。それが、オブジェクト指向っていうやり方や」
ふむふむと、白峰達は頷いた。
「このオブジェクト指向っていうのは、要するに一言で言うと世の中にあるものをそのままプログラムで表現してしまおうっちゅう考え方や」
「そんなことが出来るんですか?」
「出来る」
佐上は頷く。
「例えばここに、今は外務省用の部屋が有って、その中には机があって椅子があって、うちら四人がいる。これをプログラムの単位で分けるとこんな感じになる」
そう言って、佐上は取り出したノートに何事かを書いて見せてきた。
ノートには大きく四角が書いてあり、それぞれの四角には「部屋クラス」「机クラス」「椅子クラス」「人クラス」と書いてあった。
「それぞれのプログラムの中のコードをどう書くかは今は重要やないから省くけどな。クラスっちゅうか、プログラムの分け方はこうや」
「四つでいいんですか?」
「ああ、それでええ。もっと細かく表現しようとするなら、増えるかもしれんけど。取りあえずは四つや」
そして、更に佐上はノートに何事かを追記し、見せてきた。
クラスが書かれたページの隣には、インスタンス化(実体化)と書かれていた。
「ほんで、話を戻すけれど、この部屋の状態をプログラムで表現するとき。あー、実際に動かすときって言った方が分かりやすいかな? そういうときはインスタンス化っちゅうて、各プログラムにパラメータとかを注入したりして、具体化させるんや。んで、プログラムが動いているときは、こんな具合に、部屋クラスを元に作られた部屋インスタンスがあり、その中には机クラスを元にした机インスタンスが4つ。椅子クラスを元に椅子インスタンスが4つ。人クラスを元にした、佐上インスタンス、海棠はんインスタンス、月野はんインスタンス、白峰はんインスタンスがそれぞれ中に入っている。とまあ、こんな感じになる」
「なるほど、クラスという鋳型を元に、名前といった属性を付与して、そうして現実を表現していくんですね」
「せや。その通りや」
よしよしと佐上は頷いた。
「こういう設計の仕方の良いところはやな? 例えば、アサやミィレはんがこの部屋に来たとしても、その場合は人クラスにアサっちゅう名前やミィレっちゅう名前を与えた、そういうインスタンスを部屋の中に放り込めば表現出来てしまうところにある。いちいち、アサクラスとかミィレクラスとか作ってられんやろ? 特に、旅行者とかの管理システムとか考えてみい? お客さん来る度にそれ用の特別なプログラム作ってられるかと」
「確かにその通りですね。名前とか行き先とかをデータとして持たせてしまった方が、表現しやすいです」
なるほどと頷く白峰や月野を眺めながら、佐上は半眼を浮かべた。
「いや? おどれら飲み込み早すぎやせんか? うち、これと同じような説明しても、会社の新人達、理解するのにものごっつ苦労してんのやけど?」
「あはは、私はまだちょっと自信無いです」
苦笑を浮かべる海棠に、佐上は「いや、むしろそれが普通やからな?」と言った。
「それで、話戻るけど。あの事故が起きた理屈については、うちはこんな感じやないかと思っとる。後で、学者の先生達からも同じような説明されるかもやけど」
苦虫をかみ潰したような表情を佐上は浮かべ、続けた。
「うちが作った魔法。あれはループ処理の中に光発生魔法を挟んだものや」
「はい」
「それでや。つまり、あの光発生魔法というのは、プログラムで例えるのなら一種のインスタンスやったんやないか? そういう仮説や。ごく短い時間やけど、プログラムのループ処理って恐ろしいほどに速い。んで、光発生魔法がループ処理によって爆発的に増加して、結果的にああなったちゅう訳や」
「そんなことが?」
「まあ、あくまでも、うちの仮説やけどな?」
呻くように、佐上は言ってくるが。
白峰には、かなり当たっている可能性があるように思えてならなかった。
「ちなみにそれ、実際のプログラムでも起きる話なんですか?」
海棠の質問に、佐上は首を横に振った。
「いや? ひょっとしたら、大昔のプログラムではあったかもしれんけど。今の時代のプログラム言語なら、そんなことは起きないはずや。ぽんぽんとそんなことが起きたら、大変やしな。作ったインスタンスが使われなくなっても残ったらメモリの無駄遣いやし。使われなくなった時点で、そのインスタンスは削除されるようになっているはずや」
佐上は虚空を見上げた。
「ああでも、光魔法って一度実行したら止まれ言うまで実行され続けるしなあ。別スレッドという形で実行され続けて、使われなくなったという判断がされないまま、動いていたっちゅう可能性ありそうやなあ」
一際大きな溜息を佐上は吐いた。
「改めて、うちはとんでもないものを見つけ出してしまったんやないかと思うわ。今回はたまたま被害が出なかったからええものの。一歩間違えばとんでもないことになっていたかも知れん。それこそ、兵器に悪用されたりしたら――」
「それは、佐上さんのせいではありませんよ」
静かな口調で、月野が宥める。
「せやけどっ!」
「例え佐上さんが見付けなくても、いずれ誰かが同じものを見付けたことでしょう。遅いか早いか、それだけの話です。問題は、私達人類は、この新しい知識に対し、どのように向き合うか? そうではありませんか? そして、願わくば、これが人類にとって輝かしい未来に繋がるものに繋げられるようにすること。そこが、これからの課題でしょう」
大真面目に言う月野を佐上は数秒、見詰めた。
そして、肩を竦めて笑みを浮かべる。
「人類の未来だとか、デカい口を叩きおって、ほんまにおどれは。自分がどないなもんやっちゅうねん」
呆れたような口調で。
「でも、まあ確かにその通りかも知れんな。少しだけ、気が楽になったわ。ありがとさん」
ほっと、佐上は頬を緩めた。
ここのところ、システム開発に関係するような話ばかり書いているから、読んでくれている人に伝わっているか心配。




