単行本(ソフトカバー)この商品を含むブログを見る色々と噂を聞いて興味を持ったので、積ん読の待ち行列を追い越して読みました。タイトルからご察しの通り、例えば次のような、「いまだにウォーターフォールで開発していて、10年前に流行った某フレームワークを使っていて、当然テストコードも無いです。このままでは良くないので変えたいんですが、何から変えていけば良いでしょうか?」的な課題に立ち向かう勇気をもらえる本だと思います。レガシーコードから脱却する一言で言ってしまうと「レガシーコードから脱却する」ということは、「テスト駆動開発できる状態を目指す」ことであると私は読み取りました。レガシーコードから脱却するためのテスト駆動開発テストファーストに徹することで、テストコードを仕様書として扱えるようになり、変更に柔軟なコードへリファクタリングできるようにしていくと、設計が最後に完成します。これらは常にCLEANなコードを意識し、これを維持することで実現できると筆者は述べています。9つのプラクティスのうち後半の半分がCLEANコードによるテスト駆動開発の話です。疎結合Encapsulated(カプセル化)Assertive(断定的)Nonredundant(非冗長)オープン・クローズドの原則CLEANなコードを維持して前述のような開発が実現できれば、いよいよレガシーコードをリファクタリングし脱却に向けて動き出すことができるようになります。レガシーコードのリファクタリングはオープン・クローズドに行うべきだと述べています。オープン・クローズドの原則とは以下の意味です。Mediumレガシーコードから脱却するためのアジャイル開発レガシーコードに囲まれた状態で、いきなりCLEANコードを意識してテスト駆動開発しましょうと言っても実現は難しいと思われます。そのベースを作るのがアジャイル開発です。9つのプラクティスの前半の半分がアジャイル開発の話です。本書は2部構成になっており、9つのプラクティスの解説に入る前の第1部ではソフトウェア開発の業界が抱える課題や、そこからアジャイル開発が生まれた経緯、筆者が重要と考えることをアジャイル開発から出発して9つのプラクティスとしてまとめた経緯について、丁寧に述べられています。小さな単位でビルドすることの目的は可能な限り早くタスクを完成させることであり仕掛り中の作業を制限することである。アジャイルはいかにスコープを箱に収めるかだ。作業対象の範囲をいかに限定するかだ。ここで重要なのは、スコープや仕事の単位の観点で小さくしようと努めることであり、時間の単位ではない。継続的インテグレーション開発プロセスをアジャイルに変えることは、体制を変えてイベントを導入するだけではないということは今さら説明不要だと思います。いつ統合するかは、アジャイルやスクラムの実施有無や、イテレーションやスタンドアップミーティングなどとはほとんど関係ない。2週間のイテレーションで開発していて、各チームがコードを自分たちのブランチに統合し、年末にすべてのブランチを統合しているんら、悪いニュースがある。あなたはウォーターフォール開発をしてしまっている!人もコードもプロダクトも、小さな単位のイテレーティブな開発を手に入れることが、テスト駆動で開発をするための土台であるということだと思います。9つのプラクティスレガシーコードからの脱却のためにテスト駆動開発を取り入れる。テスト駆動開発を取り入れるために、まずアジャイル開発を取り入れる。その流れに沿って必要なことを分解し整理したのが9つのプラクティスです(あくまで私の理解ですが)。やり方より先に目的、理由、誰のためかを伝える小さなバッチで作る継続的に統合する協力しあう「CLEAN」コードを作るまずテストを書くテストでふるまいを明示する設計は最後に行うレガシーコードをリファクタリングする書籍の冒頭の「はじめに」で筆者は次のように述べている。成功するチームと失敗するチームの差は、プラクティスがなぜ重要なのかを理解していたかどうかだテスト駆動開発でのテストコードの作り方やアジャイル開発でのユーザーストーリの作り方などの具体的なやり方なども解説されていますが、大事なのは具体的な手法をなぞることではなく、プラクティスの本質を理解することにあります。一度読んで満足するものではなく何かあった時に読み直し、書かれている概念的な要素を反芻して腹落ちさせることで理解を深めていく書籍であると思いました。手元に置いて繰り返し読むことにします。翻訳した吉羽さんのスライドです。読後に改めて読むとまた理解が深まります。(1)リンク・転載は法令・公序良俗に反しない範囲で自由です/著作権は全て著作者に帰属しますはてなブログをはじめよう!radiocatさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。