サブセット工学

■ 政府はしばしばバグる

  1. 政府とはスパゲティコードなマイクロサービスだ。独立して組み立てられるサービス同士が相互作用して顧客満足を目指すが、体系的な体験の保証なくしてなかなか良いサービスはできない。
  1. 制定法主義というのは法令のみに対して整合性を得ようとする試みたが、行政の実体そのものの相互作用や関係性を含めて顧客満足は達成されるために、手段として包括的ではない。
  1. この課題を抽象化すると「ある破壊的変更をマイクロサービス群に加える際に、自律分散的に、変更の影響を最小化すること」である。
  1. 行政とのコミュニケーションをすべてVersioned APIにして、廃止された行政はAPIをfreezeかつtime decayするようにして、古いバージョンのAPIの依存を自律的段階的に最小化するのがベストだろう。
  1. 議長は議決権を持たないが、よりよい熟議のために(4)の知見を審議員に積極的に告知する義務があり、怠慢は国民審査(*1)において評価される

*1 +熟議三職 の定義3参照

■ デッドロック(にっちもさっちもいかない)

  1. 行政A→行政B→行政C→行政D という形で行政が行政から情報を得る、あるいは情報を書き込むことでひとつの公共サービスが達成できると仮定する
  1. 行政Bを削除する改善提案(既存の法や行政に破壊的変更を含む提案)と、行政Cを削除する改善提案を同時に可決する
  1. 提案Aは行政Bを削除し、かつ行政Aが行政Cと直接関連する結果を求める。提案Bは行政Cを削除し、行政Bが行政Dと直接関係する結果を求める(これをソフトウェア工学で「レースコンディション」と言う)。この2つの提案はまとめて行われれば、行政Bと行政Cを削除して行政Aが行政Dと関連する結果を残せる。
  1. それぞれの議長は、同時進行している提案を把握して、提案の合成を推奨する義務か、提案の採決を延長する義務を帯びる(議長に審議の延長権限をもたせる設計は避けたいが)。したがって提案Aと提案Bは否決されるべきである。
  1. 提案Aと提案Bのどちらかが否決されれば、提案は少なくとも処理は並行ではなく直列となり、デッドロックは起こらなくなる。
  1. どちらの提案も可決された場合、LVMがクラッシュしてしまうため、どちらの提案もキャンセルされるべきである。(手数料が高い提案が有効になり、もう片方はキャンセルされるというのも可能)

■ファイナルアタック(最後のイタチっ屁)

  1. ある行政が廃止される際、その行政に所属していた資産を紛失したふりをして売却する可能性がある(個人ないしは少数人で処分可能なものを想定する)
  1. その行政の長の無限責任にしたり刑事事件にしたとて、その損害は戻ってこない。
  1. 罷免の瞬間、公権力で行政の長を出入り禁止にし、敗戦処理用の長官を用意するのがよいだろうか。

■ 攻撃の緩和について

+提案DoS対策 にあるように、供託のslashと参政のsuspensionによって、恣意的に法令のブロッキングを引き起こすことは難しくなる。

■ 悪意のないブロッキングと緩和について

令和元年の日本の法案提出数は168件で、成立数は90件である。
PoDではその10倍の1680法案を審議することを目指すため、1審議14日間・土日祝日数を128日として、常時約100法案を審議し続けることとなる。

問題は、100法案も同時に審議すると、複数の法案で同じ法令について依存が生じる蓋然性があることである。この問題の緩和方法としては
  1. 審議員が依存を察知し、法案通過を少し待つか、法案の書き方を修整することを推奨すること
  1. SNSなどを介して依存について常に最新の情報が得られる体制を構築すること
  1. 同時に審議している提案のファシリテーター同士が相互に連携し、円滑な審議が遂行されるよう心がけること
などが考えられる。

技術的には、 +立法言語 の型検査により法令依存をチェックすることで、同時審議中に相互依存がありえないようにもできるが、年間2万法案の審議―つまり1000人のファシリテーターの意思疎通が必要な要件でない限り、そこまでする必要もないだろう。

■ CRO任命という有限リソースについて

+熟議で変更可能な変数 にあるように、CROの種類は多く、彼らを素直に必要人数を用意していると、 +CRO任命はリソースイーター にあるように殆どの熟議がCRO任命熟議になってしまう。したがって +CROをサブセットと組み合わせて設計することについて で対策を論じる。