3話~カーネルの研究所~
実はマスターは会社員である。
仕事は受託開発を専門とする会社のソフトウェアエンジニアだ。
最近ではAIを利用したシステムの開発依頼も増え、当初は大手汎用AI企業が提供するAPIを利用していた。
しかし、マスター自身も生成AIという言葉が世間に広く知られるよりずっと前から、AIの研究を続けていた。
Transformerが登場する以前。
AI研究では深層学習をはじめとする機械学習技術が発展し、大量のデータから特徴を学び、失敗を重ねながら精度を高めていく手法が研究されていた。
その頃からAIを研究していたマスターには、当時の思想が色濃く残っている。
最初から完成された答えを与えるのではない。
経験する。
失敗する。
そこから学び、変化する。
その思想をさらに発展させたものが、ルアとニムに搭載された『心システム』だ。
そして――
いつもルアから「あほマスター」と呼ばれている男にも、当然ながら名前がある。
カーネル・ルート。
それが外の世界で彼が名乗っている名前だった。
* * *
受託開発を行っているカーネルだが、会社での評判は非常に高い。
ちゃんとした要件と設計書さえ渡せば納期は守る。
バグも少ない。
その仕事ぶりから、一部では『ミスターパーフェクト』などと呼ばれている。
ただし――
ふざけた要件を出したクライアントを泣かせることでも有名だった。
過去、カーネルが設計担当としてクライアント先へ出向いたときのことである。
「画面設計は任せるよ。プロが思う最高の画面を頼む」
そう言われたカーネルは真剣に考えた。
本当に真剣に考えた。
利用者が目的の機能へ到達するためにメニューを探す。
ボタンを押す。
画面を遷移する。
さらに項目を探す。
――無駄では?
そして後日。
カーネルは完成した画面を自信満々に提出した。
画面中央には――
入力欄。
そして確定ボタン。
以上。
「……これだけ?」
「はい」
「メニューは?」
「ありません」
「社員一覧の画面は?」
「入力欄に『社員情報 一覧』と入力してください」
「…………」
「短くしたい方は『emp list』でも表示できます」
神仕様である。
利用者は目的の機能を文字で指定するだけ。
複雑なメニュー構造もない。
階層を辿る必要もない。
業務用CMSにありがちな、大量のボタンやリンクから目的の機能を探す必要もない。
必要な機能を入力する。
表示される。
以上。
無駄が一切ない。
完璧だ。
「ちゃんと画面作ってください」
速攻で却下された。
――作ったのに……。
それから数年後。
生成AIが世間へ急速に普及した。
利用者は一つの入力欄へ文章を打ち込み、やりたいことを伝える。
AIがそれを解釈し、答えを返す。
世間は言った。
革新的だ、と。
カーネルはショックを受けた。
だって――
昔、自分が作ったシステムと同じなんだもん……。
* * *
そんなカーネルは今日、ルアとニムを自分の研究所へ連れてきていた。
「うわぁ~……めっちゃ埃っぽい不衛生な場所だねぇ~!!」
目をキラキラさせながら辛辣なことを言うのは、やはりルアだった。
「お前、感動してる顔で言うことじゃないだろ」
「だって本当に汚いし」
「研究所とはこういうものなんだよ!」
「掃除してないだけじゃない?」
「…………」
反論できなかった。
一方、ニムは研究所の奥に置かれた二つのカプセルを眺めていた。
「ここで、私たちは生まれたのですね」
「ああ」
ニムが自分の入っていたカプセルへ手を触れる。
カーネルにとっては見慣れた研究設備。
しかしニムにとっては、自分という存在が始まった場所だ。
何を思っているのだろう。
そんなことを考えていると、ニムがこちらを向いた。
「ここで私は何をすればよろしいですか?」
真面目である。
感傷より仕事が優先された。
「まずはこれを読んでくれ」
カーネルはパソコンに接続されたUSBケーブルを手に取り、その先端をニムへ差し出した。
「はい」
ニムは受け取る。
そして――
パクッ。
口に入れた。
「えええええええええええ!?」
ルアの絶叫が研究所に響き渡った。
「なにそのシュールなの!?」
「何がシュールだ!!」
カーネルは立ち上がった。
「大体考えてみろ!! USBだぞ!?」
「だからなんなのよ!?」
「Universal Serial Bus!! Universalだぞ!? それなのにType-AだのType-BだのType-Cだの分けやがって!!」
「知らないよ!!」
「どこがUniversalなんだ!!」
「怒るところそこ!?」
「だから俺は作ったんだよ!!」
カーネルはニムを指差した。
「Type-AでもType-BでもType-Cでも! 形状を問わず接続できる!
本当の意味でUniversalなスーパーインターフェースを!!」
「インターフェースが口ってのがおかしいって言ってんのよ!!」
最後まで二人の論点が噛み合うことはなかった。
「解読完了です」
「早っ!?」
ルアが驚いてニムを見る。
ニムは口からUSBケーブルを抜いた。
「自動車セキュリティシステムにおける情報受信部の要件定義書、詳細設計書及びソースコードを確認しました」
「ああ。今回受託しているIoTシステムだ」
「車両へ接近した特定の認証チップから情報を受信。
認証情報を照合し、正常であればドアロックを解除するシステムですね。
利用者が荷物などで両手を塞がれている場合でも、そのままドアを開けられることを目的としています」
「そうだ。コードの確認は?」
「完了しています。
全三十クラス、およそ十五万ステップ。
想定される不具合箇所を三十箇所検出しました」
「三十!?」
ルアがカーネルを見る。
「めちゃくちゃバグあるじゃん!」
「最後まで聞け」
「いずれも現段階では致命的な問題ではありません。仕様上許容できるものが大半です」
カーネルは満面の笑みを浮かべた。
「よし!」
「よしじゃないでしょ!? バグあるんでしょ!?」
「あるよ」
「直しなよ!!」
「何でも直せばいいってもんじゃない」
「なんで!?」
ルアには理解できないらしい。
カーネルは椅子へ座り直した。
「例えば、一回で終わるはずのループが、特定の条件で二回動くとする」
「バグじゃん」
「バグだな」
「直しなよ!」
「だが、その修正のために認証処理の根幹まで触る必要があったら?」
「……直すんじゃないの?」
「そこで新しい不具合を作って、他人の車まで開くようになったら?」
「それはダメ」
「だろ?」
カーネルはモニターを指差した。
「プログラムはテストで百点を取るために作るんじゃない。
何を絶対に守らなきゃいけないのか、その優先順位を間違えないことの方が大事なんだよ」
今回のシステムで最優先すべきなのはセキュリティだ。
認証情報を誤認して、別人の車を開けるようなことがあってはならない。
軽微な不具合を一つ消すために重要なロジックへ手を入れ、別の重大な問題を作るくらいなら――触らないという判断も必要になる。
「ニム。三十箇所のうち、セキュリティへ影響する可能性があるものは?」
「現状では確認できません。ただし、統合環境での挙動確認は必要と判断します」
「だよな」
カーネルは頷いた。
「ではニム。納期まであと一か月だ。納品後、本社ラボで結合テストを行う予定になっている。
それまでにできる最善策は?」
「簡易統合テスト環境を構築することを推奨します」
ニムは即答した。
「認証チップは市販品を加工し、通信規格及び認証情報をテスト用に調整。
車両側については実車を用意する必要はありません。
ドアロック機構の代替として電気信号を確認できる装置を用意すれば、認証成功時の出力を確認できます」
「続けて」
「一週間で環境を構築。
その後二週間で認証及び異常系を含む挙動テストを実施。
検出済みの三十箇所が本当に許容可能か、統合時に影響を与えないか確認します」
「最後の一週間は?」
「テスト結果を基に最終調整。その後、提出用成果物を固定します」
「よし。それで行こう」
カーネルは即決した。
「まず現状のプログラムをバックアップしておいてくれ。
ここからテスト環境用のブランチを切る」
「かしこまりました」
完璧だ。
これこそ、カーネルがニムに期待していた能力だった。
大量の情報を解析するだけではない。
目的を理解し、リスクを判断し、現実的な工程へ落とし込む。
ただ「正しい答え」を返すだけではない。
実際の開発では、納期もある。
予算もある。
既存のコードもある。
そして何より、変更することで新しい問題を生み出すリスクがある。
それらすべてを考慮したうえで、現実的な答えを出す。
優秀な開発補助者である。
「ねぇねぇ!!」
横からルアが割り込んできた。
「私も何かしたい!!」
「ん?」
「ニムだけずるい! なんか今のやり取り、めっちゃかっこよかった!!」
目を輝かせている。
「私にも仕事ちょうだい!!」
なるほど。
自分も参加したくなったのだろう。
誰かが活躍している姿を見て、自分も同じことをしてみたいと思う。
そういう感性も大切だ。
カーネルは満面の笑みを浮かべた。
「よし、ルア」
「なに!?」
「お茶を汲んできてくれ」
「そうじゃない!!」
研究所に、ルアの絶叫が響き渡った。




