マーチン・ファウラー氏が語る、21世紀のソフトウェアデザインとしてのアジャイル開発(後編)。Agile Conference tokyo 2011

2011年7月26日

アジャイル開発に関する論客の一人マーチン・ファウラー氏は、7月20日にテクノロジックアートが主催したイベント「Agile Conference tokyo 2011」で「21世紀のソフトウェアデザイン」をテーマに基調講演を行いました。

fig

前編に続いて、ファウラー氏の基調講演の様子を紹介しましょう。

(本記事は「マーチン・ファウラー氏が語る、、21世紀のソフトウェアデザインとしてのアジャイル開発(前編)。Agile Conference tokyo 2011」の続きです)

継続的インテグレーション

アジャイル開発の中で重要な「継続的インテグレーション」と「継続的デリバリ」について話そう。まずは継続的インテグレーション。

fig

複数のプログラマが集まって開発しているソフトウェアでは、それぞれのプログラマのコードをマージする作業に苦労する現場を多く見てきた。

あるソフトウェアプロダクトに二人のプログラマがいたとすると、コードを2つに分岐し、その分岐をそれぞれのプログラマが開発を進めていく。しかしコードをマージしようとするときには大変な作業になる。同じ個所を変更していてバッティングする可能性もある。

マージのためのツールを使えば作業は容易にはなるが、コードの見かけはマージできても、意味として本当に問題なくマージされているかどうかはテストして確認するしかない。

しかし、「マージは難しい」とあまり信じ込むのもよくない

マージは分岐から時間がたつほどに難しくなる、であれば、難しくなる前に、頻繁にマージをすればいい。これを「Continuous Integration」(継続的インテグレーション)と呼んでいる。

fig

継続的インテグレーションでは、どんな小さな変更もメインラインに反映するため、小さい規模のマージがひんぱんに発生する。すると、最後に賭けのように、さあどうだ、という大規模なマージをする必要がなくなる。そこに継続的インテグレーションの意味がある。

継続的インテグレーションのもうひとつのアドバンテージは、例えば二人のプログラマがそれぞれ開発しているコードのどこかに非互換性があったとする、そこに両者がいつ気がつくか? 継続的インテグレーションによって両者がひんぱんにマージをし、コミュニケーションをしていれば早期に発見できるだろう。そうでなければ、最後の方になって発見することになるかもしれない。

もう1つメリットがある。コードのリファクタリングをしようというとき、何かを変更するとマージのとき大変だからと慎重になってしまえば、コードの品質を高める機会が減る。何か問題があればすぐにそれを検知できる、という継続的インテグレーションの環境は、品質面でのメリットもある。

継続的デリバリ

継続的インテグレーションだけでなく、継続的デリバリの話もしよう。

継続的インテグレーションは、開発の途中での問題の早期発見、早期治療の手段といえる。しかしなら、そのコードが実際の運用環境で動作するとは限らない。開発環境と運用環境は違うことがあるからだ。

コードが運用環境に対応しているか(プロダクションレディか)を確認するにはテストが必要だ。テストを行えば、コードに問題がないという自信や安心が得られる。しかしテストには時間がかかるため、テストをするほど完成とデリバリが遅れる。そこにはバランスをとる必要がある。

そこで、シーケンスを作り、コンパイルとユニットテストからプロダクションまでをいくつかに分割して、デプロイメントパイプライン(Deployment Pipeline)を作るのはどうだろう。

fig

そして、パイプラインのテストは可能な限り自動化すべきだ。いつでもテストができるように完璧に自動テスト化する事をおすすめする。

Tags: DevOps アジャイル開発 システム開発

このエントリーをはてなブックマークに追加
ツイート
follow us in feedly





タグクラウド

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本