Continuous Delivery (CD): その概要とContinuous Deploymentとの違い

著者: IT Sectr 公開日: 2026-04-11 読了時間: 9 分

Continuous Delivery (CD) は、ソフトウェアが常に本番環境へのリリース準備ができた状態にある開発プラクティスです。すべての変更は自動テストと検証のすべての段階を通過し、その後ワンクリックまたは自動でデプロイできます。Google Cloud DORA Report, 2025 によると、CDを実践しているチームは、自動化が低いチームと比較して208倍多く、106倍速くリリースを出荷しています。

主要ポイント

  • Continuous Delivery (CD) — 自動チェック後、コードが常にリリース可能な状態にあるプラクティス
  • CDはCIを含み、リリース準備、署名、アプリストアへの配信の段階を追加する
  • 手動承認 がContinuous DeliveryをContinuous Deployment(自動デプロイ)と区別する
  • Fastlane はモバイル開発におけるCDの標準ツールであり、署名と公開を抽象化する
  • リリースパイプライン にはメタデータ、スクリーンショット、説明、マーケティング資料の検証が含まれる

Continuous Deliveryとは

Continuous Delivery (CD) はContinuous Integrationの拡張であり、リリース準備のすべての段階(リリースビルドの作成、証明書による署名、難読化、アプリストアのメタデータ検証、ステージングへのデプロイ)に自動化を追加します。この用語はJez HumbleとDavid Farleyが著書 “Continuous Delivery” (2010) で紹介し、チームがリリースを予測可能で低リスクにするプラクティスを形式化しました。

ソフトウェアデリバリーの進化

CD採用前は、リリースはイベントでした。チームは部屋に集まり、20項目のチェックリストを実行し、手動でスクリプトを実行し、何も壊れないことを願っていました。Continuous Delivery はリリースをイベントからプロセスに変えます。コードの小さな変更を数分でユーザーに出荷でき、数週間かける必要はありません。Amazon、Netflix、Etsyが2010年代に最初にCDを採用しました — 現在ではプロダクトチームの標準となっています。

CDのビジネス価値

迅速な機能提供は競争上の優位性です。競合他社が数日で新機能をリリースするのに、あなたは数ヶ月かかる場合、市場は競合他社を選びます。DORAメトリクス が示すように、エリートチーム(CD採用)のデプロイリードタイムは1時間未満、低いチーム(CD未採用)は1週間から1ヶ月です。CDはリスクも根本的に低減します。小さな変更は、大きな四半期リリースよりも問題を起こしにくいのです。

CD vs CI vs Continuous Deployment

CI、CD、Continuous Deployment という用語はよく混同されますが、それらの間には明確な境界があります。違いを理解することで、パイプラインを正しく設計し、チームの成熟度とビジネス要件に合った自動化レベルを選択できます。

Continuous Integration

CIはCDが構築される基盤です。CIはすべてのコミットがビルドとテストを通過することを保証します。CIなしではCDは不可能です。コードが検証されていなければリリースできません。CIは正確性を検証し、CDはビジネス使用への準備状態を検証します。

Continuous Delivery

CDはCIに、リリースビルドの作成、メタデータの検証、署名、ステージングまたはベータテスト用のアプリストアへのデプロイの段階を追加します。主な違い は、本番環境へのリリースの決定を人間(マネージャー、プロダクトオーナー)が行うことです。CDはリリースを “ワンクリック” でシンプルかつ安全にします。

Continuous Deployment

Continuous Deploymentは完全な自動化です。CDパイプラインのすべての段階を通過したすべての変更が、手動承認なしで 自動的に本番環境に送信されます。Continuous DeploymentはSaaS製品やWebサービスに適用可能ですが、アプリストアのポリシー(App Store Review、Google Play Reviewでは手動提出が必要)により、モバイル開発ではほとんど使用されません。

プラクティス自動化本番リリース主に
CIビルド + テストなしあらゆるプロジェクト
CDビルド + テスト + リリースビルド + 配信オンデマンドモバイルアプリケーション
Continuous Deployment完全: ビルド → テスト → 配信 → リリース自動Webサービス、SaaS

モバイルアプリケーションのContinuous Delivery

モバイルアプリケーション向けCD には、Webやバックエンドのパイプラインと区別される特徴があります。モバイルリリースはアプリストア(App Store Review、Google Play Review)を通過するため、時間とプロセスの障壁が追加されます。CDは、レビューのための提出前に自動化できるすべてを自動化し、初回で検証を通過する可能性を最大化します。

Google Play公開の準備

Android CDパイプラインには以下が含まれます:AAB(Android App Bundle)のビルド、リリースキーによる署名、R8/ProGuardによる難読化、APKサイズとmultidexクラスのチェック、リリースノートの生成。Gradleのproduct flavors(free/paid、dev/staging/prod)を使用すると、1つのパイプラインから複数の設定を管理できます。

App Store公開の準備

iOS CDには、Fastlane match による証明書の署名、アイコンの準拠チェック(App Storeの要件 — 1024×1024 px)、メタデータ(名前、説明、キーワード)の検証、プライベートAPIの不在確認が必要です。技術検証は altool --validate-app を介してApp Store Connectにアップロードせずに実行され、迅速なフィードバックを提供します。

ruby
# Fastfile — iOSとAndroidのための完全なCDパイプライン
platform :ios do
  desc "iOS CD — リリース準備とTestFlightへのアップロード"
  lane :deliver_to_testflight do
    capture_screenshots
    match(type: "appstore")
    build_app(
      scheme: "MyApp",
      export_method: "app-store",
      workspace: "MyApp.xcworkspace"
    )
    pilot(skip_waiting_for_build: true)
  end
end

platform :android do
  desc "Android CD — AABビルドとGoogle Play Consoleへのアップロード"
  lane :deliver_to_internal do
    gradle(
      task: "bundleRelease",
      build_type: "Release",
      print_command: true
    )
    upload_to_play_store(
      track: "internal",
      skip_upload_metadata: true
    )
  end
end

Fastlaneの deliver_to_testflight はスクリーンショットを収集し、matchで証明書を取得し、IPAをビルドしてTestFlightにアップロードします。Androidの deliver_to_internal レーンはGradleでRelease AABをビルドし、Google Play Consoleの内部トラックにアップロードします。両方のパイプラインはテスト通過後にCIから実行されます。

CDパイプラインの構成要素

CDパイプライン は順次的な段階で構成され、各段階がリリースがユーザーの準備ができているという確信を高めます。段階は技術的(ビルド、署名)とプロダクト(メタデータ、スクリーンショット、説明の検証)に分けられます。どの段階をスキップしても、アプリストアによってリリースが拒否されるリスクが高まります。

バージョン管理

CDの重要な構成要素は自動バージョン管理です。バージョンアップ(AndroidのversionCodeとversionName、iOSのCFBundleVersionとCFBundleShortVersionString)は、Gitタグまたはストアの前のバージョンに基づいて実行されます。Fastlane increment_version_numberやGradleコマンド(versionCode auto-increment)がこのステップを自動化します。

ストアのメタデータ

Google Play ConsoleとApp Store Connectでは、アプリの説明、キーワード、カテゴリ、評価、プライバシーポリシーのリンクが必要です。CDには メタデータの存在と正確性のチェックが含まれます。Fastlaneのdeliverとsupplyは、ビルドと一緒に説明、スクリーンショット、アイコンのアップロードを自動化します。

ゲートチェック

レビューのために提出する前に、パイプラインはゲートチェックを実行します:ビルドサイズチェック(APK > 200 MBはGoogle Playで拒否)、すべてのローカライゼーションの存在リリースビルドでのデバッグシンボルの不在クラッシュログをデコードするためのProGuardマッピングファイルチェック。いずれかのチェックが失敗すると、パイプラインはリリースをブロックします。

CDのための自動テスト

CD への信頼レベルは、自動テストの品質に正比例します。テストが回帰を捕捉しない場合、リリースが本番環境を壊し、チームはCDへの信頼を失います。モバイルCDには、プラットフォームの特性に適応した3層のテストピラミッドが必要です。

単体テスト

単体テストはビジネスロジックを独立して検証します。重要なモジュール(認証、支払い、ネットワーキング)の コードカバレッジ は少なくとも70%であるべきです。CIはプッシュのたびに単体テストを実行し、失敗した場合は修正されるまでCDパイプラインがブロックされます。

統合テスト

コンポーネントの相互作用を検証します:実際のAPI(またはモックサーバー)とのネットワーク層、データベース、ファイルシステム。Androidの Room DAOテスト、iOSのCore Dataテストは統合テストの例です。単体テストより遅く(1〜5分)、CD段階で実行され、すべてのコミットでのCIでは実行されません。

UIとスクリーンショットテスト

スクリーンショットテスト(スナップショットテスト)は、アプリの画面を参照画像と比較します。コード変更がUIを変更した場合、テストは失敗し、開発者は変更が予期されているか確認します。AndroidはRoborazziとPaparazziをサポートし、iOSはPoint-FreeのSnapshotTestingをサポートします。スクリーンショットテストはCDパイプラインの一部としてリリース前に実行されます。

Continuous Deliveryのベストプラクティス

Continuous Delivery の導入には、ツールだけでなくチーム文化の変革も必要です。以下のプラクティスは、Google、Spotify、Uberのモバイルチームの長年の経験に基づいており、あらゆる規模のプロジェクトに適応されています。

Feature Flags

新機能のコードは本番環境に出荷されますが、フラグの背後に隠されています。Feature flags を使用すると、機能がユーザーに公開される前にコードをデプロイし、問題が発生した場合に即座に無効にできます。ライブラリ:LaunchDarkly、Firebase Remote Config、Unleash。Feature flagsはモバイルプロジェクトのCDに必須の要件です。

ステージング環境

本番環境に出荷する前に、ビルドは ステージング にデプロイされます。これは本番環境と同一だがテストデータを使用する環境です。QAエンジニアはTestFlightまたはInternal Testingトラックを介してインストールされたステージングビルドで機能を検証します。ステージングに合格すると、ビルドはストアのレビューに提出する承認を得ます。

リリースノートとチェンジログ

CDはコミットメッセージに基づいてリリースノートを自動生成します。Conventional Commits(feat:、fix:、chore:)とセマンティックバージョニング形式のGitタグにより、変更履歴を解析できます。Fastlane changelog_from_git_commitsは最後の2つのタグ間の変更を収集し、アプリストア用にフォーマットします。

リリース後の監視

CDは公開で終わりません — リリース後、監視が開始されます:クラッシュ率、AndroidのANR率、起動時間、支払い失敗率。メトリクスが通常の限度を超えた場合、CDパイプラインは自動的にリリースをロールバックするか、チームに通知する必要があります。ツール:Firebase Crashlytics、Sentry、New Relic。

kotlin
// CDのためのFirebase Remote Configを使用したFeature Flagの例
class FeatureManager(
    private val remoteConfig: FirebaseRemoteConfig
) {
    fun isNewCheckoutEnabled(): Boolean {
        return remoteConfig.getBoolean("new_checkout_enabled")
    }

    fun getRecommendedVersion(): String {
        return remoteConfig.getString("minimum_app_version")
    }
}

// コードでの使用
if (featureManager.isNewCheckoutEnabled()) {
    showNewCheckoutScreen()
} else {
    showLegacyCheckoutScreen()
}

よくある質問

Continuous DeliveryとContinuous Deploymentの違いは何ですか?

Continuous Delivery (CD) はリリース準備を自動化しますが、デプロイの決定は人間に委ねます。Continuous Deployment はCD + 人間の介入なしで本番環境に自動リリースするものです。モバイル開発では、アプリストアのレビューが必須であるため、Continuous Deploymentは不可能です。

リリースビルドがテスト済みビルドと異ならないことを確認するには?

すべての段階で 同じビルド を使用します。CIはデバッグビルドをテストし、CDは同じソースからリリースビルドを作成します。Fastlane build_appとGradle assembleReleaseはビルド設定を分離します。さらに、ストアに送信する前にCDパイプラインでリリースビルドに対してスモークテストを実行します。

既に公開されているアプリケーションにCDを導入できますか?

はい、CDはどのプロジェクトでも導入できます。1つの段階の自動化 から始めてください — 例えば、リリースビルドの作成。次に署名を追加し、次にTestFlightへのアップロードを追加します。徐々にパイプラインを拡張してください。重要なのは、すべてを一度に自動化しようとしないことです。CDは反復的に導入されます。

Feature FlagsとCDの関係は?

Feature flags はCDの重要なイネーブラーです。ユーザーに対して有効にせずにコードを本番環境に出荷できます。機能が不安定であることが判明した場合、アプリケーションを再ビルドせずにフラグをオフにできます。Firebase Remote ConfigとLaunchDarklyはCDパイプラインと統合し、WebインターフェースまたはAPIを介して管理されます。

CDを使用する場合、どのくらいの頻度でリリースすべきですか?

CDを使用すると、チームは 毎週 または 隔週 でリリースを行います。DORAレポートのエリートチームは、Continuous Deployment(サーバーサイド)を通じて1日に複数のリリースを行っています。モバイルアプリケーションの場合、最適な頻度は1〜2週間に1回です。App Storeのレビューには1〜3日かかり、より頻繁なリリースではユーザーが変更に気付く時間がありません。

まとめ

  • Continuous Delivery (CD) — 本番環境へのデプロイの手動決定を保持しながらリリース準備を自動化
  • CDはCIに基づき 以下を追加:リリースビルド、署名、メタデータ検証、アプリストアへの配信
  • Fastlane はモバイル開発におけるCDの標準ツールで、単一のFastfileからAndroidとiOSをサポート
  • Feature flags とステージング環境 — モバイルプロジェクトでの安全なCDに必須のプラクティス
  • ゲートチェック(ビルドサイズ、ローカライゼーション、デバッグシンボル)はストア要件を満たさない場合にリリースをブロック
  • DORAメトリクス は、CDを採用したチームが208倍多くリリースし、リスクも低いことを証明
  • 推奨:CDを反復的に導入 — 自動リリースビルドアセンブリから始め、署名、TestFlightへのアップロードと進める

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください