はじめに
2020年10月01日に発売されたこちらの書籍を、翻訳者の角さまから献本いただきました。 通称「ボブおじさん」で知られるRobert C. Martin氏の書籍で、Clean Code / Clean Coder / Clean Architecture に連なる第4作です。
Clean ArchitectureはRettyでも新規サービス開発で取り入れており、有志メンバによる輪読会も社内で行っていました。 独特の文体と、時に考えさせられる鋭い指摘は社内でもファンが多いと思っています。
"Clean Agile"はどんな本か?
書籍を読んでの私の印象は下記でした。
アジャイルの基本的な説明が短くまとめられ・網羅されていますが、ボブおじさんからみたコメント・評価が主な内容であり、アジャイルの入門書にはやや難しいかもと感じました。 一方で「アジャイル開発ができている」と感じている実践者が書籍を読むことでボブおじさんと心の中で対話し、なぜアジャイルの原則から外れてしまったのかを内省するための本だと思います。
これは他のCleanシリーズの位置付けとも近しいのかなと感じています。 例えばClean Architectureも基本的な考え方が丁寧に説明されていますが、"Clean Architecture"という正しい設計を知るための本ではありません。 Clean Architectureの初学者は上の図を正確に理解しようとし、「4層でないといけない」「この責務はどこにおくべきか」といったことを議論しがちですが、書籍では「依存性を一方向にしろ」としか基本的に言っていません。 この本も「アジャイルとはこういうことである」という観点が丁寧に説明されています。
アジャイル開発は習得が困難と言われていますが、良かれと思って変えたルールがアジャイルの基本思想から遠ざけてしまうことが原因にあると思っています。私自身も過去にたくさん経験がありますし、Rettyでも過去に踏み抜いてきたことがありますし、なんなら今でも踏み抜いてしまうことがあります。 そうは言っても「アジャイルにできているかなんて相談できる相手が簡単にいないよ」という方向けにボブおじさんが壁打ち相手になってくれる、本書はそんな書籍です。 サブタイトルにある「基本に立ち戻れ」がこの本の主題であり、書籍を通して一貫して書かれているメッセージだと思っています。
アジャイルの基本とは何なのか
書籍の2章で顧客と開発者の権利章典が紹介されていますが、これを実現するために技術面・コミュニケーション面で必要な手をうち続けることがアジャイルの基本なのだと思います。少し長いですが下記に引用させていただきます。
[顧客の権利]
- 顧客には、計画のどの部分に関しても、いつまでに、何が、どのくらいのコストで達成できるかを知る権利がある。
- 顧客には、全プログラミング期間を通して、最高価値を手にする権利がある。
- 顧客には、自らが書いた再現可能なテストを通すことで、システムが機能することをちゃんと証明してもらい、現行のシステムの進捗度合いを知る権利がある。
- 顧客には、考えを途中で変えて機能を差し替えたり、プライオリティを変更したりする権利がある。その際に特別に多額の出費は必要ない。
- 顧客には、スケジュールの変更があったら連絡を受ける権利がある。なお、その連絡は、最初に決めた期限を守るため、どうスコープを減らすのかを決めるのに手遅れにならないよう、十分速やかに行われなければならない。そしていつでも発注を取り消し、その時点までの投資に見あう、ちゃんと機能するシステムを手にする権利がある。
[開発者の権利]
- 開発者には、何が必要とされているのかを明確なプライオリティと合わせて知る権利がある。
- 開発者には、常に質の高い仕事をする権利がある。
- 開発者には、同僚や上司、顧客に助力を求め、それを受ける権利がある。
- 開発者には、自ら見積もりを行い、またそれを更新する権利がある。
- 開発者には、責任を割り当てられるのではなく、責任を自ら引き受ける権利がある。
アジャイルが成立した歴史を知るための本としても面白い
書籍の第1章は「アジャイル入門」として有名なアジャイルソフトウェア開発宣言がどのように成立したのかが紹介されています。 今でも大きな影響を与えるアジャイルソフトウェア開発宣言が作られた会議を指して「勉強会のようだった」とか、「ここまで広がると思ってなかった」と当事者の一人から語られることは面白かったです。「ある日ビッグバンのようにAgileが生まれ、世界中に広がった」と勘違いしそうになりますが、今では当たり前に行われていることが、先人たちの様々な試行錯誤の上に成立したものであることを改めて感じることができます。
終わりに
Rettyでもアジャイルな開発が継続してできるよう、時に基本に立ち戻り・日々の難題に向き合って試行錯誤を繰り返しています。 この書籍を読んで「こんな開発をやってみたい」「自分なりのアジャイルなやり方を追求したい」という方がいらっしゃいましたら、ぜひ一緒にやっていきましょう。