Comments
Description
Transcript
大手 IT ベンダー様アジャイル開発事例に学ぶ ~前編~
大手 IT ベンダー様アジャイル開発事例に学ぶ ~前編~ ■概要 アジャイルという言葉が世の中に出回り始めてから10年以上が経過しましたが、残念ながら開発 現場への普及率は今一歩のようです。日本でアジャイル型開発が普及しにくいのには、いくつかの原 因があるようですが、今回は、大手 IT ベンダー様のアジャイル開発現場で、継続的インテグレーショ ン(CI)とチケット駆動開発に触れる機会が有りましたので、前編、後編の2回に分けてご紹介させ ていただきます。 ■アジャイルとは アジャイルとは「俊敏な」という意味で、ウォーターフォール型開発手法の問題点を解消する視点 に立って提唱されている開発手法の一つです。ウォーターフォール型開発では、予め作業局面を分割 し、計画建てて開発を進める必要がありますが、昔に比べ、技術の興廃や変化が頻繁に起こる現在で は、作業局面を分割すること、また、最後までそれを維持して作業をすすめることが難しくなってい ます。この様な背景を受けて出て来たのがアジャイルという開発手法です。アジャイル型開発の最終 目的も従来のウォーターフォール型開発と同じで、プロジェクトを成功裏に終結させるということで すが、違いは、アジャイルソフトウェア開発宣言で謳われている「4つの価値」にあるように、変化 を柔軟に受け入れるという点です。 プロセスやツールよりも、個人と相互作用 包括的なドキュメントよりも、動作するソフトウェア 契約交渉よりも、顧客との協調 計画の順守よりも、変化への対応 アジャイルには、これらの理念に基づいた様々な手法やツールが導入されていますが、今回はその中 でも応用の場面が多いと思われる、継続的インテグレーションとチケット駆動についてご紹介させて いただきます。 ■継続的インテグレーション(CI) アジャイル型開発といえば、まっさきに思い浮かぶのが反復型開発かもしれません。これは、シス テム全体を3~4週間程度で開発できる範囲に区切り、その範囲の要件定義から製造、テスト、リリ ースまでを継続的、かつ繰り返し行う開発方法のことです。 この様に、アジャイル型開発では頻繁にリリースを行う必要が出てくるため、その手間が大きくな りがちです。そこで、考えだされたのが継続的インテグレーションと、それを実現するためのツール 群です。 継続的インテグレーションのコンセプトは、ビルド、テスト、インスペクション(構文チェック等) を頻繁に行うことで、問題の早期発見と対処を行い、リスクを最小化することです。しかし、これを 実現するには前述のとおり、多くの手間を必要とするため、通常はオープンソース・ソフトウェアと して配布されている Jenkins 等を利用します。 ■Jenkins Jenkins にはビルド、テスト、デプロイなどの機能がありますが、これらをスケジューリングするこ とで、様々なタスクの自動化を実現します。また、デプロイやテストの実行結果を視覚的にレポーテ ィングする機能がありますので、状況の把握に役立てることも可能です。 具体的に継続的インテグレーションを導入すると、どのように開発サイクルが変わるのかを現した ものが次ページの図1、図2です。 図1 Jenkins 導入前 図2 Jenkins 導入後 大きな違いは、製造フェーズで単体テストの自動化が実現される点です。ユニットテストツールな どを用い、予めテストコードを作成しておく必要はありますが、これにより、デグレード※1 等、問題 の早期発見、対応が可能となります。 また、結合テストフェーズでは、バグの修正、デプロイ、テストを繰り返すことになりますが、単 調なデプロイ作業にかかる手間が省力化出来るだけではなく、ヒューマンエラーの未然防止にもなり ます。 この様に、継続的インテグレーション及び Jenkins を導入することで、品質の向上と生産性の向上 が可能となり、最終的には品質の向上が期待できます。 ■おわりに 今回はアジャイルの概要と継続的インテグレーションについて、ご紹介させて頂きました。次回は チケット駆動とアジャイルの関係について解説させていただきたいと思います。 ※1 プログラムを手直しした際に修正部分以外の個所で不整合・不具合が発生したり、バージョン管理の手抜かりなどによって以前の状態に 戻ってしまい、修正済みだったバグが再発したりすること