バグを作らないコーディング

[excite-imp]
以前、ここにバグを作らないために、テストコードを書けだとか何だとか書いたことがあった。
しかし今回話すバグというのは、いわゆるsyntax errorなどである。つまりは単純なスペルミスの系統のバグだ。
この系統のバグは作り込んでしまってもコンパイルで検出出来てしまうので、致命的なエラーには繋がりにくい。
だが、だからといって何万行もコードを書いてコンパイルをしていると、この手のエラーが何千件と出てくる場合がある。しかも、その原因は変数定義をしている1行だけだったりするわけだ。
単純な原因だが、エラーが何千行もあるとモチベーションが下がるし、ときには原因を探すのに意外と手間取る事もある。
それに対する普通の対策は「こまめにコンパイルする」である。エラーが紛れ込む範囲を小さくすることで探す手間を軽減してしまおうという発想だ。
だが、高機能なIDE(プログラミング総合環境)を使えば、さらに強力な対策が行える。例えばVisual Basicの環境などには、こまめなコンパイルを上回る機能が組み込まれている。
第一に、即時文法チェックだ。これは一行入力が終わったらその時点で文法チェックをしてしまうという機能だ。
言語仕様と高度に統合された環境でないととても実現できない機能である。さすがはリッチな機能大好きのMicrosoft製ソフトだ。
この機能は、文法間違えを即座に検出できるほかに、VBでは変数が大文字小文字関係ないという性質を利用して、大文字小文字をわざと間違えて書きいておき、即時文法チェックによる自動修正で、大文字小文字変換が行われたことを確認することで変数のスペルミスが無いかチェックするという使い方も出来る。
これは変数名のスペルミスを極端に減らせるという、素晴らしい機能だ。
第二に、インテリセンス機能。これは、クラスなどを書いていったそばから、メソッドなどをIDE側に自動的に登録していき、そのクラスを利用しようとしたときに候補リストを表示してくれるというものだ。この機能は、入力を始める前からスペルミスの可能性を消してしまうという究極の機能だろう。
テキストエディタコマンドラインツールには、とても真似できない。Emacsならば対抗できる可能性が少しはある程度だ。
時代はこうして言語と統合された環境を提示し、ヒューマンミスの可能性を最大限に減らしていく。
この先、この系統のアイディアで、さらに強力な機能が発明されるかは分からない。しかし、テキストエディタでスペルミスにおびえながらコンパイルを繰り返していた暗黒時代には今の環境は想像もできなかった。
このような光をもたらしたIDEを考えると、まだまだ新しいアイディアへの期待は大きいように思えてくる。