『VLOOKUPの死角』#09 最終話【中編】:真実のドック —さよなら、VLOOKUP—
※本作は最終話の【中編】です。
あらすじや全話の一気読みは、公式の【連載マガジン(ロードマップ収録)】を、前編を未読の方は 最終話【前編】 をご覧ください。
最終話【中編】
ディスプレイの鮮烈な赤が、役員会議室の白い壁に反射していた。
「見事な手際だ、葛城くん」
敷島が口を開いた。
「君の1円のズレも許さない厳密さは大したものだ。だが、君はビジネスの質量というものが分かっていない。組織の規模が、どれほどの力を持っているのかを 」
敷島は、隣の神崎へ視線を流した。
神崎は口元に笑みを浮かべたまま、組んでいた足を入れ替えた。
「せっかくの決定論も、入力されるデータが不確実であれば、壊れた計算機だよね。望月さん、君ならよく分かるだろう? 現場のデータなんてものは、いくらでも濁らせることができるんだよ」
神崎は、美守の顔を正面から見据えた。
敷島は、ポケットから黒いUSBトークンを取り出すと、手元のラップトップへ差し込んだ。
「君の操るCloudDockは、データが正しいルールに従って並んでいることを前提にしている。その前提を確率論の海に沈めてやればどうなるか」
大画面の中で、整然と並んでいた新旧システムのマスタデータが、不規則に変形を始めた。
英単語の羅列の合間に、不規則に文字化けしたような記号と、不整合を示すエラー行が急速に増殖していく。
「システム移行のマスタデータに、生成AIの確率論を混入させた」
敷島は低い声を響かせ、2人の前に立ちはだかった。
「どの行が正しいマスタなのか、自動判定は不可能だ。1円のズレを暴く算数が、入力データの濁りによって無効化される。これがコストと納期をコントロールする我々の仕様なのだ」
データが急激に濁り、解析エンジンの処理を飲み込んでいく。
結合キーがランダムに汚染され、どの情報が本物なのか、プログラムが道を見失っていく。
リクの打鍵音が、唐突に途絶えた。
リクの手は、キーボードの上で、指先を曲げたまま停止していた。
リクは、瞳を見開いて硬直させた。
論理の鎧を纏い、どんな不条理も両断してきた彼の計算がストップしていた。
神崎の低く軽薄な笑い声が、室内に響き渡った。
「いやあ、傑作だね。無能な事務員をわざわざ連れてきて、大層な監査ごっこを始めるから何かと思えば、所詮は組織からはみ出した壊れた計算機だったわけだ」
神崎は、デスクの上に肘をつき、指先で美守を指さした。
「望月さん、君も可哀想に。こんな男に振り回されて、また居場所を失うんだ。昔からそうだ。深夜まで必死に数字合わせをして、結局は何も残らない。使い捨ての事務員なんだよ」
神崎の言葉が、美守が心の奥底に抱える傷を容赦なく抉る。
深夜のオフィス、朝日が昇るまで終わらないExcelの数式、いくら努力しても報われなかった暗闇の記憶が、脳裏をかすめる。
美守は、右手の人差し指にあるタコに鈍い痛みを覚え、冷たい汗をにじませた。
いや、違う。
私はもう、あの頃の無力な私じゃない。
美守の視界には、キーボードの上で動きを止めたリクの手があった。
彼は、正論すぎて他人を追い詰めてしまうけれど。
誰よりもデータに、現場の事実に誠実だった。
私を属人化の暗闇から、VLOOKUPの呪縛から救い出してくれたのは、この人の不器用な優しさだったのだ。
リクが、データの闇の前に立ちすくんでいるなら。
今度は、私がリクを救う番だ。
美守は、リクのノートPCの画面を凝視した。
画面の端で、不自然に点滅を繰り返す結合処理の文字列。
「Table.NestedJoin」の記述の末尾に、ノイズに紛れるようにして、奇妙なパラメータがネストされている。
汚染されたマスタデータを強引に結合させる処理の直後に、特定の文字を置換するステップが挟まれていた。
Table.ReplaceValueその後に続く、空白への置換パターン。
システムがハルシネーションを起こしているのなら、データはもっとランダムに、不規則に変形する。
だが、このコードの歪みは、規則正しく、都合よくエラーを空白の中に消し去っている。
都合の悪いエラーを非表示にして、見た目だけを綺麗に整える思想。
AIの引き起こしたランダムなノイズではない。
裏側でマスタの結合を強引に歪め、表面上のレイアウトを合わせている。
かつての美守がVLOOKUPで無理やり別の表から値を引っ張ってきて、エラーを空白で隠蔽していたスパゲッティExcelと、思想の根本が同じだった。
神崎の、歪んだ意志が残した隠蔽の「癖」だ。
決定論の計算機であるリクには、人間の保身が放つ「癖」が、不条理すぎて見えないのだ。
ガバナンスの腐敗臭を放っているのは、システムではなく、対面に座るこの男の心だ。
リクの論理が、綺麗な算数が通じないというのなら。
現場の執念で、その小賢しい泥を剥ぎ取ってやる。
美守は息を止め、1歩前へ踏み出した。
驚きに固まるリクの真横をすり抜け、彼のノートPCのキーボードへと、そっと手を重ねた。
リクは、指に触れた美守の熱に、わずかに肩を揺らした。
「葛城さん、手を止めないで」
美守の声は、自分でも驚くほどに澄んでいた。
対面から、神崎の冷ややかな声が差し込まれた。
「見苦しいね、望月さん。使い捨ての事務員が、画面の文字列を眺めたところで――」
「いいえ、分かります」
美守は、ディスプレイのM言語を指差した。
「葛城さん、『Table.ReplaceValue』のステップを見てください。不自然な空白への置換がネストされています。ランダムなノイズなんかじゃない。私が何年間も、毎月深夜まで強要され続けた『手パッチ対応マニュアル』の隠蔽の思想そのものです。これは神崎部長の、人間の保身の『癖』です」
リクの瞳が細められた。
「人間の、保身の癖……」
「はい。綺麗な算数しか知らない葛城さんには、この男のドブネズミのような悪意が、不条理すぎて見えなかったんです。データの泥水を剥ぎ取るための、クレンジングの答えは私の頭の中にあります。葛城さん、私の言う通りにクエリを書き換えてください」
リクは美守の視線を受け止めると、その薄い唇の端をわずかに持ち上げた。
「了解しました、望月さん。ナビゲートを」
彼は再びキーボードのホームポジションへと指を構え、画面を睨み据えた。
「『Table.NestedJoin』の末尾の引数を書き換えます。空白マスクを無効化し、全件を強制結合。条件を指定してください」
美守は、対面に座る2人の男を正面から見据えた。
「エラーコードを逆回しにして、ダミーの置換ステップを全消去してください。神崎部長がいつもマニュアルの3ページ目で隠していた、あの手順の通りに!」
【次話へ続く】
▶︎最終話【後編】:真実のドック —さよなら、VLOOKUP— を読む
