Edited at

ソースコードは設計書であり、コーディングは設計作業である

More than 1 year has passed since last update.

だから意味のない旧来の「詳細設計書」は消えてほしい、というお話。


前提

現場によって、いろいろと粒度や定義が異なるとは思いますが、この記事における旧来の「詳細設計書」とは、ソースコードに書くべき内容を日本語に書き下したものであったり、その「設計書」通りにソースコードを書けば正しいプログラムになることを前提にしている何か、のことを指します。


標記の件について

今さら私が主張するまでもなく昔から言われ続けていることではあります。

ささっとぐぐれば、いろいろな記事が出てきますし(以下は一例)

詳細設計書という名のゴミ | Gm7add9

「コーディングは設計か製造か」という考え方の違い - 人生は長い暇つぶし。

古くて著名なところでは、たとえばマーティン・ファウラーとか。


主張


なぜそのようなものが生まれるのか?

経験上からは、やはりソフトウェア開発を「モノづくり」に当てはめている現場ほど「詳細設計書」を「設計図」、ソースコードを「製品」として捉える傾向が強いのではないかと考えています。

ようするに、いわゆる「製造メーカー」関連の現場ほどそのような傾向が顕著です。いわゆる「ネット企業」ではあまりそのような考えをする人はいなさそうです。

(もちろんいわゆるネット企業でも、ながらくメーカー系で仕事をしていたという人も多数いてそこでの考え方が染み付いている人も少なからずいますので、いないわけではありません。)


何が問題なのか

単純に意味がありません。


「設計書」通りに作れば OK、が実践できている場合

現実的にそんなことはあり得ないと思いますが、仮にあり得たとすればしかし、単純に無駄です。「設計書」を書く労力でソースコードを書けばいいのです。

そんなことをいうと、それを書いた人がいなくなったらどうするのか、設計書は要らないのか、と返されるかと思いますが、違います。良く書かれた1ソースコードなら、それを自然言語に書き下す必要はなく、ソースコードを読むだけでこと足りるはずです。

ソースコードをちゃんと読めるプログラマばかりだとは限らない、だれでもわかるように「設計書」が必要だ、という反応も十分予想できますが、それは違います。良く書かれたソースコードすら読めないプログラマはそもそもプログラマとは呼べません。そのような人に大事なソースコードを読ませたり書かせたりしてはいけません。

実際に作る人以外でも読めなければならないという話もありますが、「実装」をしない人が「詳細設計書」を見ることの意味自体がそもそもわかりません。


「設計書」通りに作れば OK、が実践できていない場合

単純に、そんな「設計書」はゴミでしかありません。ゴミを作っても仕方ないのだからどうにかするべきです。

「設計書」通りに作れば OK となるよう努力する、という考え方もありますが、前述の通り私はそれを否定します。

また、「設計書」とソースコードがどちらも存在するとしたら、同期が取れていなければ意味がありません。しかし、「設計書」通りに作っても完成しない場合、「設計書」が間違っているのでそちらをまず修正すべきかとは思いますが、現実にはそうはならずソースコードの方を先にあるべき姿に合わせることも多々あります。そこから、修正後のソースコードを元に仕様書が修正されたり(または修正されなくてズレが生じたり)するわけです。

「実装」を元に修正される「設計書」に一体何の意味があるというのでしょうか。


結論

プログラマは専門知識を有した専門家であるべき、と私は思っています。

しかし、多くの場合、使う側にとっては単純作業をするだけの、いくらでも替わりのきく部品でしかないのが現実でしょう。

また、プログラマを供給する側の派遣会社やシステム開発会社にとっても、一束なんぼの商品でしかないことが多いでしょう。

そして、プログラマ自身にも問題があります。その一束の中の一人ひとりは、特に技術に興味もないしよくわかってもいないけど、なんとなく他の職種より条件がいい2とか、なんとなく好きだからとか、そんな理由でなんとなく続けている人が多いのが現実です。先ほど『良く書かれたソースコードすら読めないプログラマはそもそもプログラマとは呼べません。』といいましたが、残念ながらそもそもプログラマといえないような人が業界の底辺にはたくさんいるのです。

結局、現状で意味のない「設計書」が生み出される現場の意識というのは『「実装」は刺し身にたんぽぽをのせるのと同程度の作業』であり『「プログラマ」なんてアレだから「設計書」通りに「実装」すればいい』と思われているのであり、『そこに充てられる「プログラマ」の大半は残念ながら実際にアレ』ということなのでしょう。

胸を張って自身をエキスパートだと言えるプログラマがもっともっと増えて、プログラマはソフトウェアを設計・開発するエキスパートであるという認識が業界を覆い尽くすようになって欲しいです。そうすれば、意味のない「詳細設計書」は自然と消えていくに違いありません。





  1. 曖昧な表現ですいません。が、そこを定義しだすと話が広がりすぎますし、明確な結論が出るわけでもありませんので。 



  2. 実際、いくらブラックブラック言ったところで、未経験者でも悪くて十数万の月給がもらえる業界ですから。