アジャイル開発への適用

アジャイルに最適な構成管理ツールとは?

アジャイル・マニフェストでは「プロセスやツールよりも個人との対話に価値をおく」とうたっていますが、ツールを否定しているわけではありません。ソフトウェアの品質向上や開発コストにソフトウェアの不具合が深くかかわっていることは言うまでもありませんが、アジャイル プラクティスの根幹の1つである継続的統合(Continuous Integration/CI)と継続的デリバリはソフトウェアの不具合の早期発見に大きく貢献します。継続的統合と継続的デリバリを成功裏に実現するには、『自動化』することが重要であり、反復的にビルドし、テストして、デリバリするためのツールチェーンが必要です。
では、ツールチェーンの中でも必ず必要となる『構成管理ツール』は、どのような機能を持つものがアジャイルに最適なのでしょうか?

柔軟なプロセスモデル

一口にアジャイルといっても、Scrum、 XP、 Lean、 Kanban、 FDDなど、その方法論やプロセスは多様です。加えて、プロジェクトが複数チームによって構成されれば、あるチームはウォーターフォール型、別のチームはアジャイル型といった、チームごとに異なる開発手法が採用されることもあります。また、アジャイルで開発した後に、特定顧客向けパッチの開発でウォーターフォール型を採用するといったこともあります。このような状況で利用する構成管理システムでは、同じコードベースに対しても、1.ユーザーが容易に多様なプロセスを定義できること、をサポートする必要があります。
アジャイルのような反復型開発では、構成管理ツールはブランチ間での人手によるファイルコピーではなく、2.「コード変更の継承」性をサポートする必要があります。反復開発の中では、多くのブランチが生成されるため、人手によるファイルコピーは、多くの時間を費やします。コード変更がシームレスにソースツリーの他のブランチに自動的に継承される、あるいは、特定のブランチではコード変更の継承を(一時的に)受け入れないようにできることが必要です。

アジャイル開発環境のコアプロセス 継続的統合/デリバリ

アジャイル開発環境のコアプロセスの1つが、継続的統合/デリバリです。これにより、前回のビルドから次のビルドまでの期間が短くなるため、ビルドの失敗を早期に発見できるようになります。また、前回のビルドからの変更が小さいので失敗原因の除去も短時間で済ませることができます。さらに、単体/結合テストを継続的統合/デリバリに組み込むことにより品質を担保し、要求機能の実現達成度を顧客の代表やQAチームに確認してもらうことも可能になります。
アジャイル開発で用いる構成管理ツールは、リリースのたびに物理的なファイルコピーを必要とするのではなく、リリースに必要なファイルのメタ情報を持ち、それらを変更不可能にした3.「スナップショット」の生成機能をサポートする必要があります。ジャイル開発の中では、頻繁にリリース作業が発生するため、スナップショット機能によって、リリースごとに新しく作成される物理的なファイルコピーを防ぐとともに、重複コードの増加を抑止します。
そして、ファイルやディレクトリの追加、削除、移動、名称変更、そして変更という全操作に対して、4.「アトミックなトランザクション(操作が中途半端に終了することがなく、かつ履歴が残り、ロールバックが可能な状態)」を提供できる必要があります。

課題(チケット)ベース開発

アジャイル開発手法の中心は、要求をテスト可能な個別のフィーチャに分割し、1つのイテレーション(Scrum用語でスプリントを指す)で動作確認できる粒度にしていく、という考えです。要求は、一般に課題管理システム(Issue-Tracking System/ITS)における課題(チケット)に分解されます。優れた構成管理手法では、コードなどの成果物の変更がどの課題と関連しているかを変更パッケージという形で、明確にすることを求められます。
アジャイル開発で用いる構成管理ツールは、5.課題管理システムを統合し、6.課題と関連した複数のコード変更をひとまとめに扱える必要があります(変更パッケージ)。たとえば、開発の終盤で、ある課題に基づいてフィーチャを入れたが品質が悪いため、今回のリリースではそのフィーチャを落とすことにした場合、変更パッケージがあれば容易に元に戻すことができます。

効率的なブランチ、マージ、リファクタリング

どのような開発プロセスでも、複数のリリースを目指した開発の最中に、市場からのバグ報告や要求によりメンテナンス・リリースを行う必要が生じることは、ままあります。この場合、メンテナンス・リリース用にブランチを作成し、そのバグ修正を開発中の複数のブランチにマージすることになります。
アジャイル開発はリファクタリングを奨励しています。そのため、各ブランチでのコード変更が頻繁に発生するので、マージする機会も多くなります。アジャイル開発で用いる構成管理ツールは、7.ブランチ間でマージが必要になったファイルを自動的に通知する機能を持つことと、8.全マージの履歴を維持し、トランザクション化できる必要があります。

個人用ワークスペース

アジャイルに限らず製品品質を担保する第一歩は、開発者一人一人のコード品質を担保することであり、構成管理ツールは、成果物の共有を促進するコラボレーションツールですが、開発者個人のこれらの仕事を行い易くするために個人用のワークスペースを生成できる機能を持つべきです。
アジャイル開発で用いる構成管理ツールは、9.個人用のワークスペースを新たに生成したり、ワークスペースを違うブランチに移動しても自動的にそのツリーの上位からコードを入手できる必要がありますAccuRevならGUI上でワークスペース(プライベートブランチとも言われる特別なストリーム)を他のブランチへドラッグ&ドロップし、「更新」ボタンを押すだけで、そのブランチのソースコードを取得できます。ワークスペース上でのドキュメントやソースコードの変更は、共有リポジトリに影響を及ぼすことはありませんが、リビジョン管理は完全に行われています。また、他の開発者による同じソースコードの変更は自動的に通知されるので、その開発者が実施した変更を自分のものと比較することができます。
アジャイル開発で用いる構成管理ツールは、10.ファイル、変更パッケージ、課題単位での比較をサポートできる必要があります。

以上の5つの視点と10のチェック項目(文中のハイライト部分)から、今使用している、あるいは選ぼうとしている構成管理ツールを見直することをお勧めします。

AccuRevがアジャイルに最適な理由

今使用している、あるいは導入を考えている構成管理ツールは、何点だったでしょうか?
AccuRevは、10個のチェック項目のすべてを満たしています。その主要な理由は、AccuRev特有の『ストリームアーキテクチャ』にあります。ストリームアーキテクチャは、各開発フェーズを表現するストリームを自在に繋げられる自由度があり、変化するプロセスを表現することに長けた、ユニークなGUIです。AccuRevなら、ソースコードなどの成果物あるいは課題が開発プロセスのどのフェーズにあるかが即座に確認できます。アジャイル開発にピッタリのAccuRevをぜひお試しください。

アジャイル開発にピッタリのAccuRev ストリームブラウザーにおいて、あるフェーズで処理中の課題を確認している様子

アジャイル開発にピッタリのAccuRev ストリームブラウザーで、あるフェーズで処理中の課題を確認している様子

構成管理・変更管理ツール AccuRevに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
accurev-info@techmatrix.co.jp

CONTACT

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。