非エンジニアと設計書について2

さて前回の続きです。


あれから色々書かれているなぁw
他にも色々ありそうだけど全部回るのはやってられないw
http://blog.goo.ne.jp/hishidama/e/3118f6e7161f486700c5f05e21b5ce4f
http://www.artonx.org/diary/20140311.html#p01
http://kiyokura.hateblo.jp/entry/2014/03/10/233519


設計書が必要不必要は状況によって変わるけど、仕事だとやっぱり必要だと思う。
Webサービス系だとサーバの話とか、組み込みだとどのハードウェアを使っているやらメモリマップやら、コード以外でまとめておかないと分からない事だらけだし。
OSSでよくあるようなコード単独でも問題ないプロジェクトだったら、仕様書なんてどうでもいいけどね。


さて、前回からの続きに入ろう。

Github

今会社でのプロジェクトでは最近よくありそうなパターンで、Githubを使っている。
開発にはWIPを使ってコードレビューをしつつ開発もしている。Githubマジで便利。
ちなみに、個人でもGithub使っているけど、個人だとWIPとかする意味がほとんどないので、ちょっとさみしいかな。

仕様書

基本仕様書とか外部仕様書、内部仕様書とか詳細仕様書とか、色々言い方はあるけど基本的に仕様書はMarkdownやそれに類するテキスト形式のドキュメントを作っている。
もちろん、コードから自動ドキュメント生成も行っている。RubyだったらRdocとかYARD、JavaならJavadocとかああいうのに当たる部分だ。


仕様書をGithub上で管理するのにはいくつか利点があると思っている。

  • 変更履歴が管理できる
  • Markdownで書くとGithub上で整形して見やすく表示してくれる
  • Excelなどのツールを使う時のように無駄にドキュメントを頑張らなくても良い


ちなみに、どうしても事前に仕様書を完璧に出来ないという悩みはあります。
今のプロジェクトなんかまさにこれ。
実際すでに事前の仕様からは大きく離れていたり足りない部分が多々出てきてますが、ここについては一旦落ち着いてから仕様書を更新するつもりです。
仕様書の役目は色々あるけど、開発後にプロジェクトの全貌を把握できるようにするのもその目的の1つだと思う。だから落ち着いてから仕様書を更新しても良いと思っています。
まあ、限度はあって衛生を作るとかの超お固いのだとダメだけどね。

テストコード

一部の意見だとテストコードさえあれば仕様書なんかいらない、とかの意見があったけどこれには反対だ。
仕様書を書く書かないにかかわらず、テストコードは必要だよ。


そもそも、仕様書とテストコードは本来関係がない。仕様書はプログラムの目的や設計、実装に必要な知識をまとめた文章だ。
テストコードは実装したコードが仕様にしたがって正しく動いているかを保証するためにある。
これらは似ているけど明らかに目的が違う。


ちなみに、今の仕事はまだ開発中なので当然テストコードは足りないけど、それでも書いていますよ。

安心感がほしい

テストコードを書くのはエンジニアとして安心感がほしいから書くのだ。
仕様書もテストコードと同じで安心感がほしいから書く。
仕様書がもたらす安心感は、開発前、開発中、開発後のすべてのフェーズに関わってくる。


開発前は設計そのものに関わってくる。普通開発対象のプロジェクトは誰かが開発をエンジニアに依頼するんだが、依頼者は通常非エンジニアだ。
非エンジニアの要望は当然めちゃくちゃなので、この要望から定義をしないとダメだ。この役目を担うのが仕様書となる。


開発中は当然、開発に必要な情報が色々必要になってくる。それらをまとめた文章が仕様書だ。
ここが今回問題になっている詳細仕様書だと思う。普通に考えて必要だと思うんだけどなぁ。


開発後のフェーズ。これは会社だと新人が入ってきたりした場合、また何年も後に改修が入ったりした場合に必要になってくる。
現状のプロジェクトの状態を俯瞰して見れないと、引き継ぎや追加の開発なんか出来るわけがない。


結局安心感だよ、安心感。このために時間を割くのだ。面倒なのは百も承知。
この作業を省くと後々死ぬのが目に見えているけどなぁ。