あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。
TDDやリファクタリング、CI、ペアプログラミングなどのXPの実践は創発的設計をサポートし、アーキテクチャの進化を可能にする。継続的デリバリに必要なのは第一にCIで、メインラインに毎日コミットすることだ。きれいでしっかり考えられた、そして、よくテストされたコードを書けることは開発者にとってもっとも重要なスキルだ。
北米のThoughtWorksで技術部門のトップを務めるRachel Laycock氏はAgile Summit Greece 2017でアジャイルの技術的実践について語った。InfoQはこのカンファレンスを記事やインタビューで取り上げている。
InfoQは氏に進化的アーキテクチャ、継続的デリバリ、技術的スキルについて話を聞いた。
InfoQ: 進化的アーキテクチャを実現するためにはどのようなことをすればいいのでしょうか。
Rachel Laycock: 進化的アーキテクチャは新しい原則を導入します。例えば、アーキテクチャの決定を最終責任時点に行うことやアーキテクチャの決定を適合度関数を使ってテストすること、痛みを先に経験すること、などです。この最後の原則はエクストリームプログラミングで導入されたものです。何かが痛みを生み出すなら、それをより頻繁に経験することで、自動化による改善をもたらし、痛みが無くなります。そして、ここから継続的デリバリが生まれたのです。環境の構築と配置のために長く待たされるという痛みがデプロイを頻繁に行おうとすることで改善されました。環境構築とデプロイのための新しいツールが生まれ、ガバナンスのプロセスのような動きを遅くする障害は自動化されました。単なるボタンクリックでデプロイできるようになったのです。これは全て痛みを先に経験することで生まれました。
新しい原則にもかかわらず、継続的デリバリとXPは関連があり必要性があります。漸進的にビルドすることや、モジュール性、ビジネスの能力を中心に組織化されること、そして実験を大事にすることなどの基底にある考え方が重要です。しかし、TDDやリファクタリング、CIやペアプログラミングのようなXPの実践はアーキテクチャを進化させるための創発的設計をサポートします。アーキテクチャの決定がされ、その決定が"最終責任時点"で必要とされる場合、モジュール性が、チームの全員が理解でき変更できるきれいなコードが必要であり、それは、XPの実践によって作ることができます。進化的アーキテクチャを採用する場合、私にとっては、継続的デリバリとXPは"and"であり"or"ではありません。
InfoQ: 継続的デリバリでもっとも価値がある実践は何でしょうか。
Laycock: XPの実践が継続的デリバリを支えます。継続的デリバリを始める人たちが最初にやるのは、多くの場合、継続的統合サーバとパイプラインを作ることです。これは単なるツールであり、CIの実践、つまり毎日メインラインにコミットするということが必要です。しかし、コミットしたコードに対する信頼が必要になります。これは品質の問題であり、エラーを起こさないようにするにはテストが必要です。すでに書かれたコードがある場合やレガシーなコードを抱えている状態で継続的デリバリを実践するなら、大抵の場合は、テストはありません。これはもっとも根本的な問題です。私が見てきた理解可能なきれいなコードは多くの場合、TDDで書かれていました。
継続的デリバリはラストマイル問題を解決してします。新しいツールが導入してされ、そのツール環境と配置を管理されます。しかし、これらのツールをサポートするエコシステムの中では、テストを書くべきです。
InfoQ: 開発者にとってもっとも重要なスキルは何でしょうか。
Laycock: きれいでしっかり考えられた、そして、よくテストされたコードを書けることです。結合と凝集の難点についてしっかり理解していることです。そうすることで自分の言葉の微妙な違いを適用することができます。基本となるスキルがなければ、言葉は変わってしまいます。
InfoQ: これらのスキルを研ぎ澄ますにはどうすればいいでしょうか。
Laycock: 実践、実践、実践です。TDDを学ぶのは難しいです。しかし、実践を積めば、習熟し普通のことになります。そうなって初めて、TDDを使うか使わないかについて実利的な意思決定ができるようになるのです。一般論でいえば、TDDを実践するべきなのは、うまく実践できれば、リファクタリングを強制できるからです。リファクタリングは将来"レガシー"なコードを書いたり、泥団子を作ったりするのを避けることができます。泥団子は確実に私たちの動きを鈍くします。
InfoQ: 技術的な実践の中で新しい開発の先頭に立ち続けるにはどうすればいいでしょうか。
Laycock: 継続的デリバリはDevOpsが生まれ、技術的な実践の中心はあまり変わらなくなりました。一度学べば、それをソフトウェア設計やドメイン駆動設計やREST、進化的アーキテクチャなどのアーキテクチャに応用することができます。
Rate this Article
- Editor Review
- Chief Editor Action