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

ハローサマー、グッドバイ(11) 探知不能

»

 綱島街道は多摩川にかかる丸子橋を渡った交差点から始まり、今は動いていない東急東横線に沿うように横浜方面に伸び、第二京浜にぶつかるまで続く幹線道路だ。ソラニュウム・ウィルスが世界を一変させる前、バスや自転車で何度も通ったことがある。平日でも休日でも交通量の多い道路だったが、その名残が両側の路肩に積み上げられた自動車やバイクの残骸だ。

 最後にこの街道を通ったのは、ヨコハマ撤退の時だ。路上に放置された自家用車やトラックを、自衛隊の施設作業車ドーザーブレードが、耳をつんざく破壊音とともに強引に押しのけて避難経路を確保する中を、着の身着のままの市民たちがパニック寸前になりながらも、かろうじて秩序を保ちながら潰走していったのだ。R 型のZが歩く平均速度は時速3キロ以下だから、冷静に考えれば追いつかれるはずはないのだが、それまで遠い海の向こうの出来事だと、すぐに沈静化するだろうとたかをくくっていた災厄が、いきなり手を伸ばせば届く場所に大発生した衝撃と恐怖は、そんな理性など吹き飛ばしてしまったのだった。それでも、最終的な避難者が1万人を超える中、子供や女性、身障者の避難が優先され、倒れた人がいれば周囲の人々が手を貸して進み、結果として死傷者の数が最小限度に抑えられたことは、後に世界中から賞賛されることになった。

 ようやく大綱橋を通って鶴見川を渡り終えたとき、力尽きたぼくは他の市民と同じように道路の上にへたりこんでしまった。近くのコンビニの店員が、店の損害など考えずにドリンクやスナックなどを、避難してきた人たちに無償で配布していて、その人の心の温かさが、空に広がる夕焼けの無慈悲な美しさとともに、鮮明な記憶として刻まれている。

 橋から400 メートルほど進んだ地点で、間断なく打ち上がっていた花火が止み、同時に指揮車両は一旦停止した。

 「フェーズ2 に移るぞ」臼井大尉はそう言うと、左右に展開していた分隊に指示を出した。「第1 分隊、先行しろ。第2分隊は右後方から支援。ポイントマンは50 メートル先行。位置と距離は分隊長の判断で調整しろ。全員、静寂を維持。水分と塩分補給を忘れるな。3、2、1、マーク」

 指揮車両は時速4キロ程度でゆっくりと動き出した。臼井大尉に言われて、ぼくは貸与されたヘッドセットをかけた。島崎さんと胡桃沢さんも型は異なるが似たようなヘッドセットを着けたが、ボリスは顔の半分を覆うようなヘッドマウントディスプレイを装着した。人権監視委員会の朝松氏は両耳タイプの密閉型ヘッドホンをかけ、2 つのモニタを注視している。何が表示されているのかは、ぼくの位置からは見えなかった。

 「監視委員用の回線が別に確保してあって」ぼくの視線に気付いた島崎さんが教えてくれた。「全隊員のビデオ映像と音声が表示できるようになってるんだ。これも日本独自仕様だね。それから、あっちのモニタが、全隊員の位置情報で、その下が隊員からのビデオストリームがランダムに表示されてる」

 島崎さんが指したのは、ドライバーズシートの後ろに、上下に並んで設置されているモニタだった。ワイヤーフレームの地図の上に、明るいグリーンで隊員のアイコンが表示されている。谷少尉率いる第1 分隊は左前方10 メートル先に散開し、斥候のキトンがさらに40 メートルほど先行している。第2 分隊は右側だ。こちらからはテンプルが同じように先行していた。ほとんどの隊員がUTS-15J を銃口を地面に向けて構えているが、第1 分隊のスクレイバーと第2 分隊のレインバードは、ドラグノフ狙撃銃を背中にかけていた。

 不意に、ぼくが膝に載せていたノートPC が微かに震動した。ぎょっとして見下ろすと、いつの間にか電源が入っている。

 「おい」ぼくの頭上で声がした。「ちょっとそれ貸せ」

 見上げると胡桃沢さんが、ノートPCを指していた。ぼくがノートPC を差し出すと、胡桃沢さんは指紋認証でログインした。

 「デスクトップにソリストモニタツールがある」胡桃沢さんはノートPC を返してよこしながら言った。「使い方は島崎に訊け」

 胡桃沢さんはさっさと自分の席に戻ってしまい、入れ替わりに島崎さんがやってきた。

 「それを起動すると、任意の隊員と同じディスプレイ情報を表示できるんだよ」島崎さんはアイコンを指した。「何人でも同時に開けるけど、たぶん3人も開けば重くなってくるからできるだけ少なくね」

 「ありがとうございます。一応訊きますけど、こっちからの操作はできないんですよね?」

 「もちろんできない。一方通行でモニタするだけ。シミュレータ環境にすれば、この中の仮想マシンにパーソナルデータのスナップショットをコピーして操作することはできるけどね。まあ、それはよほどひどいバグがあった場合だけの話だよ。とりあえずは、何かあったときのために、モニタ環境で表示の切り替え方法なんかを試してみて。こっちで何かやっても、実際の隊員側の表示が変わるわけじゃないからさ」

 「わかりました」

 島崎さんの言う「何かあったとき」は、それからすぐにやってきた。

◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

 ぼくがモニタツールの機能を試していると、ボリスが立ち上がり臼井大尉に話しかけた。隊列はちょうど大倉山駅付近を通過しているところだった。

 「そろそろドローンをテストしませんか」

 「今?」

 「ええ。何か問題があって戻るなら早い方がいいですからね」

 「こういう狭い場所ではやりたくないな」臼井大尉は周囲を見回した。「街道の左右は民家や店舗が並んでいるし、狭い路地も多い。Zが隠れている可能性は高い」

 「だからですよ」ボリスは引き下がらなかった。「ドローンには赤外線探知機能もありますから、隠れているZも一発で発見できます」

 「この炎天下で?」臼井大尉は疑わしそうに言った。「どう考えてもZの体温より気温の方が高いんじゃないのか」

 「うちのセンサーは単純に高い温度をチェックするような非スマートなシロモノじゃないですよ。以前にも説明しましたが、半径400 メートル内の温度差から、Zの分布を推測して分布図を作成する機能を持っているんです。むしろこうゴミゴミした狭い場所でこそ、試してみていただきたいですよ」

 「ふむ」臼井大尉は顎をつまんで考えたが、すぐに頷いた。「じゃやるか。サンキスト、大豆戸の交差点で停まれ。各分隊にも伝えて、それぞれのポイントマンも合流させろ」

 「了解」

 「停めたらドローンの準備だ。ここを中心にサーチ&デストロイモードで......いや、訂正、サーチモードで飛ばせ」

 「どれぐらい先まで飛ばしますか?」

 「操作有効距離は1000 メートルだったか?」

 「カタログスペックは1200 メートルです」サンキストは指揮車両のスピードをゆっくりと落としながら答えた。「稼働時間は飛行モードで約35 分」

 「じゃあ、CCV を中心に半径400 メートルを哨戒させろ。そうだな......3 周したら一度戻せ」

 ぼくはノートPC を覗き込んだ。さっきから第1 分隊のポイントマンであるキトンの視点映像をモニタしていたのだが、封鎖地域に入ったというのに、Zの姿が全く見えなかったので少しばかり拍子抜けしていたところだ。対象をブラウンアイズに切り替え、表示モードをディスプレイに変更した。ブラウンアイズのディスプレイ表示と同期しているはずだ。

 指揮車両が静かに停止した。同時に後ろの方で風船から空気が漏れるようなプシュッという音とともに、すごく小さな風切り音がどこかへ飛び去っていった。

 『フライボーイ1、出ました』サンキストの声が、ヘッドセットから聞こえた。『高度20 メートルで飛ばします』

 後部に座っていた島崎さんは、ボリスと何か小声で会話していたが、タブレットを持ってぼくの方にやってきた。

 「ほら」島崎さんはタブレットを見せてくれた。「これがドローンだよ」

 そこに映っている画像は、中華鍋ぐらいの直径のファンコプターだった。20 センチほどの球体の上下に3 枚ブレードのローターがあり、ガードワイヤーと接地用の脚が3 本ついている。球体の下部にはいくつかの光学機器が装備されていて、これで地上の様子を見るらしい。

 「で、これがリアルタイム中継しているビデオストリーム」

 島崎さんが画面をタッチすると、驚くほど鮮明な空撮映像に切り替わった。自分が熱気球に乗って空中を散歩しながら下を見下ろしているような気分だった。

 「小さいけどカメラは4K なんだ」島崎さんは得意そうに言った。「赤外線や超音波、テラヘルツ波と合わせて広い範囲の映像情報を解析するからね。解析結果は0.6 秒のタイムラグで表示される。ほら」

 さらに画面が切り替わった。黒い背景の上に灰色のグリッドが描かれている。画面下に白抜きの長方形がある。これが指揮車両だろう。その前方に明るいグリーンのアイコンが11 個点在している。

 「これが外にいるバンド隊員ですか」

 「そう。バンド隊員の位置情報は小隊内LAN で取得して、ここに合成しているんだな」

 「このあたりのオレンジのは何ですか?」ぼくは第1 分隊の少し先にいくつか表示されている?マークのアイコンを指した。「形も不規則ですが」

 「Zの可能性ありマークだ。何だろうね」

 島崎さんはその1つをクリックした。一瞬の間をおいて、解析ウィンドウが開いた。

---------------------------------

 温度:44℃

 推定材質:鉄およびアルミニウム

---------------------------------

 「たぶん車か何かの部品だろうね。太陽熱で熱せられて、反応したんだろうな」

 「他にも金属はいっぱい転がってるのに、これだけ反応してるのは、どういう判定ロジックなんですか?」

 「さあ」島崎さんは肩をすくめた。「そこまでは知らないな」

 そのとき、画面右上に真っ赤なアラートが浮かび上がり、せわしく点滅を開始した。

 「お」島崎さんが顔をあげた。「来たかな」

 「というと?」

 「Zだよ」

 島崎さんは画面の1 点を指した。赤いZのアイコンが光っている。同時に臼井大尉が口を開いた。

 「ビーン、見えているか?」

 1 秒ほど遅れて、谷少尉の応答が聞こえた。

 『いえ。ディスプレイには出てますが、目視はできません』

 「おかしいな」臼井大尉は自分のタブレットを見直した。「そっちのポイントマンの2 時方向、20 メートルぐらいだぞ」

 『キトン。見えるか?』

 『いえ、見えません』

 「待てよ」臼井大尉はちらりとこちらを見た。「映像だと確かに何もないな。赤外線では反応してるんだが」

 『望遠でも見えません』キトンが報告した。『ディスプレイには確かにZサインが出てますが......いや、消え......あ、また出ました』

 「バグか?」

 臼井大尉のつぶやきに、ボリスが反応した。近くのキーボードに飛びつくと、片手でキーをいくつか叩いた。

 「空からは見えないんじゃないですか?」ボリスはなおもキーを叩きながら言った。「何かの遮蔽物の下にいるとか」

 「遮蔽物ってたとえば?」

 「可視光線は通さないけど、赤外線は通すもの......布とか紙とか木の板とか......」

 その言葉を聞いた島崎さんは、タブレットをビデオストリームに切り替えると、さっきZアイコンが浮かんでいたあたりでピンチアウトした。地表の映像がぐっと拡大される。くすんだブルーの何かが見えた。

 「ブルーシートですか?」

 「そうだね」

 すぐ近くに建築途中のまま放置された3階建て程度のマンションがある。風雨にさらされた鉄骨が悲しげだ。建築資材が片隅にまとめられているようで、似たようなブルーシートがいくつもあった。

 「位置的にはあの下みたいなんだけど」島崎さんは眉を寄せた。「どうも判定がはっきりしないなあ」

 画面上のZサインは、鮮やかな赤から、オレンジ色、そして黄色へと1 秒間隔で変化していた。どうやら情報を確定するのに手間取っているようだ。

 臼井大尉はボリスを睨むように見たが、ピックアップに発した声は不信感をうまく隠していた。

 「ビーン。2 時方向のブルーシートが見えるか?」

 『はい。目視できます』

 「持ち上げてみろ」臼井大尉は命じた。「その下にZがいるかもしれん」

 『わかりました』

 ぼくは自分のノートPC に視線を戻した。ブラウンアイズのディスプレイモードになったままだ。島崎さんに渡された薄っぺらいマニュアルによると、バンド隊員たちのヘッドセットサブシステムには、広角のカメラが複数装備されていて、その映像はリアルタイムで指揮車両のサーバに保存される。それをモニタする機能があるはずだ。いくつかのメニューを開いたり閉じたりした後、ぼくはそれを見つけて切り替えた。

 モニタに4:3の映像が映し出された。FPS ゲームのように、ブラウンアイズが構えているUTS-15J の銃口が画面下から突き出されている。その銃口が向けられているのは、例のブルーシートだ。ブルーシートの中央は少し盛り上がっているようだが、太陽光の反射もあって、細部ははっきり確認できない。

 ブラウンアイズの視点が小刻みに左右に向けられた。表示によると右隣に巨体のヘッジホッグ、左にスクレイパーがいる。第1 分隊は谷少尉も含めて6 名だが、サンキストが指揮車両のドライバーで抜けているし、キトンはポイントマンとして先行しているので、臼井大尉の命令はこの3名で実行することになるのだ。

 3 名のバンド隊員は、ブルーシートのやや手前で停まった。ヘッジホッグとスクレイパーが2 メートルほど距離を取る。ブラウンアイズは両側の仲間に小さく頷くと、足元に落ちていた太い鉄パイプを拾い上げ、先端でブルーシートを軽くつついた。

 反応なし。

 ブラウンアイズはもう一度つついたが、やはり反応はなかった。それを見た谷少尉が命令した。

 『ブラウンアイズ、めくってみろ。慎重にな』

 ブラウンアイズは鉄パイプをそっと地面に置くと、身をかがめたままシートの端をつかみ、一気にめくり上げた。

 『慎重にやれと言っただろう』谷少尉が呻いた。

 『Zじゃないですね』ブラウンアイズの声が聞こえた。『生物ですらないです』

 そこにあったのは、不法投棄されたらしいゴミだった。壊れたインクジェットプリンタと液晶モニタ、数十冊の雑誌とその付録だったらしいDVD の山、数本のペットボトル、プリンか何かの空容器、破れたゴミ袋に入った大量のビールの空き缶、などなど。それが映し出された途端、点滅していたZサインは消えた。

 「違いましたね」ぼくはいつの間にか止めていた呼吸を再開した。

 「何かの条件でZだと判断しちゃったのかな」

 島崎さんが答えたとき、キトンの声が聞こえた。

 『10 時方向にZ』落ち着いた声だった。『4 体から5 体。距離30 メートル』

 『全員、静止』間髪を入れず谷少尉が命じた。

 ぼくは反射的にキトンのカメラに切り替えた。後ろから覗いていた島崎さんが息を呑む音が聞こえる。

 キトンが見ている方向から、数体のZがふらふらと歩いて来ていた。いずれも成人男性のZで、着ているのはボロボロになった服だ。どんよりと白濁した目をうつろに開き、半開きになった口からはうなり声が洩れている。

 「さっき管理事務所の人が言っていた小さい群れですかね」

 ぼくは声を潜めたが、島崎さんは苦笑して普通の声で答えた。

 「このCCV は防音になっているから、大声じゃなければ、普通に話して大丈夫だよ」

 「至れり尽くせりですね」ぼくも無理に声のボリュームを下げるのをやめた。「なんであの群れは事前に探知できなかったんでしょう?」

 「今もできてないね」

 確かにどちらのモニタにも、Zサインは出ていない。同じ疑問を抱いたらしい臼井大尉が、険しい顔でボリスを振り向いた。

 「どうしてあの群れが探知できていない?」臼井大尉はタブレットを振り回した。「ドローンからの映像には、こんなにはっきり映ってるじゃないか」

 「きっと解析ロジックのどこかにバグがあると思われます」

 「思われます?つまりはっきりしたことはわからん、ということだな」

 「いえ、きっと些細なバグですので......」

 「些細だとは思えんな。Zの事前探知ができなきゃ、ソリストなぞ何の役に立つんだ?おたくの会社は、通信機能を作り直して、ビデオ機能の解像度を上げただけで、数千万円の請求書を切るつもりか?」

 「大丈夫です」ボリスの顔色は変わっていなかった。「すぐ直します。いえ、直させますから」

 直させます?何となく嫌な予感が心をよぎったとき、ボリスがまっすぐぼくの方を見た。

 「出番だよ、あんた」

 「は?」

 「こういうときのためにいるんだろ」ボリスはぼくに近づくと、囁くように言った。「原因調べて修正してくれよ。すぐにな」

 「修正って」ぼくは相手の顔をまじまじと見つめた。「ソースもないのにどうやって?」

 「胡桃沢さん」ボリスは、黙って成り行きを眺めていた胡桃沢さんに向き直った。「こいつに必要なものをやってください」

 胡桃沢さんは無言で立ち上がると、島崎さんに合図して場所を変わった。

 「貸せ」

 「え、あ、はい」

 ぼくがノートPC を渡すと、胡桃沢さんはキーをいくつか叩いて、何かのアプリを起動した。ウィンドウのタイトルには、Download Manager の文字。ウィンドウ内には、jp.go.jspkf.soliste. で始まるパッケージがチェックボックスと共にずらりと並んでいた。

 「これ、ソリストのソースですか?」

 胡桃沢さんはぼくの質問など無視して、いくつかのパッケージにチェックを付けると、[ download ] ボタンを押した。プログレスバーが一瞬表示されたが、すぐに done. のサインに変わった。

 「必要と思われる部分のソースをダウンロードした。調べて修正しろ」胡桃沢さんはぶっきらぼうに言うと立ち上がったが、何かを思い出したように続けた。「君、外部記憶装置は持ってないだろうな。USB とかスマホとか」

 「持っていません」

 ぼくはそう答えたが、ブラウンアイズに預けたスマートフォンはどうなったのかが気になった。小清水大佐は、ぼくに宣言した通り、指揮車両に乗り込む前に持ち物検査をやらせたのだ。ぼくはもちろんだったが、バンド隊員たちも例外ではなく、ウィスキーのフラスコを隠し持っていたサンキストや、何かの同人誌を持って行こうとしたレインバードが叱責されていた。それらが没収されたのは言うまでもない。小清水大佐の摘発の目的は、USB メモリやスマートフォンの類いだったようだが、どうやら風紀委員的な細かさでチェックしたらしい。あれではブラウンアイズが、ぼくのスマートフォンを持ち出すのは不可能に近かっただろう。

 「じゃあ早くやれ」

 胡桃沢さんは感心するぐらい素っ気なく言うと、さっさと自分の席に戻っていってしまった。ぼくは島崎さんと顔を見合わせ、たがいに苦笑した。

 「初めて見るソースを解析して」ぼくは小声で――近くにいるZとは別の懸念から――島崎さんに言った。「不具合の原因を調査するなんて、すぐにはできませんよ」

 「わかってるよ」島崎さんも囁いた。「形だけでいいからやってみてよ」

 形だけデバッグするふりをしたって解決にはならないと思うんだけどなあ。そう思いながら、ぼくはEclipse を起動した。

 そのとき、これまで存在を忘れていた人権監視委員会の朝松氏が立ち上がると、臼井大尉に詰め寄った。

 「大尉」

 「何でしょう?」

 「あのZにどう対処するんだね」

 「やり過ごします」臼井大尉は簡潔に答えた。「こっちに気付いてはいないようだし、まだマーカーをテストするには早いですから」

 するとボリスが会話に加わった。

 「できればマーカーもテストしませんか。問題が判明するなら早い方がいい。みなとみらいに到着してから、マーカーがうまく動きませんでした、というのは困りますからね」

 「私も同意見だね」小清水大佐も口を挟んだ。「テストしてみてはどうかね」

 「それは命令でしょうか?」

 丁寧な口調だったが、断固とした意志がこめられていた。小清水大佐はたちまち及び腰になった。

 「いや、提案だ。もちろん。作戦群の指揮官は大尉だからな。大尉の判断に任せるとも」

 「ありがとうございます」臼井大尉は慇懃に一礼すると、ボリスに向き直った。「まず1 つずつ解決しようじゃないか。問題を未解決のまま、別の問題が発生するような事態は好ましくない」

 ボリスは引き下がった。ただし、自席に戻るとき、ぼくに囁くのは忘れなかった。

 「聞いたな。急いで原因を突き止めろよ」

 こういう光景を、まだ世界が平和だった頃、よく見た気がする。不具合を責められた元請けが腹いせに下請けをこき使う、の図だ。怒るよりもむしろ、既知の社会が復元していく証のように感じられ、ぼくは内心ニヤリとしながら、ソースを追い始めた。

(続)

Comment(12)

コメント

dai

> 秩序を保ちながら潰走

はじめて見る単語なので、指摘ではなく確認ですが、辞書を見ると矛盾した表現のようですが?

>航続距離は・・・
>カタログスペックは1200 メートル
>半径400 メートルを哨戒させろ。そうだな……3 周

計算が合わないような?

通りすがり

プログラマじゃないのでわからないのですが
かなり大規模(と推測される)システムで
しかも不具合だらけ
それをソースコード初見のエンジニアが不具合修正ってできるものなんですか?

daiさん、どうも。
潰走は「秩序をなくして」と説明しているサイトもありますが、「敗走」ぐらいの意味で使ってます。

航続距離、は確かにちょっとおかしいですね。
無線で操作できる有効な距離、という意味に変えました。
自立飛行ではなく、オペレータがリアルタイムに操作できる距離です。

noname

>プログラマじゃないのでわからないのですが
>かなり大規模(と推測される)システムで
>しかも不具合だらけ
>それをソースコード初見のエンジニアが不具合修正ってできるものなんですか?
それも本来はソフトの「質」といわれるものであって
この場合、無理でしょうねすぐ見つけるのは。
すぐ見つかるようないいソースだったら致命的なバグなんて大概はありません

fuga

> 先に先行

重複。

> それをソースコード初見のエンジニアが不具合修正ってできるものなんですか?

無理。
僕でも無理。

fugaさん、ご指摘ありがとうございます。
重複ですね。

なん

エンジニアでないからよくわからなんだけれど
プログラムの修正ってソースコードだけじゃなくて、ドキュメントをみないとわからないものなんじゃないの?
この変数は、こういう値を入れてるよとか
そういうのはソースコードには書かないのが普通だって聞いたことある

カズ

なんさん
それ、全然、普通じゃないです。
ドキュメントがないと修正できませんなんて
レベルの低いプログラマーです。

つきすみ

なんさん
何が問題で、どうなれば正常動作と言えるか。

それがプログラムレベルで語れる話であれば、直せることも多いです。
(ドキュメントがあっても直せないバグもあるので必ずとは言いません)

ただ、何かの専門的な判断をプログラムに代行させる場合は
修正にドキュメント(または仕様的な正解を知っている人間)が
必須になる場合もあります。

人間とZをどうやって区別するのか、
極端な例なら、動かないだけのZと死んでるZは
どのセンサーの何のパラメータで判断するつもりなのかなんて、
バグってるプログラムを何時間眺めたって分かるわけがないですし。

技術があるのにドキュメントをくれと言うのが
一概に理不尽な要求とは限りません。

ざわ

システムが期待通りに動かない現象を、何でもかんでも「バグ」と呼称されてしまうという、良くある悲しい出来事ですね。
※仕様バグとか使用者バグって用語も有るみたいですが。

ミケ

【潰走】[名](スル)戦いに惨敗して、秩序なく、逃げること。敗走。「算を乱して―する」
【敗走】[名](スル)戦いに敗れて逃げ走ること。「―して国境外へ逃れる」

市民たちはZと戦っていたわけではないから、潰走だろうが敗走だろうがおかしいと思いますが、いかがでしょうか。

あ、いや、実際は市民たちはZと戦った上で潰走(敗走)したんですかね?
それならそれで、わかるように書いて欲しい気がしました。

村上

イメージ的には「潰走」って感じかな。
「ヨコハマ撤退」だしね。
詳細が描写される予定はあるのかな。

コメントを投稿する