アジャイル開発におけるドキュメンテーションの実際(1) ―― 本当に必要ですか? そのドキュメント
要求仕様書や設計書から取り扱い説明書(マニュアル)まで,システム開発ではさまざまなドキュメント(文書)を作成する必要がある.特に,ウォータ・フォール・プロセスによる開発の場合は,各開発工程においてドキュメントを作成し,それを次工程に引き継ぐことになる.それでは,分析 - 設計 - 実装 - テストを繰り返しながらスパイラルに開発を進めるアジャイル開発の場合は,どのようなドキュメントをどのように作成しているのだろうか? 本連載では,アジャイル開発とウォータ・フォール開発の両方を経験している筆者が,アジャイル開発におけるドキュメントの位置づけや作成方法について解説する.(編集部)
「アジャイル開発注1ではドキュメント(文書)は作らない」と思っておられる方も多いのではないでしょうか.「ドキュメントを作らないアジャイル開発は適用できない」というような意見を聞くこともあります(最近はあまり聞かなくなったが).確かに,2001年2月にKent Beck氏らによって宣言された「アジャイル・ソフトウェア開発宣言」では,「包括的なドキュメントよりも動くソフトウェアを価値とする」と述べられています.しかし,アジャイル開発ではドキュメントを作らないわけではありません.「アジャイル開発では必要最低限のドキュメントを作成する」と考えるのが適切です.
注1:アジャイル開発についてはこちらの記事を参照.
では,「必要最低限のドキュメント」とはどのようなドキュメントなのでしょうか? この問いの絶対的な答えはなかなか無く,「コンテキスト(文脈)による」ということになってしまいます.しかし,それぞれのコンテキストに合った「必要最低限」を決めるための考え方は確かに存在します.本連載では,この考え方をいくつかの例を交えて説明したいと思います.
●そのドキュメントは何のために作りますか?
皆さんは,ソフトウェア開発の過程で,さまざまなドキュメントを作成しておられると思います.それらのドキュメント一つ一つについて,そのドキュメントが作成される目的について深く考えたことはあるでしょうか? 「会社のルールで決まっているから」,「契約で決められているから」という理由だけで作成しているドキュメントはないでしょうか?
「そんなことはない.きちんと目的を持って作っている!」という声が聞こえてきそうですね.では,質問の仕方を変えてみましょう.
「そのドキュメントは,いつ,誰が,何のために必要とするのでしょう?」
アジャイル開発を行うかどうかとは関係なく,ドキュメントを作成する際には一度はこのことを深く考える必要があります.ドキュメントは必ず,「誰かの役に立つ」ことを目的として作成される必要があるからです.誰がどのようなときに,どのような目的で活用するのかを答えられないドキュメントに,存在意義があるのでしょうか?
●ソフトウェア外部設計書は「いつ」,「誰の」役に立つのか?
例えば,ソフトウェア外部設計書としてクラス図,シーケンス図,ステートマシン図をドキュメント化しているとします.このドキュメントについて,いつ誰の役に立つのかを考えてみましょう(図1).
図1 そのドキュメントは,いつ誰の役に立つの?

まず,プログラムを実装する際に,このドキュメントを見たいですよね.これから実装するプログラムの設計を理解するために,このドキュメントは役に立つはずです.
その後は,誰がこのドキュメントを必要とするのでしょう? このプログラムを将来保守する人にとっても,ドキュメントは役に立つはずです.何年か後にプログラムを変更する際にも,当時の設計意図を理解することができます.変更するのが当時プログラムを設計した本人だったとしても,忘れていたことを思い出すために役に立つでしょう.コンテキストによっては,ほかにも必要な人がいるかもしれません.
このように,たいていのドキュメントには,複数の人が異なる目的と時間軸でかかわります.これを理解することが「最低限必要なドキュメントとは?」を考えるかぎになります.