マトモなソフト技術者ならBNFくらい常識にしよう

 人と具体的な設計のハナシをしていて気になるのは、データの個数をどうとらえているか。1データだけの処理なのか、複数データの処理なのかで、ハナシがまったく変わってくる。たいがい、最初の段階は、大雑把に複数データのハナシをしているんだけど、どこかでそれを1データに絞り込む必要が出てくる。絞込むには、別のデータが必要になったりするんだけど、データの個数を気にしない人は、別のデータが必要になることに気がつかなかったりする。

 また、同じコトバで表わされる処理が、あるところでは1データ用で、違うところでは複数データ用だったりということもしばしば。そういうことが原因で、システム全体ではあちこちで整合性に綻びが出てくる。上位設計がこういう人ばっかり(たいがいそうだけど)だと、後のフェーズでつじつまを合わせなければならない。それで、ここは1ですか複数ですかと聞くことになるんだけど、そもそも気がつかない人たちは何を聞かれているのか分からない。相手がお客さんやSEさんだったりすると、プログラマというのは下らないことばかり聞いてくるアホな人種だと思ってくれたりするのだが、その辺はしょうがないのであきらめることにしている。

 問題はプログラマさんで、この人達には分かってもらわなくてはならない。で、具体的なデータ構造を書かせたりするんだけど、みなさん、設計書のデータ構造は表で書くもんだと思っているので、ホワイトボードに向かって、「データ構造書いてみて」と言っても、躊躇してなかなか動かない。「購入=購入先+{品目+数量}」的な、BNF風味な書き方で例を示してあげると、その後、スラスラ書ける人と書けない人に分かれる。スラスラ書ける人は、BNF風味な表記(データ辞書の表記としてはわりかし一般的だと思うけど)に抵抗がないし、アタマの中が整理されている。書けない人は表記の意味が分からないか、アタマが整理されてない。
 その状態で自分で設計ができているつもになっているのはどういうことか分からないけど、いずれにしろ、BNF風味のデータ表記はコミュニケーションをとる上で有用でもっと使われていいハズだし、「BNFナニソレ?オイシイノ?」なエンジニアは少なくなってほしいと思う。