2011-06-22

仕様をよく考えること

ここ数年は、ろくに仕様を考えずに、いきなりコーディングに入ることばかりやってきたように思う。昔は仕様を考え、設計を検討し、工程を考えて、そういったプロセスをはっきり明確にするように心がけたものだ。しかしいつしかそういったソフトウェア工学的な情熱も冷め、できる限りそういった前準備を省き、コーディングをしながらアドホックに考えるということばかりやっている。

その意図はたぶん、「ソースコード=仕様書」主義なのだと思う。ソースコードとは別にドキュメントを作ると、改変に伴ってどうしてもソースコードとドキュメントとの間に食い違いが生じてくるし、その違いを埋める労力が必要になる。わかりやすくソースコードが書けるならば、わざわざドキュメントを書く必要は無いじゃ無いかというわけだ。プログラミング言語の表現力が向上し、昔より抽象的・概念的に記述できるようになってきたこともそれを助けている。機械可読な仕様書であるソースコードをより重視して色々工程を飛ばすことで、余計なコストをどれだけ削れるのかという挑戦をしていたわけだ。

しかし、その考え方も、そろそろ限界を感じている。

頭、体力、気力の衰えを感じる中、まだやったことが無い難しい課題に挑戦し、それでいて完成にまでこぎ着けるには、コーディングとそれ以外を分離して目の前の複雑さを低減しなければならない。でなければコーディング上の細かい問題と概念上の高レベルな問題との間を頻繁に行き来しなくてはならなくなる。思えば昔は解決すべき問題について考え、解決策を決め、それを明日の自分に手渡して、コーディングしてもらうというやり方をしていた。明日の自分は受け取ったものをどうやってプログラミング言語上で実装するかだけを考えれば良かった。やはりそれは楽だった。

結局、問題について考えるというプロセスを省くことはできないのだ。