番外編「遼、空の狩人になる。」
この話は番外編です。
本編の遼は「静かに機械をいじっていたい」だけの人間で、無双とか活躍とか、そういうものにまったく興味がありません。
ただ、作ったものが動いているだけです。
その結果として、たまにすごいことが起きます。
本人は気にしていません。
そういう話です。
どうぞ。
朝の六時五十分。
柊凛は冷蔵庫を開けた。
牛乳が少ない。卵が三個。昨日買ったはずのトマトがない。
「遼、トマト食べた?」
廊下に向かって言った。
「食べてない」
部屋の奥から声が返ってきた。
「じゃあどこ行ったの」
足音がした。遼が廊下に出てきた。寝起きではなく、もう着替えている。
「華が昨日サラダに入れた」
凛はため息をついた。
「……今日どこ行くの、朝から」
「荒川」
「荒川?」
「ドローンのテスト」
「ふーん」
凛は冷蔵庫を閉めた。トマトの件は諦めた。
「何時に帰る」
「昼には帰る。多分」
「多分、やめて」
「昼には帰る」
「それでいい」
柊華がリビングに出てきた。寝癖がひどい。
「おはよ。何の話してたの」
「トマトの話」
「あ、昨日食べた。ごめんねお姉ちゃん」
「謝るなら次から補充して」
「はーい」
華は玄関のケースを見た。
「それドローン?」
「そう」
「でっかいね」
「コンパクトにしたんだけど」
「何が」
「全部」
華は意味が分からなかったが、遼に意味を聞くと長くなることを知っていたので聞かなかった。
遼は朝食を食べ始めた。ご飯と味噌汁。早い。
十分後には靴を履いて、玄関に置いてあった黒いケースを背負っていた。
「行ってきます」
「気をつけてね」
凛が言った。
「申請は出してあるので大丈夫です」
「申請って何の申請よ」
ドアが閉まった。
凛は華を見た。
「遼ってよく分からないよね」
「うん、よく分からない」
二人はほぼ同時に言って、朝食に戻った。
朝の七時十五分。
柊遼は自転車のペダルを踏んでいた。
荒川の土手道。川風が正面からくる。向かい風だ。遼は少しだけギアを上げた。
背中に黒いケースを背負っている。縦五十センチ、横三十五センチ、厚さ十五センチ。形状としてはスーツケースの半分くらいで、素材がカーボンファイバーとポリカーボネートの複合材だ。自作だ。全体的に角が丸く、表面が光をあまり反射しない処理になっている。
遼がなぜその仕上げにしたかというと、直射日光でコントローラーの基板が熱を持つのを防ぎたかったからで、それ以外の理由は特にない。
土手の上から荒川の河川敷を見下ろした。
グラウンドが広い。平日の午前中、人はほとんどいない。犬を連れた高齢の男性が一人、堤防沿いをゆっくり歩いている。遠くに首都高の橋脚が見えた。
遼は自転車を止め、土手の斜面を下りた。
ケースをおろした。
中から機体を取り出した。
形を説明しておく。
ベースは産業用クアッドコプターの機体だが、フレームは遼が再設計している。市販の産業機は汎用性を優先するから、どうしても整備しやすい形になっている。遼はそれを嫌って、空力特性を優先したデザインに変えた。結果として翼型断面に近い形状になり、プロペラガードが機体と一体化した流線型になった。モータアームが内側に折り畳まれる構造で、展開すると全幅が倍近くになる。
全幅は折り畳み時で三十二センチ、展開時で五十八センチ。重量は搭載物込みで二千三百グラム。
搭載物を順番に書く。
前方に広角カメラ、下面に気圧計・光学フローセンサー・超音波センサーの複合モジュール。気圧計で高度を、光学フローで水平位置を、超音波で直下の障害物を検知する三重構成だ。これで屋外・屋内を問わず安定したホバリングができる。
側面から展開するアームが二本。その先端についているのが、遼が別のプロジェクトで開発中のロボットハンドだ。三指構成、把持力は調整可能で、現在は最大六百グラムまで持てる。電動アクチュエータと力覚センサーを組み合わせた制御で、掴み損なったときに自動で把持力を調整する機能もある。まだ開発途中なので、ときどき変な動きをする。
そしてもう一つ。今回のフィールドテストの本題がこれだ。
外部ドローン制御介入モジュール、通称「割り込み機能」。
これはTechVisionから依頼が来て実装したものだ。三週間前のことだ。メールはロバートから来た。一行目に「これ、できる?」とあり、二行目に仕様の概略が書いてあった。遼は読んで、「できますよ」と三分後に返信した。仕様書が来て、実装して、今日はそのフィールドテストだ。
原理としては単純だ。対象ドローンが使用している周波数帯とプロトコルを受動的に解析し、制御信号のパターンを特定する。その後、オリジナルの送信機よりも強い信号で同一プロトコルの制御コマンドを送信することで、受信機が遼のプロポを「正規の送信機」として認識するよう誘導する。
この方法は、ドローンの制御系が「より強い信号を持つ送信機を優先する」という基本的な動作原理を利用している。特定の送受信機間をペアリングするバインド機能が実装されていない汎用機であれば、ほぼ確実に機能する。
加えて、自律飛行プログラムも今回のテストに向けて改良した。追加した機能は一つで、自分の機体の制御と介入した外部機体の制御を同時に行えるようにした。操縦者がスティックから手を離した状態でも、両機体を指定座標に誘導できる。
遼はプロポの電源を入れた。
縦二十センチの液晶モニターに映像が出た。カメラが起動している。空が映っている。
プロポについて少し書いておく。
市販のドローン用プロポは、左右二本のスティックで機体を操作する。日本ではモード1が主流で、右スティックの上下がスロットル(高度)、左右がエルロン(左右移動)。左スティックの上下がエレベーター(前後移動)、左右がラダー(水平回転)だ。アメリカ式のモード2はスロットルとエレベーターの配置が逆になる。各スティックはプロポーショナル式で、倒した量に比例して制御量が変化する。これがプロポーショナルコントローラー、略してプロポの名前の由来だ。
遼が使っているプロポは自作で、スティックはモード1準拠だが、そこにいくつか機能を追加してある。右側の液晶モニター。左側の数字キー。介入モード用のトグルスイッチ。自律飛行への引き渡しボタン。通信強度のリアルタイム表示。
送信機出力は通常250mWで、使用帯域は2.4GHz。アマチュア無線の資格を去年の秋に取っている。田中教授に「どうせ論文で使う機材の周波数が2.4GHz帯域に収まらなくなるぞ」と言われて受けた。落ちる気がしなかったし、実際落ちなかった。資格があれば試験目的の運用では出力を上げる選択肢も出てくる。
複数のプロポが同じ周波数帯を使用していると、電波が入り乱れて制御が乱れる混信という問題が起きる。特定の送受信機間だけをペアリングするバインド機能はその対策だが、バインドされていない汎用機では混信に弱い。今日の割り込み機能は、ある意味でその混信の原理を応用したものでもある。
飛行申請は先週済ませてある。
国土交通省のドローン飛行申請システムを使って、荒川河川敷の当該エリアを申請した。DID(人口集中地区)外の飛行で、機体重量が申請範囲内。第三者上空飛行なし。今日の天気と最大風速を前日に確認した。風速三メートル、曇り時々晴れ。問題ない。
遼はテスト用の小型市販機を別で起動した。グラウンドから二十メートル離れた場所でホバリングさせる。安価なトイドローンだ。バインド機能なし。汎用プロトコル。介入しやすい標的だ。
解析モードを起動した。
テスト機の送信信号をスキャンし始める。2.4GHz帯域内を一定周期でホッピングしているFHSS(周波数ホッピングスペクトラム拡散)方式の信号が出た。ホッピングパターンは周期性を持っている。解析開始から三秒でパターンを特定した。
介入モードに切り替えた。
テスト機がわずかに揺れた。
遼のプロポから操作できるようになっていた。スティックで左右に動かした。動いた。前後にも動いた。
「……問題ない」
独り言を言った。記録を取った。
テスト機を自律飛行に引き渡し、指定座標に移動させた。機体はグラウンドの端まで静かに動いて、待機した。
次のテストに入ろうとした。
そのとき、スマートフォンが鳴った。
知らない番号だった。
遼は一秒考えた。出た。
「柊遼さんですか」
男の声。落ち着いているが、話のテンポが速い。
「そうです」
「内閣官房の特別連絡調整室です。TechVisionの担当者を通じて番号を確認しました」
遼は機体を自律ホバリングに切り替えた。
「何ですか」
「都内で問題が発生しています。要人を護送中の車列の上空を、無許可のドローンが追尾しています」
「それは警察の案件では」
「通常であればそうです。ただし、既存の対ドローン機材では対応できていません。機体の動作が特殊で、妨害信号に対して自動で周波数を変えている可能性があります」
遼はすこし待った。
「TechVisionから、あなたが今日荒川でテストをしていると聞きました。現場まで来ていただけますか」
「場所は」
男が住所を言った。永田町付近だ。荒川からなら自転車で三十分弱。
「爆発物の可能性は」
「機体の形状から今のところ小型カメラを積んでいる可能性が高い、という判断です。ただ断定はできていません」
「分かりました。行きます」
「車を向かわせます。今すぐ出せます」
「自転車で——」
「要人案件です」
遼は少し間を置いた。
「……分かりました」
電話が切れた。
機体をケースに収め、背負った。
二分後、堤防の下の道に白いセダンが止まった。ナンバープレートが一般車と同じだが、助手席の男がスーツにイヤホンをしていた。
「柊さんですか」
「そうです」
「乗ってください」
遼はケースを抱えて後部座席に乗った。
走り出してすぐ、フロントガラスの内側に赤いランプが点いた。サイレンが鳴った。覆面パトカーだ。車が加速した。
遼は窓の外を見た。
周囲の車が端に寄っていく。
面倒だな、と思ったが声には出さなかった。
走りながら状況を整理した。
要人護送中の車列にドローンが張り付いている。妨害信号に自動対応している可能性がある。つまり自律性が高い機体か、オペレーターが手動で対処しているかのどちらかだ。
自律応答だとすると、対策が変わる。周波数妨害に対して自動で別周波数に逃げる機能を持っているなら、介入時にホッピングパターンを追いきれないケースがある。単純なFHSSではなく、妨害検知ロジックを持つアダプティブ周波数ホッピングかもしれない。
問題は、向こうの機体のプロトコルを事前に知れないことだ。
現地に着いてから解析するしかない。
七分後、車が止まった。
一方、永田町の一角。
幹線道路から一本入った通り。黒塗りの車列が速度を落として走っていた。センチュリーが一台、護衛用のランドクルーザーが前後に計三台。
問題の機体が車列の上空、高度十二メートルをピタリと追っていた。
白いボディ。プロペラガードがついた四軸機。サイズはおよそ四十センチ四方。外観は市販の業務用ドローンに見えるが、挙動が通常とは違う。車体の速度変化に対して即座に反応している。停車すると機体も止まる。発進すると追う。車列が左折すれば機体が内側から先回りする。
護衛の一人が車外に出て、上を見た。
機体がすっと横に動いた。護衛の頭上に来た。どかない。
もう一人が出て追い払おうとした。機体が上に逃げた。護衛が戻ると、また下りてきた。
護衛が無線で報告した。「対象機、接近に反応しています。意図的な動作と思われます」
電波妨害車両が現場に来ていた。2.4GHz帯への広帯域ジャミングを試みた。
効果がなかった。
機体は揺れもせず、同じ高度と位置を維持している。
「ジャミング、効いていません」
連絡を受けた担当者が苦い顔をした。専門の機材があっても、向こうが自動で逃げるならこちらに手がない。
連絡室の担当者が護衛に向かって無線で言った。
「民間協力者が向かっています。もうすぐ到着します」
「どんな人間ですか」
「TechVisionの協力者です。車で向かっています」
「了解しました」
遼が現場付近に着いたのは七分後だった。
車を降り、ケースを背負った。
連絡室の担当者に電話した。
「着きました。機体の位置を教えてください」
「北側から百メートル先、交差点手前の通りです。車列が一時停止しています」
「見えます」
遼は歩きながら状況を確認した。車列が止まっている。護衛が数人、外に出ている。上空に白い機体が浮いている。
距離は八十メートルほど。
遼は路地の脇に場所を取った。ケースを開ける。機体を展開する。バッテリーを接続する。プロポを起動する。
護衛の一人が近づいてきた。
「あなたが……柊さんですか」
「そうです」
「……その機体で、何をするんですか」
「制御を奪います」
「……具体的には」
「あのドローンを飛ばしているオペレーターから、操作権限をこちらに移します。その後、安全な場所に降ろします」
護衛は遼の機体を見た。コンパクトなケースから出てきた展開途中の機体。カーボンの機体フレーム、側面のアーム、下面のセンサーアレイ。プロペラガードが機体と一体になっている流線型。全体的に角がない。どこから見ても市販品ではない。
護衛は何か思ったが、言わなかった。
「……その機体、どこで買えますか」
「どこにも売っていません」
「手に入れるには」
「作るしかないです」
「…………」
「邪魔しないでいてもらえますか、作業するので」
「分かりました」
護衛は一歩引いた。
機体を起動した。
プロポのモニターに映像が出た。路地の上空から車列が見える。問題の白い機体が映った。
遼はまず解析モードを動かした。
2.4GHz帯のフルスキャン。
一秒。二秒。三秒。
信号が出た。
ここで遼は少し止まった。
ホッピングパターンが、先ほどのテスト機のものとまったく違う。
通常のFHSSドローンは数十チャネル間を一定周期でホッピングする。このパターンは乱数的に見えるが、実際には送受信機間で共有された疑似乱数シードに基づいている。だからパターンを解析すれば次のホップ先を予測できる。
しかしこの機体は違った。
ホッピング周期が三十二ミリ秒。通常の業務用ドローンの約三倍の速さだ。一秒間に三十チャネル以上を移動している計算になる。
しかもパターンの繰り返し周期が長い。標準的なFHSSは数秒周期でシーケンスが一巡するが、この機体のパターンはそれより遙かに長い。
ということは、疑似乱数シードの空間が大きい。パターン予測に時間がかかる。
標準プロトコルではない。カスタムだ。
遼は少し考えた。
電波妨害で効果がなかった理由が分かった。広帯域ジャミングに対して、機体側が自動で使用チャネルを妨害されていない帯域にシフトしている。妨害信号の占有帯域を検知して、その外側に逃げる。単純な妨害車両では追いきれない。
ただし、それは「妨害」に対する対策だ。
「介入」は別の話だ。
妨害は信号を潰す。介入は信号に乗る。
アプローチを変えた。
まず帯域内の全チャネルに対して、ターゲット機のプロトコルに準じたNOP(無効命令)コマンドを低出力で投げ続ける。ターゲット機がどのチャネルに来ても、そこに遼の信号がある状態にする。「先行配置」だ。
ターゲット機の受信系がそのNOPを受け取り始めたとき、制御系が「既知の送信機からの信号」と解釈し始める。制御系のハンドシェイク機構を騙す格好になる。
そこで介入する。
時間がかかるが、確実だ。
「面倒だな」と遼は思ったが、声には出さなかった。
作業を始めた。
そのころ、現場から三キロほど離れたビルの屋上に、一人の男がいた。
ラップトップを前に、モニターを見ている。
モニターには車列の映像が映っていた。ターゲット機のカメラからのリアルタイム映像だ。
男は三十代、スキンヘッド、首に刺青がある。
彼はドローンの操縦に自信があった。軍事用途に近いカスタム機で、通常の妨害では対処できない仕様にしてある。依頼人から「このスペックなら警察も対処できない」と聞いていた。
実際、広帯域ジャミングを受けても機体はびくともしなかった。仕事は順調だった。
しかし十分ほど前から、何かがおかしかった。
機体の挙動が、ごくわずかだが安定しない瞬間がある。スティック操作に対する反応が、一瞬だけ遅れる。
誤作動か、と最初は思った。
違う、と気づいたのは五分後だ。
誰かが介入しようとしている。
男は状況を把握した。広帯域ジャミングとは違う。特定のプロトコルに乗ろうとしている信号が来ている。
依頼人の言っていた「警察も対処できない」は本当だったかもしれないが、別のものが来ている。
男は送信出力を上げた。500mW。正規オペレーターとして制御を維持するために、信号強度で優位に立とうとした。
四十秒が経った。
遼のスキャナーに変化が出た。
ターゲット機がNOP信号を受け取り始めている。受信ログに、遼の機体からの信号が記録されている。
プロトコルが特殊だということは、おそらくカスタムのフライトコントローラーを積んでいる。そうなると、標準的な制御コマンドセットが通じない可能性がある。
遼はターゲット機の挙動を観察した。
車列の動きに合わせて高度と位置を自動調整している。GPSとビジョン系を組み合わせていると思われる。護衛が近づいたとき、横に逃げる動作をした。これは障害物回避ではなく、特定の動体を追いながら一定距離を保つ追尾ロジックだ。
ということは、車体を認識している。自律追尾プログラムが入っている。
つまり、制御を奪っても、機体の自律ロジックが抵抗する可能性がある。外からの制御コマンドとオンボードの自律ロジックが衝突したとき、どちらが優先されるかは機体の実装次第だ。
やってみるしかない。
NOPから制御コマンドに切り替えた。
まずスロットルコマンドだけを送った。高度を一メートル上げる命令だ。
ターゲット機が反応した。一メートル上昇した。
遼は記録した。「外部制御コマンドが自律ロジックより優先されている」。
次に前進コマンドを送った。
機体が前に動いた。車列から少し離れた。
自律追尾ロジックがすぐに修正しようとした。機体がわずかに揺れた。
遼と機体のオンボードコンピュータの引っ張り合いになった。
遼はスティックを保持した。コマンドを送り続けた。機体が揺れながら前進し続けた。
十五秒後、揺れが止まった。機体が安定した。遼の制御に従っている。自律追尾ロジックが、外部コマンドを「正規の操縦者からの命令」として受け入れた。
「制御取れました」
遼は護衛に声で報告した。
護衛が無線に向かった。「民間協力者が対象機の制御を取ったと言っています」
連絡室から返ってきた。「確認しました。広場の座標を今から送ります」
遼のスマートフォンに座標が届いた。北東方向に四百メートル、公園の広場だ。
遼はプロポを操作した。ターゲット機をゆっくり車列から引き離し始めながら、もう一つの作業を並行させた。
向こうのオペレーターがこちらに対抗して出力を上げてきている。強い信号が来ている。ということは、発信源が近い。
遼はスキャナーのモードを切り替えた。介入と同時に、向こうの送信機の発信方向を解析し始めた。
2.4GHz帯の高速ホッピング信号でも、複数の受信アンテナ間の到達時間差(TDOA)を計算すれば方向は絞れる。遼の機体には受信アンテナが三系統ある。設計上の目的はノイズ耐性だったが、今回は別の使い方になった。
三十秒で方角が出た。
さらに信号強度の変化から距離を推定した。
北西、直線距離でおよそ三キロ。高層建築物の上部からの発信と思われる。
遼は担当者に電話した。機体の操作は片手で続けたまま。
「オペレーターの発信源が絞れました。北西三キロ付近、高い建物の上です。座標を送ります」
電話の向こうで一瞬、沈黙があった。
「……今、機体の操作もしながらですか」
「そうです」
また沈黙。
「座標、受け取りました。確認します」
電話を切った。
屋上の男が気づいた。
機体が自分の意思に反して動いている。スティックを押しても、前に戻ってこない。
誰かに奪われた。
男は送信出力をさらに上げた。
信号が来た。強い。500mWを超えている。ターゲット機が揺れた。
遼は出力を上げた。自分のプロポの送信出力を最大値の500mWに設定した。
同じ出力でぶつかり合った。
機体がまた揺れた。
向こうのオペレーターが今度は周波数を変えた。遼の介入チャネルから逃げようとしている。
遼はスキャンを継続したまま介入コマンドを送り続けた。ホッピング先を予測している。向こうが変える。遼が追う。向こうが変える。遼が追う。三十二ミリ秒ごとのホッピング。ずっと追い続けている。
護衛が隣で見ていた。
遼の手元を見た。スティックの動きは小さい。表情が変わらない。ほとんど何もしていないように見える。
しかし上空のターゲット機は、車列から確実に遠ざかっていた。
五十メートル。百メートル。
屋上の男は焦り始めていた。
出力合戦では勝てない、と判断した。同じ出力ならば後から介入しているこちらが不利だ。向こうは既に機体との「関係」を確立している。
別の方法を試した。
スロットル出力を最大にした。機体を急上昇させようとした。
高度を上げれば、地上の送信機からの信号が弱まる。距離が開けば電波強度は距離の二乗に反比例して落ちる。高度百メートルまで上げれば、介入信号が届かなくなるかもしれない。
あるいは、このまま車列の上で墜落させる。それでも目的は達する。
ただしその選択肢は最後にしたかった。
遼は気づいた。
急上昇しようとしている。
機体を遠ざけたいか、あるいは墜落させる腹積もりか。どちらにしても、今すぐ止める必要がある。
スロットルダウンコマンドを出した。機体が上昇しようとする力と、遼の降下命令がぶつかり合った。機体が十五メートルまで上昇した。揺れた。
遼はスロットルコマンドをパルス状に送った。単一の持続コマンドではなく、短いコマンドを高速で繰り返すことで、オンボードのスロットル制御に対して優先的に割り込む。インターラプト的な処理だ。
機体の上昇が止まった。十七メートルで止まった。
向こうが出力をさらに上げた。今度は1Wに近い。
遼は冷静に計算した。
出力合戦では長くは続けられない。電池が先にへたる。向こうの機体のバッテリー残量が分からないが、こちらの機体は出発前にフル充電してある。
それより、別の手が早い。
コマンドの種類を変えた。スロットル争いをやめた。
代わりに、ターゲット機のフライトモードを切り替えるコマンドを送った。
多くの業務用ドローンは複数のフライトモードを持つ。GPSホールドモード、アルティチュードホールドモード、マニュアルモードなど。モード切り替えコマンドは、スロットルや舵角コマンドとは異なる制御系を経由する場合がある。フライトコントローラーのレジスタを直接書き換える格好になる。
遼はターゲット機のモードをアルティチュードホールドに変えるコマンドを送った。
GPSによる位置ホールドが切れた。
機体が風に流されやすい状態になった。同時に自律追尾ロジックが切れた。機体がわずかに漂い始めた。
屋上の男は画面を見た。
機体の挙動が変わった。位置補正がかかっていない。GPSホールドが切れている。
どうやった、と思った。
モード切り替えコマンドは送受信機間の暗号化コマンドのはずだ。外部から送れるものじゃない。
しかし現実として、切れている。
男はスティックを動かした。アルティチュードホールドモードで機体を手動で安定させようとした。風が出ている。屋外での手動安定は難しい。
プロのドローンオペレーターでも、位置補正なしで完璧なホバリングをするには相当な技量が要る。機体が少し流れる。修正する。また流れる。
その間に、操作が雑になった。
機体が揺れた。
そのすきに、全コマンドが変わった。
機体が北東方向に動き始めた。
止まらない。
男は全力でスティックを動かした。
機体は止まらなかった。
遼はモード切り替えのすきに全コマンドを送り直した。高度固定、北東方向への前進、速度制限。機体が動いた。
向こうからの介入がなかった。
機体は公園に向かって飛んでいく。
百メートル。二百メートル。三百メートル。
向こうが最後の抵抗をした。
出力が急に上がった。周波数も変えてきた。
遼は出力を上げなかった。
代わりに、自律飛行プログラムに切り替えた。
遼のプロポからの制御ではなく、ターゲット機のオンボードコンピュータに座標を直接書き込む方法だ。
これはプロトコル解析の途中で見つけた。多くの業務用ドローンには、飛行計画をアップロードするためのコマンドセットが実装されている。地上局ソフトウェアから目的地座標を送信し、機体が自律で飛行するためのものだ。今回のカスタム機にも同様のコマンドが実装されていた。
目的地を公園の広場に設定した。
コマンドを送った。
ターゲット機が自分で公園に向かって飛び始めた。
向こうの信号がどれだけ強くても、機体が自律飛行モードに入っている以上、外部からのスロットル・舵角コマンドは無視される。ウェイポイントナビゲーションモードでは外部コマンドの優先度が下がる仕様だ。
向こうのオペレーターには、もう何もできない。
「……終わりですね」
遼は独り言を言った。
機体は公園の広場に向かって真っすぐ飛んでいく。ターゲット機はゆっくり降下し、芝生の上に着地した。プロペラが止まった。
屋上の男はラップトップを閉じた。
機体を奪われた。もうここにいる意味はない。
撤収しようとした。
ビルの屋上ドアに手をかけたとき、下の階から足音が上がってくるのが聞こえた。
複数人。速い。
男は足を止めた。
ドアが開いた。
制服ではなかった。スーツの男たちだ。先頭の一人が警察手帳を出した。
「動かないでください」
男は空を見た。
機体はもうそこにない。
誰と戦ったのか分からないまま、その場に立ち尽くした。
五分後、回収班から連絡が入った。
「着地確認しました。爆発物なし。機体を確保します」
担当者が続けた。
「それと、柊さんが送った座標の建物で、オペレーターと思われる人物を確保しました」
「そうですか」
「機体の着地とほぼ同時でした」
「はい」
「……柊さん、発信源の特定はいつやったんですか」
「機体を操作しながら並行してやりました」
また少し間があった。
「搭載物は小型の広角カメラが一つ。映像を外部に送信していたようです。受信先は解析中です」
「分かりました」
「柊さん、本当にありがとうございました。先ほどの技術は……」
「開発中のやつです」
「TechVisionの依頼で?」
「そうです」
担当者は少し間を置いた。
「あの……一つだけ聞いてもいいですか」
「どうぞ」
「今日、怖くなかったですか」
「何が」
「……いえ、なんでもないです」
電話が切れた。
護衛が遼に近づいた。
「お疲れ様でした。本当に助かりました」
「別に」
「別に……じゃないですよ」
「テストのついでなので、あまり気にしないでください」
護衛は遼の機体を見た。折り畳まれ、ケースに収まっていく。
「あの機体、どこで入手できますか」
「どこにも売っていません」
「市販にないということですか」
「作ったので」
「……なるほど」
「あと、ロボットアームがついていますが、あれはまだ途中なのでそんなにちゃんと動かないです」
護衛は机の上に散らかった工具を拾うような顔をした。
「そんな状態で……」
「アームのテストは今日の別の項目なので、今回は関係ないです」
「そうですか」
別の護衛が近づいてきた。ベテランらしい雰囲気の男だ。背が高く、話し方が端的だ。
「柊さん、少しよろしいですか」
「何ですか」
「先ほどの機体のプロトコルについて確認したいことがあります。あれはカスタムのFHSSでしたか」
遼は少し見た。
「そうです」
「ホッピング周期が三十二ミリ秒前後と見えました。通常の業務用ドローンの三倍以上の速さです。うちの機材で追えなかったんですが、あなたはどうやって」
「スキャナーで全チャネルをカバーしながら、NOPコマンドを先に撒いておきました。向こうがどのチャネルに来ても、そこに遼の信号が先にある状態にする先行配置です」
「NOPを先行配置する……」
「周波数ホッピングへの対策として機能します。逃げる先に、事前にコマンドを置いておく。ホッピング先を予測する必要がなくなります」
男は少し考えた。
「最後の自律飛行への切り替えは」
「プロトコルの中に目的地座標を書き込むウェイポイントコマンドがあったので使いました。業務用のドローンには地上局連携のためにほぼ標準で実装されています」
「あれはどのくらいの時間で見つけましたか」
「解析を始めてから三十秒くらいです」
男は何も言わなかった。しばらくして言った。
「フライトモードの切り替えはどうやりましたか。あれは通常、暗号化コマンドのはずです」
「向こうのカスタムプロトコルは、モード切り替えコマンドを暗号化していませんでした。コスト削減か、実装の省略かと思います。プロトコルの解析中に気づきました」
「……なるほど」
「実装の穴です。カスタムプロトコルは標準プロトコルより解析が難しい反面、セキュリティの均一性が保証されていない。今回はそこが弱点でした」
男はしばらく考えた。
「専門的なご対応、ありがとうございました」
「別に専門家じゃないです」
「……」
「ドローンはたまに作るだけなので」
男は返事をするのをやめた。
少し間があった。
男はもう一度口を開いた。
「一つだけ。今日の機体のスペックについて、回収班から速報が来ました」
「はい」
「カスタムプロトコルだけではなく、機体自体にアンチジャミング用の信号処理チップが積まれていたそうです。市販品ではないです」
「そうですか」
「それをあなたは三十秒で解析した。ということです」
遼は特に何も言わなかった。
「参考までに、ですが」と男は続けた。「同様のシステムに対応できる機材を、うちの部署で整備するとしたら、どれくらいの開発期間がかかると思いますか」
遼は少し考えた。
「仕様次第です。ただ今日と同じことをやるだけなら、ソフトウェアの問題なので一ヶ月あれば書けます」
「一ヶ月」
「ハードウェアが揃っていれば、の話ですが」
男はまた何も言わなかった。それきり、何も聞いてこなかった。
遼は機体をケースに収めた。プロポもケースに入れた。背負った。
自転車に跨ろうとしたとき、担当者から電話が来た。
「もう一点確認をさせてください。今日の対応について、守秘をお願いしたいのですが」
「どこまで」
「今日ここであったことです。内容も、関わった人間の情報も」
「TechVisionには報告します」
「それは構いません。一般への開示についてです」
「別に話す相手もいないです」
担当者は少し間を置いた。
「お姉様と妹様には」
「言いません」
「……なぜですか」
「面倒なので」
そうですか、と担当者は言った。
「あと一点だけ」
「はい」
「今後も、こういった案件でご協力いただけますか」
遼は空を見た。よく晴れていた。テストの続きがしたかった。
「テストと並行するなら」
「はい」
「連絡してくれれば行きます。テストが終わっていても、近ければ」
「ありがとうございます」
「ただし車は出さないでください」
「……なぜですか」
「自転車の方が気が楽なので」
電話が切れた。
ベテランの護衛がもう一度近づいてきた。
「柊さん、最後に一つだけ」
「何ですか」
「……あの機体、どこから見ても民生品には見えないんですが」
「そうですか」
「フレームの設計が、軍用の無人機に近い形状をしています」
「空力優先で設計したらそうなりました」
「意図して?」
「してないです」
「……」
「ロボットアームをつけたかったので、機体が安定していないといけなくて。安定させようとしたら流線型になって、流線型にしたら翼型断面になりました」
「結果として……」
「そういう形になりました」
男はしばらく機体のケースを見た。
「……なるほど」
「何か問題ありますか」
「問題はないです。ただ」
「ただ?」
「その機体、うかつに外で使わない方がいいかもしれません」
「届け出は出してあります」
「そういう意味ではなく……まあ、いいです」
男は引き下がった。
遼は少し考えた。
何が言いたいのかよく分からなかったが、深く考えるのが面倒だったので、考えるのをやめた。
来た車がまだ待っていた。
「荒川まで送ります」
「大丈夫です、自転車があるので」
「自転車は現場に来ていません」
そうだった。
「……お願いします」
車に乗った。今度はサイレンが鳴らなかった。普通の速度で走った。
河川敷に戻ると、テスト用の小型機がグラウンドの端でまだホバリングしていた。バッテリー残量を確認した。まだある。
遼はプロポを出した。テストの続きをした。
ロボットアームの把持動作を確認した。三指が開く、閉じる、対象物の重さに応じて力を調整する。二回目のテストでアームが予定外の方向に曲がった。
「……やっぱりここのパラメータが合ってない」
独り言を言った。ログを取った。修正箇所を書き留めた。
川風は午前中より少し落ちていた。
空はよく晴れていた。
問題の機体のことは、夕方にはだいたい忘れていた。
その夜。
ロバートからメールが来た。
「今日の件、聞きました。お疲れ様でした。機能、問題なく動いたんですね」
遼は返信した。
「動きました。ただし相手のホッピング周期が速く、通常の介入手順では時間がかかると判断したので、NOPの先行配置に切り替えました。あとフライトモードの切り替えを使いました。対象のカスタムプロトコルに実装の穴がありました。仕様書に追記しておきます」
三分後にロバートから返信が来た。
「Thank you. Very useful field data. Also — next time, the car was the right call. Please remember that.」
(ありがとうございます。非常に有用なフィールドデータです。それと、今回は車が正解でした。覚えておいてください)
遼は一秒考えた。
「次は自転車で行けると思います」
と返信した。
ロバートからの返信はなかった。
一分後、別のメールが来た。
アリアからだ。
「Ryo! I heard what happened today. Are you okay?!」
(遼!今日のこと聞いたよ。大丈夫!?)
遼は少し考えた。
「I'm fine.」
「Are you SURE?! You went to a government security incident?!」
(本当に大丈夫?!政府の警備案件に行ったって聞いたんだけど!?)
「I just stood in an alley and operated a controller.」
(路地に立ってコントローラーを操作していただけです)
「That's still a security incident!!」
(それでも警備案件でしょ!!)
「Nothing happened to me.」
(俺には何も起きていません)
少し間があった。
「……okay.」
また間があった。
「Next time tell me in advance.」
(次回は事前に教えてください)
「There might not be a next time.」
(次があるかどうか分かりません)
「There will be a next time.」
(あります)
根拠はないが、アリアが言い切る感じがするので、遼は返信をやめた。
既読のまま閉じた。
遼はパソコンに向かい直した。
ロボットアームのパラメータ調整を始めた。問題の箇所は第二関節の力覚フィードバックゲインだった。値を一段階下げた。シミュレーションを走らせた。ログが流れた。止まった。見た。
もう一回走らせた。
また流れた。止まった。
見た。
悪くなかった。
遼は椅子の背にもたれた。
リビングから声が来た。
「遼、ごはんできたよ!」
華だ。
「今行く」
遼は上書き保存をした。
リビングに出た。テーブルに夕飯が並んでいる。
凛が振り返った。
「昼には戻るって言ってたでしょ」
「……色々あった」
「色々って何よ」
「説明が難しい」
「説明できないことが起きたの?」
「守秘義務がある」
凛は三秒、遼の顔を見た。
「……何に巻き込まれたの」
「巻き込まれてはいないです」
「巻き込まれてるじゃん」
「自分で行ったので」
「もっと悪い」
凛はため息をついた。それ以上は聞かなかった。
「今日どうだったの、荒川」
華が聞いた。
「まあまあ」
「まあまあって何よ。テストは?」
「動いた」
「どんなテスト?」
「機体の制御系の」
「うーん、分からない」
凛が味噌汁をよそいながら言った。
「何かいいことあった?」
遼は少し考えた。
「ロボットアームのパラメータの問題が一個見つかった」
「……それはいいことなの?」
「問題を見つけるのは前進なので」
凛はため息をついた。
「あんたの感性はよく分からない」
「よく言われます」
「もっと嬉しそうにしてよ」
「嬉しいです」
「そう見えない」
「嬉しいです」
華が笑った。
「遼って昔からそうだよね。何かできても顔が変わらないの」
「変わってる」
「変わってないよ」
「俺には変わってる感じがある」
「じゃあ遼の中だけで変わってるんだね」
それはそうかもしれない、と遼は思ったが言わなかった。
夕食はそれで終わった。凛が食器を片付け始めて、華がソファに寝転んだ。
テーブルの上に、今日の出来事が出てくることはなかった。
特に話す必要もなかった。
遼は部屋に戻った。
パラメータの修正を再開した。値を調整して、シミュレーションを走らせて、ログを見る。また走らせて、また見る。
部屋の灯りがついていた。モニターが二台。コーヒーが一杯、冷めたまま端に置いてある。
いつも通りだった。
空を飛ぶ機械のことも、永田町のことも、屋上の男のことも、ベテラン護衛の不思議な顔も、遼の頭にはもうない。
あるのは第二関節のゲインと、明日のテストの段取りだけだ。
深夜まで、作業は続いた。




