プログラム認定制度についての素朴な疑問

2007年6月の改正建築基準法の施行以降、少なくとも現在(2007年12月)にいたるまでの約半年間、構造計算プログラムの認定制度は実質的に消滅しました。といっても、べつに制度そのものが廃止されたわけではなく、「既存の制度は全部白紙!」の華々しい宣言が先行し、「その後のこと」を考えているうちに時間切れになってしまっただけで、ご存知のとおり、この制度の存続は国の既定方針になっています。
ではこの半年間、プログラム認定制度の実質的な消滅によってもたらされた不都合が何かあったでしょうか?
何もなかった、と思います。
新しい確認審査制度がもたらした混乱に関連し、「プログラム認定制度の遅れのために確認審査が混乱した」という話を時々耳にすることがあります。しかし、これはまったくの本末転倒でしょう。プログラムの認定制度とは構造計算書の審査を補完するもの、その効率化を図るという二次的な役目を担うもので、そもそも、審査のルールそのものが混沌としている状況下で「認定プログラム」が機能するはずがありません。

しかしいずれにしても、国は認定制度の存続をうたっているわけですから、おそらく、2008年春には「新制度下の認定プログラム」が登場してくるはずです。
そしてその後どうなるのか、ということになりますが、これについてはさっぱり分かりません。
さっぱり分かりませんが、確認審査のルールが混沌としている状況の中に「ぴかぴかの認定プログラム」が放り込まれたために「ますます混沌としてくる」ということだってあるかもしれません。しかしその一方では、「そうこうしているうちに、何かよく分からないまま、プログラムの認定制度が再び既定の事実と化していく」ことも間違いがなさそうに思えるのです(これまでの経験上)。

そういうわけで、プログラムの認定制度が既定の事実と化していく前に、この際、かねてからこの制度について疑問に思っていたことを書いておこう、というのが本コラムの趣旨になります。
当然ながら、ここに書いてあることは認定制度に対して批判的な内容になっていますが、しかし、「認定制度の廃止」をことさらに訴えているわけではありません。そのようなものが必要とされる状況があり、その中で十分に機能する余地があるのならば、認定制度は「あってもいい」と私は思っています。
そこで、この制度に関して「なんか変」とかねがね思っている事項を二つほどあげ、最後に、どういうものなら「あってもいい」と思うのか、について書くことにします。


疑問その1. なぜオペレーティングシステムは認定対象外なのか?

プログラムの認定という制度を成立させている大前提は何かといったら、それは、

同じプログラムに同じデータを与えれば、どんなコンピュータでも必ず同じ結果が得られる(はず)

というアイディアです。これは間違いありません。だから、確認の審査官から「どんなプログラムを使ったか」を問題にされることはあっても、「どんなコンピュータを使ったか」を問題にされることはないのです。
で、この大前提を成り立たせているものは何かといったら、それは( Windows とか Mac とか Linux とかのような)いわゆるオペレーティングシステム(以下「OS」)です。
一方、プログラム認定の対象に OS が含まれることはありません。

べつに、どこかに「OS は認定の対象外」と明記されているわけではありません(もしかしたらあるのかもしれません)が、それについて審査された実績もそのようなルールもないのですから、明らかに「認定対象外」です。

これはどういうことかというと、先に言ったとおり、OS の正当性こそがプログラム認定制度を成り立たせている大前提なのですから、制度の側は OS については、無条件に、これを信頼する と暗黙の宣言をしていることになります。
「本当にそれでいいのか?」というのが最初の「素朴な疑問」です。

なぜこういうことになったか、はこの制度の成立事情に遡るとなんとなく見えてきます。
この制度が出来上がった当初、対象となっていたのはもっぱら「大型計算機」で、それにぶら下がった端末上でプログラムを使う、という図式しか想定されていませんでした。
このような状況下では、「どんな OS が使われているのか」について利用者が意識することはほとんどなく、またそれが問題にされることもありません。実際、その当時のプログラム評定(その当時の言い方)の申請書に「使用電算機」を記入することはあっても、「使用 OS」を記入することはありませんでした。
「OS とは電子計算機に付いているもので、それと一体である」と考えられていたわけで、実際、そう考えていても特段の不都合はありませんでした(携帯電話を使っている人が「この電話機の OS は何なのか」と考えたりしないのと同じ)。

しばらくして構造計算プログラムの主流が小型計算機に移行し、「個々のコンピュータにそれぞれ OS がインストールされている」という状況になった後も、この基本的な考え方は変わりませんでした。
小型計算機の出始めの主流は NEC の PC98 シリーズですが、この頃には「使用電算機」の欄に「PC-9800 XX」という製品の型番を長々と列挙していました。さすがに、「使用 OS」を書く慣習はできましたが、しかし「MS-DOS のバージョン」が問題にされることはなかったはずです。OS というのは、ここでも、列挙された特定の型番のコンピュータに「付いているもの」だったのです。

この「使用機種」と「OS」の関係が逆転したのは、おそらく、マイクロソフト社の Windows が出て以降のことだと思います。
ある時期以降、「プログラムの動作環境」の欄の最初に「Windows XX」という「OS のバージョン」を書き、その後で「上記 OS が稼動するコンピュータ上でこのプログラムは動作する」と書くことが慣習化しました。
認定制度にとっての OS とは、当初は「意識もしない、だから問題にもならない」存在だったのですが、それがある時期から「意識せざるをえないが、しかし問題にはしない」に変わりました。いや、正確には「問題にしない」ではなく「問題にできない」です。
問題にできない理由の一つは、もちろん、それがすべて外国製だからであり、もう一つは、(とくに近年になって)OS のバージョンそのものが目まぐるしく変わってしまうからです。こうなっては、もう、この問題についてはどこまでも「スルー」するしかありません。

ただし、ここで認定制度の側に幸いしたのは、OS のシェアがマイクロソフト社の Windows によってほとんど独占されているという事実です。ここから、2007年の改革の目玉の一つになっている「審査機関による再計算」というアイディアが生まれることになりました。
設計者の側も審査する側もみな Windows のマシンを使っているのであれば、データを持ち込んで再計算するのはいとも簡単です。これは当然、「同じプログラムに同じデータを与えれば、どんなコンピュータでも必ず同じ結果が得られる」という大前提にのっかったシステムですが、さらにここでは「マイクロソフト社の Windows」というもう一つの踏み台にのっかったことになります。
もちろん、「マイクロソフト社の Windows を使用すること」などというあからさまな要求があるわけではありませんが、しかし現在の状況では、それ以外の OS を使用したプログラムの「審査機関による再計算」にはさまざまな困難がつきまとうことも事実です。
一国が掲げる制度として、これはやっぱり「なんか変」ではないかと、私は思います。

余計な話ですが、Windows の寡占状態がくずれた時に今の認定制度がどうなるのか、あるいは、Linux のようなオープンソースを基本理念とした OS 上で動く構造計算プログラムがあらわれた時、はたしてそれは大臣認定の対象になりうるのか、というのはかなり興味深い問題です。

これに対し、「OS そのものを認定することなど現実的に不可能」という反論があることは承知しています。まったくその通りだと思います。しかし、もしそうだとしたら、「プログラムを認定することなど現実的に不可能」という言い方だってあるのではないでしょうか?
そして、さらにもう一つの「現実的に不可能」もあるのです。


疑問その2. 認定プログラムにバグがあってもいいのか?

手元に日本建築センター「電算プログラム審査委員会 申請図書作成要領」(平成14年)という文書がありるのですが、その中の「性能評価の内容とその判定規準」の項に以下のような文章があります。

構造計算プログラムのプログラミング上の誤りが存在しないことについての確認は性能評価の対象外とします。なお、ここでのプログラミング上の誤りとは、プログラムのソースリストの記述における誤り及びコンパイル等における誤りを言います。

問題は、この「プログラミング上の誤り」が具体的に何を指すのか、ですが、一つの解釈は「いわゆるプログラムのバグのこと」とするものです。実際、上の文書の別のところには「プログラムのバグについて責任を負わない」という意味のことが書かれています。
これらのことを総合すると、認定する側(国)は「認定プログラムにはバグがあるかもしれない」と認めていることになります。

では、この「バグ」とはいったい何なのか?
「広辞苑 第5版」では「コンピュータプログラムにある誤り・欠陥」となっています。
そこで、上の文章を「欠陥」という言葉で置き換えてみると、「認定プログラムには欠陥があるかもしれない」となりますが、しかし、これで人を納得させるのは難しいでしょう。「欠陥がないかどうかを審査し、欠陥がないと認めたから認定したのではないか?」と言われることは目に見えています。
これに対し、「国が欠陥品を認定することはありえない」という立場(つまり「国の無謬性」)に立つのならば話はいたって簡単です。「それは欠陥ではなくバグである」の一言ですませることができますから。
しかし、ことはそんなに単純なのか、そもそも「バグ欠陥の間の線引き」などできるのか、というのが認定制度に関わる二つ目の「素朴な疑問」です。

「欠陥」というと反発され、「バグ」というと何となく納得する、というのは、たぶん「プログラムにはバグがあるもので、それを完全に排除するのは難しい」という共通認識が世の中にあるためでしょう。

ところで、上の「プログラミング上の誤り」にはもう一つの解釈もありそうです。
先に引用した文章には前段があり、そこには、「プログラムの性能評価とは、構造計算に用いられている諸数値や計算式が法令その他に適合するものであるかどうかを確認するものである」という意味のことが書かれています。その前段から続けて文章を解釈すると、

(審査する側は)プログラムの誤りについては確認しているが、プログラミング上の誤りついては確認していない

となります。
この「プログラム」と「プログラミング」の使い分けから分かるのは、「プログラム」とは「プログラミングの結果として存在するもの」ではなく、「プログラミングに先立って存在している何ものか」である、ということです。もっと分かりやすく言えば、「プログラム」とは「プログラムの仕様書」のことであり、「プログラムの誤りについて確認する」は「プログラムの仕様書の誤りを確認する」に同じなのです。
この点を踏まえて先の文章をもう一度書き直すと、

(審査する側は)プログラムの仕様書に誤りがないことは確認しているが、しかし、その仕様書どおりにプログラムが動いているかどうかは確認していない

となります。
プログラムの評価作業の大部分が「プログラムの仕様書の審査」に費やされている状況を考えれば、これは正しいのかもしれません。それなりにスジも通ります。また、そうだとすれば、「プログラムのバグに対して認定側には何の責任もない」のは自明の理です。

ただし、「本当にそう考えられているのかどうか」についてはよく分かりません。
個人的には、「プログラムの認定とはプログラムの仕様書の認定のことである」とするのはいささか無理があるような気がしています。また、認定側の考えがどうであれ、この制度が社会的にそのように認知されているとは言いがたい部分もあるでしょう。
しかし、繰り返しますが、もしこのような立場をとるのであれば、ここまで述べてきた「バグ」や「OS」に関わる制度上のややこしい問題はとりあえず回避することができるのです。


ここまで述べてきた「OS」と「バグ」こそが、プログラム認定制度が抱えている最大のアポリアです。これらの問題は、結局、

認定制度とは、プログラムの何を(あるいはどの部分を)認定しているのか?

という最も単純な問いに行き着くことになりますが、しかし、この問いに対する答えはどこにもありません。「考えるだけムダ」です。そういう意味においては、認定制度が抱える「トラウマ」である、と言ってもいいかもしれません。

そういうわけで、最後に、「ではどうしたらいいのか」について、思うところを手短に書いてみます。
認定制度の存続を前提とするのであれば、まず何よりも、これをもっと分かりやすいものにすべきです。
具体的には、

「目に見えるもの」だけを認定の対象にし、「目に見えないもの」を認定するのはやめたらどうか

ということになります。
この「目に見えるもの」とは何かというと、設計者なり審査官なりの目の前にある「構造計算書」のことです。ただし、その「内容」ではなく、目次構成を含めた個々の出力内容の「外見」「書式」です。
これを一定のものに統一することは「確認審査の効率化」に大いに利するはずです。そして、作成された構造計算書が定められた書式にしたがっていることが認められれば、そのプログラムを国が「認定」するのです。そういう形でなら、認定制度は「あってもいい」と私は思います。
(こういうことになれば、プログラム認定制度の「権威」は低下するでしょう。でも、認定制度の「権威」が低下して困る人、というのは世の中にそう多くはないはずです。)

で、その一方の「目に見えない部分」をどうするのか、ですが、これは本来、設計者なり審査官なりの個々人のスキルに頼るしかないものなのです。そして、必要であるのならば、それを制度的に補完すればいいでしょう。その任を「プログラム認定制度」に預けて「近道」をとろうとするのは間違っていると私は思います。
・・・と、こういうふうに書いてくると、これはもう、恥ずかしくなるくらいの「正論」に思えてくるのですが、違うでしょうか?

(文責 野家牧雄)