確実な設定をどうやって実現するか

この日記にも何回か書いた気がするが、システム設定というものは「読み込まれてはじめて真偽がわかる」といった性質のものだ。だから、個人的には、設定を確認するためには「設定値を全てナメるようなテスト」を実施するしか無いと思っている。
とはいっても、リソースは有限であるし、そんなテストには膨大な時間がかかる。「バグを全て抽出するテスト」があり得ないように、「設定誤りを全て抽出できるテスト」は得てして非現実的だったりする。
言い換えれば、設定誤りと言うのは言わば設定のバグであって、バグをなくすことがほぼ不可能であるのと同様に、設定誤りを無くすことは不可能だ。人の注意力には限界がある。
現実的には「できるだけ多くの設定値をできるだけ少ないテスト項目でナメる」ような手段をとることが多い。
あらかじめ設定値を洗い出しておいた場合においては、設定違いを劇的に減らす方法はあって、それは2人に全く同じ設定値を渡して設定させ、設定後の値を比較すると言う方法と、設定値と設定後の値を比較できる仕組みを作っておくと言う方法が有る。まあ、この場合でも「あらかじめ洗い出しておいた設定値が誤っていた場合」には対処できない。

だから、通常は2つの方法を併用する。「現実的なテスト」と「設定のあらかじめの確認と比較」だ。
まあ、どんな方法を使っても、ひとつだけ確実に必要な機能があって、それは設定を全部エクスポートする機能だ。OS、DB、レジストリ、設定ファイル等、必要とされる設定は問答無用に出力できるべきだ。
システムを設計するときには、設定値の全エクスポートを意識したほうがよい。具体的には「エクスポートしやすい方法で設定値を保持するように設計する」事がよい。そして、「エクスポート時のデリミタを意識して設計すること」がよい。個人的には[TAB]をデリミタにすることを推奨するが、まあ時と場合によって異なるだろう。
またシステムを設計するときには、設定値が正しいかどうか簡単に確認する方法を用意しておくとよい。場合によっては設定の手順書に仕込んでおくことも効果的だ。コンピュータ名の設定箇所なら、そのコンピュータ名を使用してpingを簡単に実行可能なボタンをつけておくとか、手順書にコンピュータ名を用いたpingを書いておくとか。
まあそんなこんなで。