アジャイル開発における継続的インテグレーション
継続的インテグレーションとアジャイル開発手法の連携について詳細を見る
アジャイル開発とは、反復的な開発と自己組織化されたチーム間の
コラボレーションに焦点を当てた一連の開発手法を指します。アジャイル開発手法は、
規律あるプロジェクト管理プロセスとチーム間、
もしくは
チーム同士の協力体勢に依存しています。選択できるアジャイルフレームワークは数多くありますが、すべてのアジャイル開発プロジェクトには、継続的プランニング、継続的テスト、継続的インテグレーション(CI)など、なんらかの継続的な開発が含まれます。
CIでは、デベロッパーは小ロットかつ短サイクルで作業しながら徐々に安定したシステムを構築していきます。継続的インテグレーションは、ビルド、テスト、デプロイを自動化するCI/CDパイプラインを使用し、アジャイルなフレームワーク内で作業するチームを支援しますアジャイルはプロジェクトとポートフォリオ管理(PMM)に分類されますが、CIはソフトウェア開発チームが変更を実装するプロセスです。
基本的に、Scrumやその他のアジャイル開発手法は管理フレームワークであり、ソフトウェアエンジニアリングの範疇ではありません。最適な結果を得るには、チームはアジャイルなフレームワークとソフトウェアエンジニアリングのベストプラクティスを組み合わせる必要があります。継続的インテグレーションは、アジャイルの反復的な開発を実行に移すものです。
アジャイルプロジェクトマネジメントでは、段階的な変化に焦点を当てながら複雑なプロジェクトを実現できます。この反復的な開発手法には、進捗を追跡し、製品を作成するための6つの核となる要素があります。
-
ユーザー事例: ユーザーの視点から書かれた製品の目標の説明。
-
ロードマップ: 製品ビジョンを達成するために必要な要件をハイレベルなビュー。
-
バックログ: 優先度別のプロジェクトの要件。
-
バックログ: 機能している製品をリリースするためのタイムテーブル。
-
スプリント/イテレーション: 現在のスプリントにリンクされているユーザー事例、目標、タスク。
-
バックログ: スプリントの最後にステークホルダーに提示される作業成果物。
アジャイル開発手法のアプローチはさまざまですが、このモデルに従います。GitLabにおいて、プロジェクト管理機能はこうしたアジャイルの中核概念と一致します。
アジャイルコンセプト | GitLab機能 |
---|---|
ユーザー事例 | イシュー |
タスク | タスクリスト |
エピック | エピック |
ポイント/推定 | 重さ |
バックログ | イシューリストおよびprioritized labels |
スプリント | マイルストーン |
バーンダウンチャート | バーンダウンチャート |
アジャイルボード | イシューボード |
Gitはバージョン管理において最も人気のある方法であり、分散化された同時開発が可能になるため、アジャイルチームにとって有益です。GitLabなどのツールは、主にイシューとマージリクエストを介してコードを中心としたプロセスを作成します。
マージリクエスト (MR)は、ソースコードへの提案された変更を視覚化して共同作業する方法です。 アジャイル手法を使用しているチーム向けのCIワークフローには、アジャイルのコアコンセプトだけでなく、コミット、マージリクエスト、テスト、デプロイが組み込まれます。
ラベルの使用
ラベルを使用すると、チームはエピック、イシュー、マージリクエストをフィルタリングして管理できます。特定のプロジェクトでは、チームに Planning
, In Progress
, Staging
, Reviewed
などのラベルがあり、イシューボードには各自のリストがあります。
チームはイシューでコラボレーションでき、たとえば次のステップが決定された場合はイシューに割り当てられたデベロッパーが作業を開始し、 Planning
ラベルを削除して In Progress
ラベルに置き換えることができます。
変更をコード化してコミットする
デベロッパーはコミットメッセージで対応するイシューを参照できます。 デベロッパーはコミットを機能ブランチにプッシュし、マージリクエストを作成します。 コードがビルドおよびテストされ、チームメンバーがコードの変更を確認できるようになります。
チーム間でイシューボードを使用する
1つのチームがレビューを完了すると、進行中
ラベルを削除してイシューをステージング
イシューボードに移動できます。これにより、イシューの準備が完了したことをデプロイチームに通知できます。
コードのデプロイ
MRが承認されると、それをメインブランチにマージしてイシューをクローズすることができます。
継続的インテグレーションは開発チームを駆動して小規模で頻繁な変更を実装し、バージョン管理リポジトリに対してコードを検証します。CIは、いわばアジャイルプロセスの柱です。CIは非常に広く採用されており、CIとアジャイルはしばしば同義的に使用されます。コンセプトも同様に小規模な反復的な変化に重点を置くものですが、内容は異なります。
アジャイルは、デベロッパーが製品やサービスに小規模のインクリメンタルアップデートを提供できるという期待に基づいて構築されています。実際には、これは組織がCI/CD自動化にコミットした場合にのみ達成されます。アジャイルフレームワークを使用すると、チームは迅速に動き、独立して作業することができますが、組織がCI/CDを積極的に使用しなければアジャイルメソッドは本質的に無意味となります。
アジャイル開発では、各スプリントの終了時に実用的な製品の作成を目指します。各スプリントを通過するにつれ、製品は飛躍的に改善されます。CIを使用する場合、製品に加えられたコードの変更が他の変更と照らし合わせて継続的に検証されます。継続的なインテグレーションと継続的なテストによってエンドユーザーに到達する前にバグや潜在的な問題が検出されるため、チームはこの実用的な製品を確実に提供できるようになります。
小規模で反復的な変更を可能にし、コードの安定性を確保することで開発プロセスを強化できる継続的インテグレーション(CI)は、アジャイルソフトウェア開発に不可欠です。 継続的インテグレーションツールを活用することで、チームはビルド、テスト、デプロイを自動化し、全体的な開発ワークフローを改善できます。このインテグレーションで効率的なコードレビューを簡単に行えるようになるだけでなく、安定した本番環境を維持できます。
CIをアジャイル開発手法に組み込むことで、組織は優れたソフトウェア品質とシームレスな継続的インテグレーションプロセスを実現できるようになり、最終的にDevOpsパフォーマンスの向上と高品質なソフトウェアデリバリーにつながります。