アジャイルソフトウェア開発宣言に楯突く

最近、たまたま「アジャイルソフトウェア開発宣言」について深掘りして考える機会がありました。アジャイルソフトウェア開発宣言においては、

包括的なドキュメントよりも動くソフトウェアを価値とする

の部分に以前から引っかかっていたのですが、よい機会なのでnoteで少し書いてみようと思います。

※私自身はドキュメントを残す文化にどっぷり浸かったキャリアを歩んできたので、バイアスが掛かっていることをご承知ください。

何を価値とするかが異なる

アジャイルソフトウェア宣言における「包括的なドキュメントよりも動くソフトウェアを価値とする」が意味するところは、無駄なドキュメントを極力減らした上で「動くソフトウェア」が解決する課題に集中せよ、ということである。

しかし、これはフェアではないと私は感じている。「動くソフトウェア」が解決する課題と「包括的なドキュメント」が解決する課題は本質的に異なる。動くソフトウェアが解決する課題はプロダクトが解決する課題であるが「包括的なドキュメント」は「設計を明文化することでコードでは表現できいない制作の意図を残す」ことである。

エンジニアリングにおいてこの2つはお互いの工数を取り合うので比較されているが、それぞれが獲得しようとする価値は本質的に違うのではないか。

ソフトウェアよりもドキュメントのほうが遥かに寿命が長い

システムがシンプルであればあるほど、そのシステムの寿命が長くなることは容易に理解できると思います。30年前の書籍は残っていても、30年前のソフトウェアの実行環境が無い、なんてことはザラですし、もっと言えば楔文字は5000年前から使われていますが、いまだに現代に当時の情報を伝えています。ハードディスクが1000年持つといっても懐疑的ですが、石碑が1000年持つ、と言ったらそそれほど違和感は感じないのではないでしょうか。

ドキュメントを最小限にしてソフトウェアを書くということは、「動くものを作るために工数の天秤にかける」という点では適切ですが、合わせてドキュメントを最小限にするという意思決定の本で「些細なことでも現在の設計や、それい至った意図を記録する」ことも省かれてしまうことを危惧してしまいます。

この「些細なことでも現在の設計や、それい至った意図を記録する」を完全に残すにはドキュメント化に対してかなり工数がが必要となりますが、必要性があるならば「包括的なドキュメント」も作成すべきではないでしょうか。

加速する現代に合わせたアジャイルと時を超えるドキュメント

アジャイル開発の本質は、短い開発を繰り返すことで最終的な成果物の完成を目指す、というものですが、これは現代の技術革新、そして社会の変革が加速度的に上がっており、アジャイルはこれにソフトウェア開発が追従するための手段であると考えます。一方で、ドキュメント自体は時を越えて数十年・数百年と存在し続けます。プロダクトの「なぜそれは作られたのか」について、何か未来に託すのだとしたら、ソフトウェアよりも包括的なドキュメントのほうがロマンがあります。

まとめ

アジャイル宣言の「動くソフトウェアを重視する」理念と、それでも包括的なドキュメントには重要性がある、という点について私の見解を述べました。まとめると下記の2点になります。

  • アジャイルは即時の問題解決に焦点を当てるが、ドキュメントは長期的な知識保存に不可欠である

  • アジャイルの柔軟性とドキュメントの包括性をどうバランスさせるかが重要である

そもそも、動くソフトウェアと包括的なドキュメントは考え方としては相反するものでない。どちらも最低限ではなく適切に統合されるべきで、これによりソフトウェア開発の質が向上すると考えるでしょう。

この記事が気に入ったらサポートをしてみませんか?