仕様書と仕様は違う

仕様を書き表したものが仕様書です。

なので,同じ仕様を示すのに,いろんな仕様書の書き方があります。

同じ仕様書を読んでも,読む人によって捉え方が異なります。理解の仕方が異なるのです。

それを同じように理解させようとすること自体が間違っています。

例えば,同じLSIの仕様書をハード屋,ソフト屋,規格屋が読むと,それぞれ理解の仕方は違います。

同じハード屋でも,マイコン寄りと,ペリフェラル寄りで違います。

一般に誤解があると思うのですが,ある仕様を表す厳密でかつ誤解や解釈のずれを生じないような仕様書は,これ書くことが出来ません。

可能な限り厳密に」なら可能ですが,「誰が読んでも間違いようがない」書き方はできません。

これは,うまく仕様書を書けないことに対する言い訳でしかないです。しかしながら,畑違いの仕様書を読む読者は,自分が想定された読者ではないことをはっきりと意識するべきです。

LSIのハードウェアマニュアルをソフト屋が読むなら,同表異義語(同じ単語が違う意味で使われる)などに対して充分慎重に。プログラミングマニュアルをハード屋が読むなら,勝手に内部構成を決め付けて読まないように。

熟練者は,このようなことを意識して,他人が仕様書を読んでどのように理解するのかに対して寛容でなければなりません。例えば若い人の理解はまっすぐで稚拙です。それを小ばかにするのは簡単ですが,そういう理解だからこそ誤解しやすい部分について適切な注釈を与えることができないなら,熟練者といっても名ばかりです。

大事なのは,他人が何を考えているかを想像することです。想像できる能力です。それが足りない人は,他人が自分と異なる理解の仕方をしていると安易に否定しがちです。その理解の仕方は間違っていると。

理解の仕方,解釈の仕方については答えがありません。それは結局タトエ話にすぎないからです。いったん書き表してしまったが最後,書き手の意図の大部分は失われ表現が一人歩きしていきます。

コトバの限界です。限界の無い涅槃を目指して数学が生み出されたようです。しかしそれを応用する科学や工学の世界には限界があります。

曖昧な仕様書をいい加減な理解で勝手に解釈し,でたらめに応用プログラムを書く。どこにも厳密さなんてありません。

ただし,特定のコミュニティ内では阿吽の呼吸があります。「こうやって書いておけばあいつらには充分だろ。」という暗黙のコンセンサスです。マイコン屋はマイコンの粗悪なデータシートを読みこなします。それができないのは畑違いです。

自分が理解できる仕様書を他人が理解できないのにはいろいろ訳があるということです。

興味のある人は,いろんな仕様書を読んでみるべきです。上司に「当然書くべきこと」と教わったことが書いてない物,もっと詳しく書いてあるもの,たくさんあります。「俺には関係無いよ」と無視しないで目を通してみることです。そうすると,自分がどこに立っているのかがだんだん分かってきたりします。