ソースが仕様書にならないのは何故か

 まず、これこれこういった理由だからソースは仕様書になりえないから、仕様書は必要なんだよということを言いたいのではない。逆に私は、できるだけ仕様書を減らしたいたちだ。
 私は仕様書を完璧に整備しているプロジェクトにほとんどかかわったことがない。いや、それぞれのプロジェクトでは仕様書の整備をしようとしているのだが結局は「それはソースを見ないとわからない」となる場合が少なからずあったりするのだ。つまりは、仕様書が不完全なのである。そんな仕様書ならないほうがいい。
 特に個々のモジュールに対して記した仕様書はいらないと思っている。eXtream Programingでもいらないという流れがある。にもかかわらず、何故仕様書を作ろうとする動きが減らないのか? それはソースが仕様書にならないからである。というか、なるようなソースを書いていないのだ。
 では、そもそもプログラムとはなんだろうか? それは、究極的には以下のように言い表わせるだろう。

ある入力に対してある処理を行い出力するもの

 当たり前といえば当たり前である。だが、仕様書にならないようなソースからはその雰囲気はかもし出されているだろうか?
 以下は、私が以前Rubyで作ったBBSのCGIの要のファイル「bbs.cgi」の全プログラムリストである。

#!/usr/bin/ruby -Ke

require 'bbs.rb'

begin
  BBS.new.run
rescue
  BBS.error
end

 もちろんBBSに必要な処理はbbs.rbファイルにBBSクラスとして定義しているわけであるが、まず「run」メソッドはBBSに関する業務を一手に引き受ける玄関メソッドであることが、すぐに察しがつく。そしてその戻り値に特別に意味がないことも。そして、例外が発生することがあり、それを処理するメソッドが「error」である。このような積み重ねこそが仕様書になるソースではなかろうか?