民主制の歴史を知らず、日本での運用史についても知らない人に限って、今回の選挙結果から容易に予想される無茶苦茶な統治について「民意だ民意だ従え!!」って言うんだが、さすがに無理筋だと思う。
今回のって、言うなれば、みんなでサッカーやってるときに、オフサイドでゴールできなかったジャイアンが
「オフサイドなんかおかしい! オレはそんなのに縛られねえ!!」
と言い出し、スネ夫がお菓子をバラまきながら
「オフサイドはいらないと思う人!」
って手を挙げさせ、
「多数決で勝ったからオフサイドは無し!!」
とか言い出すようなもん。
それではサッカーが成り立たないことは、長期にわたるサッカールールについての討議と改正の歴史の中で十分に判明してるわけです。そういうことを、議論なしの頭数で決めちゃおうという乱暴な方法に納得する人はいないと思う。
最良の方法を選び取るには常に長い議論が必要になる。議論を積み重ねたうえで自分たちで決めていく。間違えないはずはないし、間違ったらそれをまた自分たちで修正していく。
民主制も同じ。ほら決まった! 決まったんだから全部従え! みたいなやり方に納得する人間は居ないんだよ。
議会を納得させられない粗雑な法案を通すために、一時的な人気を最大限の議席に変換し、4年間誰のチェックも受けないで済むようにした。
これが可能だったのは制度の欠陥だし、修正していく必要がある。おかしなことをやらないように、チェックする方法をひねりだす必要がある。当たり前のことだ。
民主制(民主主義)の意味するところは、ルールも、その実装も、手直しの方法まですべて自分たちで決め、自分たちでシステムを組み、その中に住んで運用していくということだ。制度的な欠陥があったら特定して修正していく努力をするのは自分たちの責任だし、欠陥を利用して大多数が同意してないことを進めようとする奴らがいれば、自分たちで止める必要がある。
制度のすべての細部には目的があり、議論の積み重ねがあり、それを理解していなければ適切に修正することも、運用することすらできない。
いやーこれ、面倒くさいよね。でもこれをみんなで引き受けないと、みんなが納得できる社会なんて作っていけない。それが民主制というものだ。
この面倒くささについて、良い文章を思い出した。ジョエル・スポルスキーの "Things you should never do, part I" である。
これ、2000年にNetscape 6.0のリリースを受けて書かれた文章だ。民主制からぜんぜん遠くない? と思われるかもしれないし、古すぎないか? って思われるかもしれないけど、民主制の面倒くささを想像するのに最適であり、きわめて普遍的でまったく古くない。こいつを読むと、コードを書く皆さんなら、オレの言ってることがわかると思うよ。
原文が楽しい文章なので機械翻訳ででも読んでほしいけど、青木靖さんの素晴らしい訳書が手元にあるんで、オレの言いたいことを裏打ちする部分だけ引用しておく:
私たちはプログラマだ。プログラマというのは、心の中では建築家なのだ。建築家が建築予定地に来て最初にやりたいと思うのは、その場所をブルドーザーでまっさらにして、何かすごいものを建てるということだ。私たちは、修繕して、改良して、花壇を植えて、という改修みたいな作業にはあまり興奮しない。
プログラマがいつでも既存のコードを捨てて最初からやり直したいと思うのには、ちょっとした理由がある。その理由というのは、古いコードがクズだと思っているからだ。そしてここに興味深い観察事実がある。彼らはたぶん間違っている。彼らが古いコードがクズだと思うのは、プログラミングの基本法則のためだ。
プログラムというのは書くより読むほうが難しい。
(中略)
この法則の結果として、誰かプログラマに彼らの作業しているコードについて聞いてみれば、ほとんどの人がこんなふうに答えることだろう。「ひでえクズだ。全部捨てて最初からやり直したいね」
なんでクズなの?
「この関数を見てよ。2ページもある! これのどれを取っても、ここにあるのはおかしい! このAPI呼び出しの半分は何やっているのか分からない」。
(中略)
新しいコードが古いコードよりも優れているというのは、明らかに不合理だ。古いコードは使われている。古いコードはテストされている。多くのバグが見つかり、修正されている。それについて悪いことは何もない。
(中略)
あの2ページの関数に戻ろう。ああ、分かってるよ、それはウィンドウを表示する単純な関数なんだけど、少しムダ毛みたいなのが生えていて、それがなぜなのか誰も知らないんだ。その理由を説明しよう。それはバグフィックスだ。
(中略)
これらのバグが見つかるには、いずれも、実世界で何週間も使われる必要があった。プログラマがラボでバグを再現して修正するには、2、3日かかったかもしれない。多くのバグ修正と同様ならば、修正したのは1行だけだったかもしれない。あるいは、2、3文字だけだったかもしれない。しかし、その2、3文字のために多くの時間と労力が支払われているのだ。
コードを捨ててスクラッチからやり直すとき、あなたはそういう知識のすべてを捨てている。それら、蓄積されたすべてのバグフィックスを。何年にもわたるプログラマの作業を。
(中略)
スクラッチから始めるときに覚えておかなければならない重要な点は、あなたが最初にやったときよりもいい仕事ができるだろうと信ずべき理由はまったくないということだ。第一に、あなたはバージョン1.0のときに作業したのと同じプログラミングチームを持っているわけではなく、「より経験を積んでいる」わけではないということ。あなたのチームは昔やった間違いの多くを再び繰り返し、最初のバージョンにはなかった新しい問題を持ち込むことだろう。
そういうこと。
「最初のバージョンになかった新しい問題」がいくら巨大であっても、あなたは4年間手出しできない、と言われているのである。
でもそれを直すこともまた、あなたの責任なのである。
諦めないのは当たり前なんだよね。