14-03 砂の山から音声記録の一粒を探す
前話に引き続き、メグ視点
途中で解説が入るのでちょっと長めです。
「マックバーン少尉についてはともかく……クレッグ中尉については私に考えがある。
特定できたらぜひ会わせて頂きたい。
私が彼自身に、音声記録のプロテクトを解除させる」
ドクが言う。
つまり……音声記録のプロテクトをかけた言葉と、それを言わせる手段。
その両方にドクには心積もりがあるってこと。
だけど、それ以前の問題が残っている。
「この船にその者を連れてくるのは無理じゃないか」
グンター小父さんが反論する。
「連れてくる必要はない。第一、君達は持出防止の鍵を解いているのではなかったか」
「そうなんだが、記録自体がどこにあるのかさっぱり分らんのだ」
グンター小父さんの答えに、ドクは目を丸くする。
「そうか……ノーヒントでは、君達には難しかったか」
音声記録がどこに保存されているのか分からなかった。
私やセイン小父さんもソフトウェア的に調べてみたけど、音声データの保存先デバイスについては山ほどのダミー痕跡ばかりで、実際どこに保存されているのか分らなかった。
これくらいの調査はスパイさんもしただろうから、ドクは意図的に痕跡を消すよう細工したんだと思うけど。
「だがこれだけは、ヒントを残す訳にはいかなかったのだ。
在りかを知ってしまえば、奴らはそこを破壊するだけで全てが終わってしまうからな」
例え暗号化されていても、データの物理的な保存場所を破壊すれば彼らの目的は達成されてしまう。
ノーヒントだった理由は理解できた。
「じゃあ、皆で行こうか。クロミシュ、車椅子を頼む」
そう言って、ドクはクロに車椅子を動かしてもらってどこかへ行こうとする。
「一体、どこへ行くんですか」
セイン小父さんがドクに訊く。
「決まっている。昔から、木を隠すなら森の中と言うだろう。
音声データを隠すのは音声データの中というわけだ。
この船の中で音声データが大量にあるのは、どこかな」
ドクの言いたいことが分かった。
「音声データは、大量の放送データアーカイブの中……。
つまり今から向かうのは、AMラジオの放送室って訳ね」
私の答えに、ドクは満足そうに頷いた。
放送データのアーカイブは、ラジオ室内の保存デバイスにまとめて記録されている。
これを実際にAM放送で流すには、そのアーカイブデバイスから一時的に再生用デバイスへデータをコピーし、そのデバイスを放送設備にセットすることで流れる仕組みになっている。
「つまり、音声記録のデータは過去のAM放送アーカイブに紛れて、アーカイブデバイスに保存されているっていう訳なのね」
ドクは笑って頷き、私の推測を肯定した。
「でも、アーカイブには20年分の放送データが残っている。
その中から、どうやって見つけるんだ」
グンター小父さんがドクに質問する。
「目的の音声データは圧縮暗号化されていて、おまけに閲覧防止ロックが掛かっている。
それはそもそも、この放送設備で再生できないデータ形式なのだ。
対象のデータを再生しようとするとエラーが発生する」
ドクの説明に、ライト小父さんが嫌そうな顔をする。
「おいおい。
ちまちま再生デバイスにコピーして、放送設備に投入して確かめろってことかよ」
そんなことしてたら、20年分のデータを調べるのに死ぬほど時間が掛かっちゃう。
でもそんな心配はしなくていい。
「そんな事しなくても、データチェッカーがあるんだよ」
セイン小父さんが説明する。
再生デバイスにアーカイブデータをコピーする際に、そのデータが壊れているかを確かめる機能があるってこと。
「この再生用デバイスには一週間分のデータが入る容量がある。
普段ここで聞いてるAMラジオは、連続した一週間分をランダムでアーカイブから選択して、自動で再生デバイスの中身を書き換えてる。
終わったら、また別の一週間分をランダムで選択して入れ替える。
そういう風にメグとプログラムを組んだんだ」
放送設備の再生デバイスをセットするところにコードが引っ張ってある。
このケーブルを通して、再生デバイスを入れ替えることなく中身を書き換えてる。
このアーカイブ自動切り替えの仕組みを、セイン小父さんと私で以前作ったんだ。
いちいち手で入れ替えるの面倒だしね。
「アーカイブ上は、放送データは日別に分かれてる。
チェッカーに引っ掛かった日のデータは、エラーとして履歴に記録する。
一週間分のデータが全てエラーなら別の週のデータをまたランダムで選ぶ。
だから、エラーの履歴を見ればチェック済の再生できないデータが判るって訳なんだ」
セイン小父さんはそう言いながら、放送設備のメンテナンス端末を操作する。
私も横で見てると、過去のエラー履歴は二日分見つかった。
「過去のエラー履歴は二日分あったけど、このどちらかが対象の音声記録データだってことはまだ確実には言えない。このアーカイブデバイスには、まだ再生してないデータが山ほどあるからね」
セイン小父さんは言う。
「まずはエラーデータを全部洗い出さない?」
私からセイン小父さんに提案する。
「どうやって?」
グンター小父さんが言う。
「さっきはエラーデータの一覧だったけど、今まで再生したデータの一覧も別に記録されてるの。これらを除いた残りのアーカイブを、順にデータチェッカーに掛けてみればいいんだよ。
それ位なら10分あれば、今のプログラムをコピーして作れるし」
「メグが組んでくれる? 僕がやるより早い」
そう言うセイン小父さんと場所を代わる。
メンテナンス端末を操作してチェックプログラムを組み上げる。
といっても、今あるアーカイブ選択プログラムをコピーして、使えるロジックを残しつつ追加のコードを書くだけ。そんなに大した作業じゃない。
「凄く修正が早い……」
私の作業を横からのぞき込んでいたナナさんが呟く。
「どうしてそんなにすぐに、変更が必要な箇所がわかるのだ」
ナナさんの反対から覗いていたドクも言う。
そういやドクって、3区の採掘システム全体を管理してたエンジニアだったっけ。
「直感」
私はプログラムを書きながら、ドクに答える。
セイン小父さんが「私の方が早い」って言うのは、タイピングのスピードの話だけじゃない。
自分でも何故だかわかんないけど、私はざっとプログラム全体を眺めただけで、どこを直せばいいかがなんとなくわかるんだ。
宣言通り10分ほどでプログラムを書き上げる。
まずは、正常データとエラーデータのチェック。
......よし、ちゃんとエラー分だけ引っ掛かった。
次は実行時間チェックね。件数を絞ってテスト実行する。
……うん、動作も処理時間も、問題なさそうだね。
えっと、テスト件数が100日分で、実行時間がこの位だから……。
「20年分のデータチェックに、多分30分くらいかかる。
終わるまで、さっきの会議室でお茶にしない?」
会議室に戻って、全員分のお茶を淹れる。
飲みながら待っていると、ライト小父さんが話し出す。
「洗い出しが終わったら後、どうやって音声記録データを特定するんだ?」
私は何となくその方法も分かった。
「エラーデータを強制的に再生デバイスにコピーして、放送してみるってのが一つ」
「チェッカーに引っかかるくらいだから、放送できないんじゃないのか?」
グンター小父さんが私に訊き返す。
「チェッカーに引っかかるのは一定以上の割合でデータが壊れた時だが、残りはデータが生きている。全く再生できない程に壊れる事はそうないはずだ。
逆に全く再生できないデータがあれば、音声記録の可能性が高い」
小父さんの疑問にはドクが答えた。
「でも……何となくだけど、そんな事しなくてもわかる気がする」
「そうなの?」
セイン小父さんが私の呟きを拾った。
「だってさ、ラジオって基本的に毎日放送してたんだよね」
「まあ、そうだね」
セイン小父さんは頷いた。
「毎日放送してたのなら、その20年分の毎日の放送データがアーカイブにあるはず。
アーカイブに記録するのは何かあった時に記録を引っ張り出すためだから」
「……お嬢さんはそこに気付いたか」
ドクが笑みを浮かべる。
思ってたけど、ドクはどこにどう隠したかはちゃんと覚えてて、私達が自力で答えにたどり着くまで黙ってるつもりだったんだ。
「言っておくが隠し方は覚えていても、どのデータがそうなのかまでは覚えていない」
私の考えを読んでドクが言う。
「んー、メグの言ってる事がまだわからん」
グンター小父さんが首をひねっている。
「音声記録データで過去の放送データを上書きしちゃったら、その上書きされたデータは二度と復旧できない。ドクがそんなことをするとは思えなかったの。どう?」
「関わったスタッフたちの実績を勝手に消すような真似はしない。アーカイブデータの重要性は、エンジニアだった私も重々理解している」
ドクは頷いた。
「その前提に立って、過去20年の放送データを残したまま、音声記録データをアーカイブに隠す方法。思いついたのは二つ。
一つは、放送開始直前、または終了直後の日付のデータとして保存すること。
もう一つは……実際には存在しない日付のデータとして保存すること」
私の推測に、ドクは笑みを浮かべた。合ってるみたい。
「一つ目は簡単。アーカイブの一番古い日付、もしくは一番新しい日付のデータを調べればいい。
でも、簡単すぎてスパイさんも調べられるかもしれない。この方法は採らなかった気がする。だから、エラーデータの中から、存在しない日付のデータを特定すればいいと思う」
「あ……アーカイブのデータキーって、帝国暦表記だったね」
セイン小父さんが気づいて、ちょっと嫌そうな顔をする。
「帝国暦なんてざっくりしか覚えてないぞ……」
「儂もだ」
ライト小父さんとグンター小父さんが零す。
『覚えていない人が多いけど、ちゃんと覚えた方が、宇宙で生きていくのに役立つと思うの』
ケイトお姉さんが3区に来て会ってた時に、お姉さんがそう主張した。
それで、暦の事はお姉さんからきっちり教わったの。
ちなみに、マルヴィラお姉さんはうろ覚えらしい。
帝国みたいに星系が幾つも集まってる国――星系間国家っていうんだって――の場合、暦の扱いはちょっとややこしいことになる。
まず、星系間国家ごとに、その国の基準となる暦が作られる。
ダイダロス帝国なら、基準となるのはダイダロス帝国暦ってわけ。
帝国内では、帝国暦っていう名称に略される。
この基準暦は、一年が365日プラスマイナス10日の範囲にすることが、いろんな国の間で取り決めされているらしい。
これをあまり外れると、年を数える基準が国によってバラバラになり過ぎるから。
一年の長さが極端に違う暦の国があったら、その国だけ、人の年齢が極端に変わってしまう。例えば365日の暦で60歳の人が、200日の暦の国では110歳近くになっちゃう。
それはおかしい、ってなるよね。
ちなみに365日って基準は、人類が生まれた星が、公転軌道を一周する期間から決まった。
帝国暦の場合、一年はだいたい374日。
これは帝都ダイダロスの公転軌道を一周する期間を基準に決められた。
でも実際は、星によって公転周期はバラバラ。
ハランドリ星系の主星は334日。
クセナキス星系の居住惑星は497日周期と、帝国でも長い方と聞いている。
ちなみに、クーロイのコロニーが浮かぶ惑星オイバロスは420日周期だ。
帝国内には短いと170日くらい、長いと630日なんて星系もあるみたい。
その公転周期によって、その星系での生活環境は周期的に変わる。
だから、それぞれの星系では帝国暦とは別に、その星系の公転周期に合わせた暦が必要になる。
例えばクセナキス星系には、クセナキス星系暦といった感じ。
ただ、あくまで国の基準は基準暦だから、星系暦での細かい日付計算はしない。
星系歴では、その軌道上の位置計算によって、帝国暦の何日何時から何日何時までが春周期、みたいな決め方がされる。
当然、帝国暦と星系暦は周期が違うから、星系暦への読み替え方は毎年変わる。
ちなみにこの星系暦の周期表現は、その星系ごとの事情によってバラバラ。
一般的な分け方は春、夏、秋、冬の四つの区分なんだけど、クセナキス星系では春夏秋冬をそれぞれ更に3つに分けて、春1、夏3みたいに表現するそうだ。
ただ言えるのは、その星系で暮らす人にとっては星系暦の方が生活に則している。
季節感を表現するときは星系暦による周期でざっくり表現し、細かい日程の話は帝国暦の日付を使う、という風に使い分けるんだって。
クーロイの場合も、軍政時代からクーロイ星系暦があった。
当然これは、コロニーの浮かぶ惑星オイバロスの公転周期を基にしたもの。
何故なら軍政時代にクーロイに住んでたのは宇宙軍の軍人さんが中心。惑星表面での採掘作業とか、コロニーメンテナンスの船外作業とか、何らかの形でコロニー外部に関わる仕事の人が多かったから、公転周期は気にする必要があったんだ。
この辺は小父さん達にも話を聞いた。
ところが軍政から自治政府へ移管された後、宇宙空間に出ないでコロニー内だけで生活する人が多くなって、そういう普通の人にはクーロイ暦がほぼ不要になった。
コロニーの中だけでの生活って、惑星の公転周期とは切り離された環境らしいからね。
むしろ隣のハランドリ星系とのやり取りが軍政時代に比べて活発になり、向こうの生活サイクルに影響を受けることが増えた。
だからそのために、ハランドリ星系暦を見てる人も多いらしい。
でも自治政府の人とかは、仕事上今までのクーロイ暦も必要。
だからそういった人達は帝国暦とハランドリ星系暦、クーロイ星系暦の三つを読み替えながら使ってるらしい。とっても面倒そう。
私達でいえば、特に小父さんたちは、クーロイ暦をざっくり覚えていても帝国暦の細かい日付はあまり覚えてない。
3区での生活では、一日一日を生きていくのが大変で、細かい日付を気にする必要も無かった。
それにそもそも他のコロニーとの通信が出来なかったから、正確な日付も分からなかった。
年数を数えるときに帝国暦何年っていうのを気にする程度。
あ、私の誕生日についてだけは、何故か小父さんたちは詳しかったな。
でも、そのくらい。
逆にクーロイ星系暦は、外の作業には必要だったから参考にしてた。
『今は冬周期だから、あの事故のときの残存デブリが多い』とか、そんな風にね。
で、問題の帝国暦なんだけど。
一年を十二の月で分けるのは、どこの国の基準暦でも一緒。
ただ、理由がよくわからないけど……帝国暦の場合、月ごとの日数がバラバラ。
月毎の日数はだいたい三十一日なんだけど、例外もある。
一、五、八、十月は三十二日ある。逆に二月は二十九日しかない。
更にややこしいのが、帝都のある星の公転周期を基準にしてるってところ。
公転周期を基準にしたのは、たまたま国家間で決められた基準に近いってのもあったけど、わざわざ星系暦を作りたくなかったかららしい。
でも星の公転周期だから、ピッタリ何日とはならない。
帝都の星の周期は、より正確には374.136日くらいだそう。
つまり、暦と公転周期に誤差があって、それを埋める必要がある。
そのために、7年に一度だけ二月が一日増えて、三十日までになる。
それでも生じる誤差の調整で、更に140年に一度だけもう一日増える。
その場合、二月が三十一日になるんじゃなくて、十二月が三十二日になる。
なんで十二月って言われても、そういうルールらしい。
帝国暦になって初めて二月が三十日になったのは帝国暦三年。
十二月が初めて三十二日になったのは帝国暦九十四年。
中途半端な年数なのは、帝国暦がその前のダイダロス王国暦ってのを引き継いでいて、年の表記だけが変わったから。
お茶を飲んで休憩してからラジオ放送室に戻ったら、全件データチェックは終わってた。
データチェッカーに引っかかったのは、七日分。
289年3月20日
292年4月32日
293年3月11日
294年6月9日
299年8月32日
304年2月30日
308年11月29日
「あ、どれか分かった」
「私もだ」
このうちどれがロックの掛かった音声記録データか、私はすぐわかった。
ドクもすぐわかったみたい。
メグのような特技を持ったプログラマーさんを
本業の仕事上で偶に見かけます。
今時は、人手によるコーディング無しでプログラムが作れる仕組みが
だんだんと増えてきましたが、だからと言って
いずれ全くプログラマーが不要になるかというと
そうでもないんじゃないかな、と勝手に思っております。
最後、7つのうち、どれが隠された音声記録データなのかは
割と簡単にわかると思います。
次回はその答え合わせから。




