ふつーのプログラマです。主に企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。

夜の翼 (24) 銀の弾丸

»

 「そっかあ」リンが感に堪えたように呟いた。「defaultdict か。これで存在チェックをなくせるじゃん」
 「へー」マイカも興奮した口調で言いながら左右を見回した。「for のelse って、break と組み合わせて使うんだ。全然、知らなかった」
 「リスト内包表記を讃えよ!」カズトが喚いた。「こいつやべえぜ」
 ネットユーザから、次々に寄せられるエレガントなコーディングを試すPO たちの顔は、ガチャでレアアイテムを引き当てたゲーマーのように歓喜に満ちていた。落ち着いて見えるシュンでさえ、両眼に隠しきれない好奇を宿している。それを見る私は複雑な気分だった。これが純粋にプログラミングスキルを高めるためのトレーニングか、平和なプログラミングコンテストだったら、どんなに幸せだったことか。
 「ここのfilter、リスト内包表記に変えてみる」シュンが指を走らせた。「リン、引数リストも変えるから、そっちの呼び出しも合わせて」
 「りー」リンは楽しそうにコードを打ち込んだ。「いいよ」
 「よし、デプロイ開始......完了」
 4 人の視線が、壁にもたれるように座っている若いソード・フォース隊員に向けられた。その頭部は古い怪奇映画に出てくるミイラ男のように、血の滲んだ包帯で覆われ、かろうじて片目が覗いているだけだ。鼻には酸素カニューレがテープで固定されている。負傷して収容された中で、状態が一番マシだったのが、第5 小隊に属するこの隊員だ。コールサインはグローイン。
 グローインは黙ってサムズアップすると、姿勢を正して作業デスクに手を伸ばした。デスクの上には、ソード・フォース標準装備のランチャーが置かれている。そのカバーは外され、内部機構がむき出しだ。グローインは保守用パーツのケースから、パーツを抜き出すと、慣れた手つきでトリガー部分を組み立てていった。
 このランチャーはテストのために、コマンド2 から運ばせたものだ。トリガーパーツが外してあるのは、完成品のままだと、ディープワンズが展開しているロジックによって、たちまち腐食が進行してしまうからだ。PO たちがロジックを組み上げ、デプロイするたびに、グローインが新しいパーツをセットし直していた。この40 分あまりで、17 個のバージョンがデプロイされたが、トリガーパーツ群は、その都度、腐食を繰り返している。ただし、PO たちの努力が全く報われていないわけではない。腐食しなかったり、その進行速度が遅かったりするパーツが、バージョンによって散見されるようになっていた。サチがその結果を記録し、PO たちはコーディングを書き換えたり、入れ替えたり、ときには完全に削除したりと、正解への試行錯誤を繰り返していた。
 グローインがトリガー部分を組み上げ、身体を引いた。入れ替わりにサチがランチャーを覗き込み、歯科衛生士が歯の状態をチェックするように、パーツの状態を確認していく。
 「p1、p3 からp5、p8、p9、p10 がダメージ」サチはタブレットに結果を入力しながら言った。「p4 はダメージしてるけど、進行が遅い。残りは正常」
 「ペア、交替だ」私はコーディングを開始しようとしたPO たちに言った。「シュンとマイカ、リンとカズトだな。それから、そろそろ何か口に入れて、脳にブドウ糖を送っておけ」
 PO たちは頷いて、チョコレートやクラッカーを口に放り込むと、またモニタに向き直った。様々な出来事があった半日だが、まだ疲労の兆しすら見せていない。その体力と集中力が羨ましい。
 「リスト内包表記はそのままで行こう」私は記録を見ながら指示した。「p6、p11 は維持できるはずだ。defaultdict は外そう。それを入れてからp1 とp4 がダメージのままだ。p3 がずっと効果ない。何か違うアプローチが必要かな」
 「もう少しなんだけどな」シュンがペットボトルからミネラルウォーターをゴクリと飲んだ。「enumerate はかなり効果あるみたいだ」
 「文字列の結合、プラスじゃなくて、join でやったらどうかな」マイカが提案した。「メモリの効率がいいんだって」
 「ここ、for でrange 使ってるだろ」カズトがモニタを指した。「zip にしてみるか」
 「それで行こう」私はサチを見た。「次はいくつだっけ」
 「次はバージョン19 です」
 「ハル」私はヘッドセットに呼びかけた。「大丈夫か?」
 『ノープロブレム』元気な声が返ってきた。『無問題。暑いけどね』
 「よし、バージョン19 開始」
 PO たちの手が一斉に動き始める。
 「美しいプログラム」といっても、単純ではない。そもそも、何をもって「美しい」と定義するのかが不明瞭だ。ソフトウェア開発の世界に銀の弾丸が存在しないのと同様に、万人が認めるエレガントなコーディングもまた存在しない。経験や立場、言語によっても基準やルールが異なるからだ。たとえば、ソースコード上のインデントは、Python では言語構造の一部になっているが、Java では単なる可読性を向上させるための慣習に過ぎない。
 私がシステム会社で働いていた頃、「短ければ短いほどいい」と概念でコードを書いていた人がいた。それは一つの真理ではある。ピタゴラスは「多くの言葉で少しを語るのではなく、少しの言葉で多くを語れ」と言った。短いコード、イコール、読みやすいコード、というわけだ。
 ただ、短いソースでありさえすればいい、というのは、私の経験に鑑みても、必ずしも正しいとは思われない。変数名が全部一文字だったり、三項演算子を多用したり、ワンライナーばかりであったりしたら、逆に可読性は落ちるだろう。文章力に優れた長編小説を読んでいても苦痛でないように、長くても、センスがあるコーディングであれば、逆に理解はしやすいのだ。
 ATP の場合、どこかの誰か、または何かが、ソースコードの是非を判断している。少しずつ緩和されているが、一定のコーディング規約が存在していることから、コンパイラに該当する仕組みがあることは確実だ。だが、単に中間コードを生成するだけのコンパイラではなく、スクリプト言語であるPython を、そのまま実行する環境があるのではないか、とPO 課のチーフの間では囁かれている。中間コードを生成しているのであれば、変数名の違いなど、コンパイル時に吸収できるからだ。
 今まで、それほど気にしたことはなかったが、この件が落ち着いたら、その詳細について佐藤管理官に訊いてみること、と私は頭の中のTODO リストに追加した。バックグラウンドに対する知識があれば、今回のようなケースにおいて、試行錯誤の時間を減らせるはずだからだ。
 私は外の状況を確認した。まだドローンは飛ばせないが、高高度を飛行する無人偵察機から撮影した赤外線画像が届いている。ドローンと同様に撃墜されることを懸念して、高速でフライバイしながら撮影なので、枚数は少なく、解像度も高くはない。だが、情報を得る手段が限られている現在、それらの画像は貴重だった。
 ソード・フォースの各小隊は、港南台第二中学への接近を一時的に断念し、ディープワンズやインスマウス人と距離を取って、残り少なくなった弾薬を節約しつつ、散発的な攻撃を継続していた。完全に撤退しないのは、敵の全勢力が中学校へ向かうことを避けるためだ。防衛本部とソード・フォース作戦司令部は、敵が今すぐにでもそうした行動に移らないのは、背後から反撃されることを嫌っているためだと推測している。これは、敵がシュンを、輝くトラペゾヘドロンのパラメータキー奪取を、確実に遂行しようとする決意の表れだと言えた。後顧の憂いを断ってから、邪魔されることなく、シュンを狙うという意図が明らかだからだ。一定の損害を覚悟の上で強行に突撃する、という戦術は、ディープワンズには無縁であるらしい。
 『川崎、木更津のソード・フォース部隊が緊急に移動中です』オペレータが知らせてきた。『空路を避けて、陸路で移動中のため、遅れが出ていますが』
 「わかった。各指揮官に、こちらの指示があるまで参戦しないように伝えておいてくれ。あと、ランチャーはバラして持ってくるように」
 『すでに連絡済みです』オペレータの代わりに、分析二課のサナエが答えた。『この現象は局地的なものではなく、全世界で活動中のソード・フォース部隊でも確認されています。完成品のランチャーだと、同様にトリガー部分が腐食しているんです』
 「そうか。ますます、こっちのオペレーションが重要になってくるな」私はプライベート回線に切り替えた。「それはそうと、佐藤管理官はまだ戻らないのか」
 サナエは少し躊躇ってから答えた。
 『実は、佐藤管理官は横浜ディレクトレートを離れました』
 「何?」私は驚いて訊き返した。「離れた? いつだ」
 『20 分ほど前です』
 「一体......どこに行ったんだ」
 『すみません。今は言えません』
 「ここの状況よりも重要な用件なんだろうな」
 『はい、重要です』サナエは頷いた。『台場さんに言わなかったのは、そちらのオペレーションに集中していただきたかったからです』
 「それはわかるが......」
 私がさらに追求しようとしたとき、カズトが叫んだ。
 「やった!」
 振り向くと、グローインがランチャーを持ち上げ、フレシェット弾を装填していた。そのままトリガー部分を注視して確認し、ややあってOK サインを作る。ランチャーがどの部分も腐食することなく、正常稼働しているということだ。
 「全ソード・フォース隊員」私は急いで呼びかけた。「ランチャーの機能が回復した。繰り返す、機能が回復した。各小隊の判断でティープワンズ、および、インスマウス人に対抗しつつ、港南台第二中学への集結を急げ」
 複数の応答があった。どの声も歓喜に満ちている。PO たちも歓声を上げてハイタッチを交わし合った。
 「ドローンは?」
 『こちらも回復』オペレータが応答した。『予備の全機を発進中。補充として20 機を現在輸送中です』
 消えていたモニタが次々に蘇った。うごめくディープワンズの姿を、高感度撮影で捉えた映像だ。これで危険な近距離での目視観測任務からハルを解放できる。
 「みんな、よくやった。ハル、成功だ。戻ってきてくれ」
 『了解』ハルが答えた。『冷たい飲み物、お願いします』
 「これ、どうします?」
 リンが訊いたのは、カズトが使っていたノートPC に表示されているteratail.com の画面だ。アドバイスを求めたスレッドには、サチが「もう帰ることにします」と投稿したにもかかわらず、今でもサンプルソースの投稿が続いていた。
 「もう切って......」言いかけて、私は思い直した。「駒木根さん、自宅からアクセスしたことにして、お礼の言葉を書いておいてくれないか。メールで先輩に見てもらったら、OK が出たってことにして」
 サチは頷いて、文章の入力を開始した。本来なら、協力してくれた日本中のプログラマたち一人ひとりに感謝状を贈りたいぐらいだ。もっとも、投稿者が若い女性だと思っているプログラマたちは、私から感謝されても、あまり喜ばないかもしれないが。
 「仕事に戻るぞ」私はPO たちに告げた。「ディープワンズ対抗ロジックの再構築だ。いつものルーチンだが、数が多い上に、他のセクションの応援は期待できない。もう少しだけがんばってくれ」
 「シャワー浴びたい」リンが呻いた。
 「終わったら温泉でも連れてってやるよ」
 「うわ」16 才のPO は顔をしかめた。「おやじくさい」
 「悪かったな。オペレーション開始」
 PO たちはモニタに向き直った。

 ◇ ◇ ◇ ◇ ◇

 「もう少しだけ」と言った私の言葉はウソになった。私たちが港南台第二中学を後にして、横浜ディレクトレートに戻ったのは、翌8 月7 日の昼近くになったのだ。
 ランチャーが使用可能になったため、ソード・フォース部隊は、積極策に転じた。さらに犠牲を出しながらも全部隊の集結に成功し、校門までの最短距離を走破すべく、一点突破を開始したのだ。その動きに同期して、セクションD のPO たちは、選定されたディープワンズへの対抗ロジックを、次々に構築し続けた。すでに連続勤務時間はとっくに過ぎていたが、他に選択肢がなかった。
 フレシェット弾を撃ち込まれたディープワンズたちは、次々に動きを停止し、その場に崩れ落ちていった。ディープワンズもされるがままになっていたわけではなく、現実干渉ロジックのバリエーションを変えて反撃してきた。ソード・フォース部隊のランチャーは、再び使用不可になったが、今度はこちらも準備ができていた。PO たちは、即座に修正プログラムをデプロイし、ランチャーはすぐに機能を回復した。
 日付が変わった0 時18 分。生き残っていたソード・フォース部隊の全員が、ようやく学校敷地内に入ることができた。損害は大きく、9 個小隊220 名のうち、生還した隊員は合計で97 名、うち戦闘可能な隊員は76 名だった。
 ランチャーのパーツ交換作業の間、ソード・フォース隊員たちは、つかの間の休息を取ることができたが、PO たちはそうはいかなかった。後方からの攻撃がなくなったことで、ディープワンズたちは正門に向かってきたからだ。PO たちはドローンからの映像で目視観測を行い、対抗ロジックの構築を続けた。ただし、この時点では、正門を越えてこようとするディープワンズ個体のみを対象としていた。
 1 時40 分、川崎と木更津からの援軍が到着し、ディープワンズへの攻撃を開始した。同時に、タイミングを計っていたハーミアが、ハウンドのグール部隊を投入。これで戦況が大きく変わった。敷地内で命令を待っていたソード・フォース部隊が、正門から飛び出し、ディープワンズたちにフレシェット弾を浴びせる。三方向からの攻撃を受けたディープワンズたちは、さらに複数のロジックを展開してきたが、それらは入念に計画されたものではなかったので、ほとんど現実に影響を及ぼすことはなかった。それでもディープワンズたちは撤退、という行動を選択することがなく、愚直に正門への進撃を続け、順番に撃ち倒されていった。
 午前2 時を過ぎた頃、それまで散発的に抵抗を続けていたインスマウス人たちが、突如として武器を捨て、逃走、あるいは投降を選んだ。ディープワンズによる指令が途絶えたためだろう。ソード・フォース部隊は、攻撃対象をディープワンズのみに絞ることが可能になり、その攻撃効率はさらに上昇した。少し前に一小隊を割いて補給部隊との連絡経路を確保できたため、武器や弾薬、水、レーション、医薬品などの心配はなくなっていて、ソード・フォース隊員たちは、残弾数に神経を使うストレスからも解放されていた。
 単体ではディープワンズの力は軽視すべきものではなかったが、充実した武器弾薬と援軍を得たソード・フォース部隊は、恐れることなく立ち向かい、午前5 時にはほぼ全数を行動不能状態に追い込むことに成功した。薄明の光が、正門を中心とする半円状に転がる、無数のディープワンズの巨体を浮かび上がらせていた。ディープワンズ対抗ロジックは、いまだにノンリーサル・オペレーションだったので、そのほとんどは仮死状態で活動を停止しているだけだったが、何体かは「うっかり」破壊的攻撃を受けてしまったらしく、すでに原型を留めないまでに崩れている。
 ソード・フォースによって戦闘終結宣言が出されると同時に、横浜ディレクトレートや、周辺の拠点から出発してきていた、大型トレーラー数十台が街路を進んできた。施設管理課の特殊処理班が何人も降り立ち、ディープワンズの身体に、片っ端から何かを注入してまわった。サナエが言っていた量子的トレーサーだ。処理が済んだディープワンズの身体は、数人がかりでトレーラーの中に押し込まれた。何体かは研究材料としてATP に運ばれ、残りは海に放り出されることになるはずだ。
 全ての作業が終わったのは、午前11 時過ぎ。それまでPO たちは警戒を解くことができなかった。対抗ロジックの効果が浅い個体がいた場合に備えてのことだ。交代で仮眠は取ったものの、マイカなどは気の毒にまぶたが半ば以上閉じたような顔でがんばっていた。夜更かしに慣れているカズトでさえ、あくびを連発している。
 私たちが港南台第二中学を離れたのは、午前11 時30 分過ぎだった。警備部の軽ワゴンに分乗して横浜ディレクトレートに向かう。少し離れたとき、背後で大きな爆発音が響いた。一般向けのストーリーをでっち上げるためにソード・フォースによって、校舎の一部が爆破されたのだ。すでにぐっすり眠り込んでいたPO たちは、その音にも目を覚ますことはなかった。

 ◇ ◇ ◇ ◇ ◇

 横浜ディレクトレートに戻ったPO たちは、かろうじてベッドに向かう間だけ薄目を開き、そのまま泥のように寝入ってしまった。サチも最低限の後処理だけを済ませて、仮眠室に向かっていった。私も自室に直行したいところだったが、その前に片づけておかなければならない用件が残っている。放置したままでは、眠れないとわかっていた。私は今なお、防壁の修復と再構築に奔走しているPO 課を出て、分析部へと足を向けた。
 サナエは分析二課の自席にいた。少し両眼が腫れぼったいが、髪も服装も乱れていない。事前に予告をしたわけでもないのに、サナエは私の顔を見ると、小さく頷き、隣接している小会議室へ誘った。
 会議室のテーブルの上には、コーヒーのポットが置かれ、刺激的な芳香を放っていた。私は椅子に座ると、遠慮なくカップに黒い液体を注ぎ、カフェインを補給した。
 「用件はわかっています」サナエは座ると、自分もコーヒーを注いだ。「佐藤管理官のことでしょう」
 「そうだ」私は頷いた。「長居をするつもりはない。質問はたった3 つしかない。一つ、彼はどこへ行ったのか、二つ、何のために行ったのか、三つ、いつ戻ってくるのか」
 「まず言っておきますが、私たち分析部もとても当惑しているんです。ほとんど前例のないことだったので」
 「すまんが、疲労物質が脳に蓄積していて、うまく回転していないようなんだ。それは何に対して言ってるんだ?」
 「今回の一連の事象、全てです」サナエはコーヒーをすすった。「エーリッヒ・ツァンの音楽とかね。私たちが前提としていた常識が、音を立てて崩れたといっても過言ではないんです」
 「佐藤さんが急な出張に出たのも、想定外だったと言いたいのか?」
 「いえ」サナエはかぶりを振った。「それは必然的な結果に過ぎません」
 私は唸ってコーヒーを飲んだ。エスプレッソかと思うほど濃かった。
 「二つ目の質問から答えますね。実は何と説明したら理解してもらえるのか、今ひとつ自信がないんです。一番近い言葉で表現するとしたら、契約更新、もしくは契約更改ということになります」

(続)

 この物語はフィクションです。実在する団体名、個人とは一切関係ありません。また、特定の技術や製品の優位性などを主張するものではありません。本文中に登場する技術や製品は実在しないことがあります。

Comment(15)

コメント

匿名

砂糖管理官の謎な振る舞いでどこに話が飛んでいくのか予想しづらい\(^o^)/

匿名

佐藤管理官の謎な振る舞いでどこに話が飛んでいくのか予想しづらい\(^o^)/
(前の投稿はTypo(´・ω・`))

匿名

このコメント欄にもRR度の低下ロジックが構築されてきたようです

匿名

佐藤さんはSPUに行って敵の親玉と交渉してるのだ

匿名

>「p1、p3 からp5、p8、p9、910 がダメージ」
最後なんだろ。
単にPを飛ばした(P)910、P10、又はそれ以外の何か。
とはいえ流石にトリガーが910個の部品で構成されているとも
考えにくいイメージだしはてさて。

横浜のソードフォースは再建に時間がかかりそう。

匿名

なんでリーサルにせずにディープワンズを仮死状態にしたんだろう。
泳がせて情報を取りたいってことかな。

インスマウス面

インスマウス人と『やむを得ない場合以外は殺傷するな』っての契約したからでは?

匿名

佐藤管理官は謎の会話(詠唱?)技能もお持ちでしたね。
更新が楽しみです。

リーベルG

匿名さん、ありがとうございました。
p10 の間違いでした。

匿名

佐藤管理官「ごめん!僕の契約更新されなかった!(テヘペロ)」

匿名D

契約が更新されないことはないよね。
問題は、代価が何かということであって。
佐藤管理官なら、当然耳を揃えて払うことでしょう。


そもそもATPが使っている技術はどこから出てきたものなのか。
人間の歴史でも、同じ神を奉じる人間同士が戦争したりしているし。

匿名

そろそろ終盤?
今までの伏線がどう回収されるか楽しみです。

匿名D

なんでそう思うの?
起承転結なら、台場&サナエの会談でもって承の終わり、
くらいのところだと思うがな。

匿名

ようやっと人物紹介が終わった段階でしょうね。

じぇいく

8月6日の出来事だったんですね。
対応をしくじれば熱核攻撃で消し飛ばしてしまうというオプションもあったのでしょうから、なんともアイロニカルな設定ですね。

コメントを投稿する