五枚目の壁を崩したとき、おれの異能は限界に近づいていた。
右耳の後ろのインターフェースが焼けるように熱い。パターンマッチングのスキャンを繰り返すたびに処理負荷が蓄積される。異能の稼働率は推定八十パーセント超。サーバーのCPU使用率なら、もうアラートが鳴っている水準だ。
「クロヤ、大丈夫?」
「大丈夫じゃない。だが止まれない」
六枚目の壁が目の前にあった。これまでの壁とは様子が違う。条文の密度が異常に高い。文字が小さくなり、行間が詰まり、壁一面がほとんど黒に見えるほど文字で埋め尽くされている。
「条文が——入れ子になってる」
リサが壁に顔を近づけた。
「一つの条文の中に別の条文への参照が含まれていて、その参照先にもさらに参照がある。再帰的な構造。矛盾を見つけるには、参照先を全部辿らないと——」
「再帰処理。スタックオーバーフローを狙ってるんだな。こっちの処理能力が先に尽きるのを待ってる」
おれは壁の条文をスキャンした。第二百七十八条第十二項。参照先は第九十三条第四項。その参照先は第三百十一条第一項。さらにその参照先は——第二百七十八条第十二項。
「循環参照だ」
「循環参照?」
「AがBを参照して、BがCを参照して、CがAに戻る。無限ループ。定義が永遠に完結しない。これ自体が論理矛盾だ」
リサの目が光った。
「循環参照は論理的に無効——定義が確定しない条文は壁の強度に寄与できない」
「声に出せ」
「第二百七十八条第十二項、第九十三条第四項、第三百十一条第一項は循環参照を形成している。定義が確定しない条文は論理的に無効である」
壁に亀裂が走った。だが六枚目の壁は厚い。一箇所では崩れない。
「もっと見つける」
異能のスキャンを最大出力に上げた。インターフェースが軋んだ。だが条文のパターンが高速で解析されていく。
「第四十五条と第二百九十九条と第百七十七条。循環参照」
「無効」
「第六十二条第三項と第二百四十一条第八項と第三百三十条第二項。同じく循環」
「無効」
リサが矢継ぎ早に宣言する。壁に亀裂が走り、連鎖し、広がっていく。おれがパターンを検出し、リサが声で打ち込む。デバッガーとコンパイラの連携。バグを見つけてエラーを投げる。
七箇所。八箇所。九箇所。
六枚目の壁が崩壊した。文字の破片が光になって散った。
その奥に——最後の壁があった。
「これは——」
おれは足を止めた。
最後の壁は、これまでのどの壁とも違っていた。黒い壁面に白い文字。だが条文は一つだけだった。巨大な一つの条項が、壁全面に刻まれている。
特別条項第一号——生体ボットネット運用規定
第一項: サービス提供者は、無料プランユーザーの脳演算リソースを、サービス維持および改善の目的で利用する権利を有する。
第二項: 前項の利用に伴うユーザーの身体的負荷(生命維持機能への影響を含む)は、ユーザーが本規約に同意した時点で許容されたものとみなす。
第三項: 本条項の無効化には、全アクティブユーザーの過半数による明示的な反対決議を要する。
おれは条文を三回読んだ。三回とも同じ意味だった。
「生体ボットネット条項」
リサの声が震えていた。
「これが——フリープランのユーザーの寿命を削る根拠になっている条項。特別条項。通常の利用規約とは別枠。だからいくら他の条文に矛盾があっても、この条項には影響が及ばなかった」
「独立した条項。他の条文との依存関係がない。だから論理矛盾を突く方法が使えない」
おれは異能でスキャンを試みた。循環参照。他の条文との矛盾。パターンマッチングが何かを見つけることを祈って。
——何も引っかからなかった。
「完璧に書かれてる。矛盾がない。他の条文を参照していない。自己完結した条項。論理的に瑕疵がない」
「当然だよ。Rootが最も守りたい条項だから。生体ボットネットはRootの資金源であり、テネシー計画の技術基盤。この条項だけは完璧に設計されてる」
おれは壁の前に立ち尽くした。論理矛盾がない壁は崩せない。循環参照もない。外部参照もない。単独で完結した、完璧な条項。
「第三項」
リサが壁の下部を指差した。
「『本条項の無効化には、全アクティブユーザーの過半数による明示的な反対決議を要する』。これが唯一の突破口。Rootは自信があるんだよ。三百八十万人の過半数——百九十万人以上のユーザーが同時に反対を表明することは不可能だと」
「不可能だろう。普通に考えたら。百九十万人を同時に動かすなんて——」
「でもRootはわざわざこの条項を書いた。つまり、仕組み上は可能なんだ。全アクティブユーザーの過半数が明示的に反対を表明すれば、この壁は崩れる。論理矛盾では壊せない壁を、民主主義で壊す。Rootは自分で脱出口を作ったんだよ。使われないと思って」
おれは第三項を見つめた。百九十万人。裏東京にいるフリープランユーザーの総数は推定百二十万人。それだけでは足りない。プレミアムユーザーや、表東京にいる一般ユーザーも含めて百九十万人を集めなければならない。
「広告ジャックの資産が使えないか」
おれは頭を回転させた。広告ジャック——以前おれたちが実行した、AR広告システムへの干渉。全ユーザーの視界にメッセージを表示させた実績がある。
「メッセージは送れる。だが同意を取りつけるのは別の問題だ。百九十万人が能動的に反対を表明する必要がある。表示するだけじゃ足りない。ユーザー一人一人が自分の意思でアクションを起こさないと——」
「明示的な反対決議。つまり投票。百九十万票」
おれは壁に背中を預けた。冷たい。生体ボットネット条項の文字が背中に触れている。
「ここまで来て——壁に阻まれるのか」
「阻まれてない。突破方法は分かってる。百九十万人の同意を集めればいい。不可能に近いけど——不可能じゃない」
リサが壁に手を当てた。条文の文字が微かに震えた。
「地上のDDoS。あの百人は、テネシー計画を知って怒って、自分から協力してくれた。百人が集まった。なら千人も、一万人も、百万人も——可能性はゼロじゃない」
「楽観的すぎる」
「楽観じゃない。可能性の計算。テネシー計画の真実を全ユーザーに開示できれば——生体ボットネットで寿命を削られてると知ったら——意識を同期されて個人が消えると知ったら。反対しないユーザーがいると思う?」
おれは黙った。リサの言葉は正論だ。問題は、三百八十万人にその情報をどう届けるかだ。
「一つだけ方法がある」
おれは壁から背中を離した。
「このデータセンターの最深部にいるんだ。Root直轄サーバーの近くにいる。ここからなら——オムニバース全体のブロードキャストシステムにアクセスできるかもしれない。広告ジャックの拡張版。全ユーザーに生体ボットネットの真実を送信して、同時に投票システムを構築する。このデータセンターの通信リソースを使って」
「Rootのシステムを使って、Rootの規約を壊す投票を実施する」
「皮肉だろ。だがそれしかない」
おれはインターフェースに触れた。異能が応答する。限界に近い。だがまだ動く。
利用規約の壁は、技術では壊せなかった。論理でも壊せなかった。最後の壁を壊すのは——人の意思だ。百九十万人の。
「先に進もう。ブロードキャストシステムへのアクセスポイントを探す」
リサが頷いた。生体ボットネット条項の壁を背にして、おれたちはさらに奥へ歩いた。
頭の中で数字が回っている。百九十万。途方もない数字だ。だがおれたちは、ゼロからここまで来た。おれ一人から始まって、リサが加わり、カガミが情報をくれて、ミナミが道を開いて、裏東京の百人が体を張った。
ゼロから百まで来たなら、百から百九十万まで——行けない道理はない。スケーリングの問題だ。設計が正しければ、百台のシステムは百万台でも動く。
おれたちの設計が正しいことを——祈るしかない。