ソースコードから動作仕様を読み取れるか?
拙著、『プログラマーのためのソースコードを読む技術』に対して、アマゾンでレビューがついたようです。星の数が少ないのは、人によって向き不向きがあることはわかっていましたし*1、レビュアーの最近の傾向を見ても何となくわかります。また、自分でもそれなりに思い当たる節があることも事実です。
細かな部分はともかく、今回は下記の点にしぼってコメントしたいと思います。
ソースを読まなければならないプログラマは、文法のチェックではなく、そのプログラムの動作仕様を読み取るのが目的です。
まず、プログラマがソースコードを読むのは、多くの場合文法のチェックではないことは間違いありません(文法のチェックを行わないといけない状況ももちろん存在します)。しかし、動作仕様を読み取ることが目的かというと、決してそんなことはないはずです。著書の中でも書きましたが、そのプログラムの仕様、すなわち、どう動くべきかは仕様書を読むべきであり、ソースコードから読み取ることができるのは、あくまでも実際にどう動くかだけです。
完全とはいえないまでも、不具合が極めて少ない状況まで完成度が高まったソースコードであれば、そこから仕様を読み取ることもできるでしょう。実際、そのようにしているケースも少なくありません。しかし、それはあくまでも、ソースコードを読む状況としてはごく限られたものに過ぎません。
そうした状況でない場合、ソースコードから仕様を読み取ったつもりになっても、それはあくまでも推測の域を出ず、実際にどう動くべきかはまた別の問題なのです。だからこそ、不完全なソースコードから(単なる文法チェックではなく)そのプログラムが実際にどう動くかを読み取り、仕様との差異があるかどうか、差異があるならその原因は何か、どうすれば改善できるのかを見出さなければならないわけです。そうでなければ、実際に動かしてみて顕在化した現象をモグラ叩きするしかなくなります。
実際にこの本を手にされた方の中には、自分が直面しているソースコードから仕様を読み取るテクニックを期待した方もいたのかもしれません。しかし、そうしたテクニックの多くは、類似の開発経験からのパターンマッチングが大半であり、ごく限られた分野に特化するのでなければ具体的な話をすることは不可能です。
