皇室典範のデザインパターン

現行の憲法および皇室典範には,天皇インスタンスが 2 つ以上存在しうる,という脆弱性がある.

(日本国憲法)

第一条 天皇は、日本国の象徴であり日本国民統合の象徴であつて、この地位は、主権の存する日本国民の総意に基く。

第二条 皇位は、世襲のものであつて、国会の議決した皇室典範の定めるところにより、これを継承する。

(皇室典範)

第一条 皇位は、皇統に属する男系の男子が、これを継承する。

第二条 皇位は、左の順序により、皇族に、これを伝える。

(中略)

第四条 天皇が崩じたときは、皇嗣が、直ちに即位する。

これらの条文は,皇位が満たすべき条件を述べているのみであり,可能な皇位の数を制限していない.

憲法および皇室典範に依存するプログラム (法令) は,天皇インスタンスが一意に定まることを暗黙裡に仮定している.天皇が複数存在する場合の挙動は,ほとんどの場合に未定義であり,実行環境に依存する.その代表例は国事行為である.

(日本国憲法)

第七条 天皇は、内閣の助言と承認により、国民のために、左の国事に関する行為を行ふ。
一 憲法改正、法律、政令及び条約を公布すること。

二 国会を召集すること。

三 衆議院を解散すること。

四 国会議員の総選挙の施行を公示すること。

(後略)

これによれば,天皇衆議院を召集し,解散し,その選挙を行わせることができる.天皇インスタンスが複数ある場合,一つの天皇インスタンスが召集した国会を,別の天皇インスタンスが解散することもありえる.また,国会が null であるにもかかわらず解散が試みられることも考えられる *1.このような未定義動作は深刻なランタイムエラーを招き,日本は無政府状態に陥るかもしれない.また,例えば天皇インスタンスが 2^32 人程度存在した場合,ある種のプログラム (法令) は,天皇を取得しようとしてハングアップするだろう.

現在,天皇と関係する全てのプログラムは,実装と運用に細心の注意を払い,実行時に天皇インスタンスが高々 1 つしか存在しないようにすることで,未定義動作を防いでいる.しかし,このような問題は本来,天皇のクラス設計を見直すことで解決されなければならない.

したがって,日本国憲法または皇室典範は Singleton パターンを実装するべきである.具体的には,天皇クラスは

ようにする.これにより,天皇インスタンスは実行中に高々 1 つしか存在しないことが保証される.

孔子曰く,天に二日なく,地に二王なし。

現行の運用と合致するように設計を見直してプログラムをリファクタリングすることは,良いことである.この変更により憲法および皇室典範脆弱性が一つ除かれ,現状では内閣法制局あたりが負担している設計コストが削減できる.このプルリクエスト,もとい憲法改正は,レビュアー,もとい国民の理解を得やすいだろう.

しかし,この脆弱性の深刻さを強調するための Proof of Concept を作成することは,推奨されない.

*1:実はこのような動作は,天皇インスタンスが 1 つであっても起こりうるのだが,「天皇が一貫した一人の人間である」という運用により防がれている.