
CONTENT
こんにちは、東京エンジニアのS.Wです。
今日はアジャイル開発における常時結合について簡単に説明します。
ここまでアジャイル開発の概要や開発手法について触れてきましたが、その根底にある目的は「顧客へ価値あるソフトウェアを提供し続けること」にあります。
今回紹介する常時結合(Continuous Integration、以下CI)とは、それを実現するための重要なプロセスになります。
■CIとは
CIとは、開発したコードをビルドツールを使用して、ソフトウェアの配置を自動化します。
具体的には以下の作業を繰り返し自動で行います。
・CIのフロー
①ソースコードのコミット
②ビルド
③自動テスト
④検証環境へのデプロイ
⑤フィードバック
フィードバックは顧客に検証環境でアプリケーションを実際に触って確認してもらいます。ここで想定通りの機能が実現されていない場合、開発者は①へ戻ってソースコードの修正を行います。一般的にはこの工程を1日に1回行い、顧客は常に最新のアプリケーションをチェックすることができます。
■自動テストについて
自動テストを実現するためには、JUnit(Java)やPHPUnit(PHP)などのテストフレームワークを用いてテストコードを作成します。この作業はそれなりの工数を必要とするため、それを嫌う開発者は多いです。(筆者も・・・)
しかし、顧客に常に安定したアプリケーションを提供するという点で、CIを行う上で必須の要素であることは確かです。テストコードの実装時間は、不具合発生時のコード解析やデバッグ作業に費やす時間に比べれば短いものなので、頑張って書きましょう。(半分自分に言ってる)
■CIのメリット
・問題の早期発見
こまめにコミット~テスト~検証を繰り返すことにより、どのコミットで不具合が生じたのかを把握しやすくなるので、修正コストを抑えることができます。
■CIを行う上でのポイント
・CIのタイミング
CIを行うタイミングとしては上記フローの②~④を毎日決まった時間に行うの一般的です。
この期間が空きすぎてしまうと、前回のアプリケーションからの変更が大きくなってしまい、メリットが薄れてしまいます。
・CIのエラーは最優先で対応
CIのフローで問題が発生するとしたら以下です。
②アプリケーションのビルドエラー
③自動テストが通らない
④デプロイ時のエラー
これらの問題が発生したら最優先で解消に向けて調査・対応を行います。常に安定して動くソフトウェアを提供し続けることが重要です。
■まとめ
いかがでしたでしょうか。ここまで4回にわたりアジャイル開発の基礎と開発手法について触れてきました。
・アジャイル開発とは
・ペアプログラミング
・リファクタリング
・常時結合(CI) (本記事)
なお、「アジャイルソフトウエア開発技術者検定試験コンソーシアム」という団体から、認定試験が配信されています。(詳細は以下URL https://agilecert.org/)
試験は基礎編のレベル1と、実践・技術編のレベル2の2段階で配信されていています。本ブログで配信してきた上記内容は、レベル1の内容についてざっくりと触れてきました。
レベル2の内容についても今後配信していきたいと思います。
それではまた!