メインコンテンツへスキップ

Capacitor アプリの CI/CD セットアップ

CI/CDパイプラインを活用して、iOSとAndroid向けのアプリリリースを効率化し、エラーを削減する方法を学びましょう。

Capacitor アプリ向け CI/CD の設定 Capgo ブログ用イラスト

iOSとAndroid向けのアプリリリースを、もっと速く、エラーなく行いたいですか? CI/CDパイプラインによる Capacitor アプリのビルド、テスト、デプロイを自動化すると、リリース時間を最大70%短縮し、エラーを60%削減できます。本ガイドでは、環境構築から Live Updates の自動化まで、知っておくべきことすべてを解説します。 Capgo.

要点:

  • CapacitorアプリにCI/CDが必要な理由 Capacitor アプリ: ビルド時間を78%短縮し、ストアの却下率を60%削減します。
  • 必須ツール: iOSプロファイリング, デバッグ, CocoaPods、など。
  • パイプラインの設定: 次のようなタスクを自動化します: npx cap sync依存関係のキャッシュ、およびプラットフォーム固有のビルドなど。
  • Capgo による Live Update: フェーズドロールアウトやロールバック機能により、リリース後のアップデートを可能にします。

クイックセットアップ手順:

  1. 環境の準備: iOS および Android 用の必要なツールをインストールします。
  2. プロジェクトの設定: アップデート capacitor.config.ts および環境変数の安全な管理。
  3. ビルドパイプライン: 両プラットフォームの依存関係のインストール、ビルド、テストを自動化します。
  4. パフォーマンスの最適化: キャッシング、並列ビルド、条件付きワークフローを活用します。
  5. Live Updates を追加: Capgo を統合し、段階的なロールアウトによる安全な OTA アップデートを実現します。

CI/CD を導入することで、Capacitor アプリはエラーや手動作業を最小限に抑えつつ、より迅速でスムーズなリリースが可能になります。ワークフローを最適化する準備はできましたか?さっそく始めましょう!

既存の CI/CD パイプラインにモバイル機能を統合する

CI/CD 環境の準備

CI/CD の基本を理解したら、次は環境のセットアップです。これが信頼性の高い自動化の基盤となります。

ツールとソフトウェアのセットアップ

以下の主要ツールがインストールされていることを確認してください:

iOS 開発用:

  • Xcode 14以降
  • Xcode Command Line Tools
  • CocoaPods 依存関係の管理用

Android開発用:

  • デバッグ
  • Android SDK 33以上
  • Java Development Kit (JDK)

Xcode Command Line Toolsのインストール確認には、以下を使用します:

xcode-select -p

作成中 Capacitor プロジェクト

Capacitor フレームワーク ドキュメントサイト

Capacitor プロジェクトを CI/CD ワークフローで正しく動作させるには、適切な設定が必要です。 capacitor.config.ts この設定の核となるのが、次のファイルです:

const config: CapacitorConfig = {
  appId: 'com.example.app',
  webDir: 'build',
  ios: { 
    scheme: 'MyApp'
  }
}

このファイルによって、プロジェクトが CI/CD の要件を満たすようになります。

環境変数の設定

認証情報を安全に管理することは、環境設定と CI/CD パイプラインを連携させる上で極めて重要です。

定義すべき主要な変数:

  • BUILD_ENV:デプロイのステージを指定します(例: production)
  • IOS_SIGNING_IDENTITY:code の署名証明書
  • ANDROID_KEYSTORE_PATH:Android keystore へのパス

Android ビルドの場合、CI プロセス中に local.properties ファイルを動的に生成します:

echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties

iOSのビルドを行う際は、CIプラットフォームがmacOSエージェントをサポートしていることを確認してください。

環境の準備ができているか確認するには:

node --version | grep "v16" && xcodebuild -version | grep "Xcode 14" || exit 1

以前の統計でも示されているとおり、キーと認証情報を適切に管理することで、App Storeでリジェクトされる可能性を大幅に下げられます。 [1].

CI/CDパイプラインの作成

Once your environment is ready, the next step is setting up a CI/CD pipeline for your Capacitor アプリが。このパイプラインは、Webアセットとネイティブプラットフォームのビルドの両方を効率的に管理する必要があります。

依存関係のインストールと更新

CI/CD環境では、依存関係を管理するには厳格なバージョン管理が必要です。まずはクリーンインストールの手順から始めましょう:

npm install --ignore-scripts
npm install @capacitor/cli

ビルドを高速化するには、依存関係のキャッシュを利用してください。例えば、 Azure DevOps のユーザーは、この設定でビルド時間が40〜60%短縮されたと報告しています:

- task: Cache@2
  inputs:
    key: 'npm | "$(Agent.OS)" | package-lock.json'
    path: |
      node_modules
      android/.gradle
      ios/Pods

iOSおよびAndroidのビルド設定

両プラットフォームのビルド設定手順は以下の通りです:

iOSビルドの設定:

steps:
  - task: InstallAppleCertificate@2
    inputs:
      certSecureFile: 'certificate.p12'
      certPwd: $(P12_PASSWORD)
  - script: |
      xcodebuild -workspace ios/App/App.xcworkspace -scheme App -configuration Release -archivePath ios/App/App.xcarchive archive

Android ビルド設定:

cd android
./gradlew bundleRelease

テストとデプロイの手順

マトリックス戦略でプラットフォームテストを並列実行します:

test:
  steps:
    - run: npm run test:unit
    - run: npm run test:e2e
    - name: Run Platform Tests
      matrix:
        platform: [ios, android]
      run: npm run test:${{ matrix.platform }}

デプロイでは、プラットフォーム別のアーティファクト処理を設定します:

プラットフォーム アーティファクトの種類 配信チャネル
iOSと .ipa App Store Connect
Androidでは .aab Google Play Console

並列ビルドを正しく設定することで、パイプラインの実行時間を大幅に短縮できます。

ビルドの検証とパッケージ化が完了したら、Capgo(次セクションで解説)によるLive Updateの準備は万端です。

sbb-itb-f9944d2

プロジェクトへの Capgo Live Updates用

Capgo Live Update ダッシュボードインターフェース

ワークフローに Capgo を組み込むことで、リリース後のアップデートが可能になり、CI/CDプロセスが強化されます。設定手順は以下の通りです。

Capgo パイプラインの設定

まず、以下をインストールします: Capgo CLI パイプライン環境にて:

steps:
  - name: Install Capgo CLI
    run: npm install -g @capgo/cli
  - name: Configure Authentication
    env:
      CAPGO_KEY: ${{ secrets.CAPGO_API_KEY }}

この設定を追加することで、以下の機能をCI/CDライフサイクルに組み込み、 アップデート管理 自動ビルドおよびデプロイプロセスを拡張できます。

次に、ビルドステップの後に upload コマンドを追加します:

- name: Upload Update
  run: |
    capgo upload --api-key $CAPGO_KEY --bundle ./build/app-release.apk
    capgo deploy v${VERSION} --channel production

以下の セキュアなアップデートの確保、バリデーション設定は次のように構成してください:

{
  "verification": {
    "checksum": "strict",
    "certificatePinning": true,
    "updateTimeout": 500
  }
}

Capgo 機能概要

機能 説明
エンドツーエンド暗号化 デプロイ時のエラーを大幅に削減します。
チャンネルベースのデプロイ 特定の環境に合わせてアップデートを最適化します。
段階的なロールアウト アップデートを段階的に配信することを保証します。

OTAアップデート ガイドライン

デプロイ後に以下の主要メトリクスを追跡することで、テストプロセスを強化できます:

フェーズド・デプロイ戦略

段階的なロールアウトを使用して、アップデートの配信を制御します:

- name: Staged Rollout
  run: |
    capgo deploy v1.2.3 --group "beta-users" --rollout 10%
    capgo deploy v1.2.3 --rollout 50%

アップデートのモニタリング

以下のメトリクスを監視しましょう:

  • 採用率:最初の24時間以内に40〜60%を目指します。
  • クラッシュフリーセッション:99.5%以上を維持します。
  • 検証時間:500ms未満に抑えます。

クラッシュが許容範囲を超えた場合は、ロールバックを自動化します:

- name: Rollback Check
  run: |
    if [ $(capgo stats --version v1.2.3 --metric crashes) -gt 2 ]; then
      capgo rollback --channel production
    fi

パイプラインのパフォーマンス向上

3つの主要領域に注力すると、パイプラインを目に見えて改善できます:

ビルド速度の最適化

Webのみの変更では、 npx cap sync を使用することで、ネイティブのフルリビルドをスキップして時間を節約でき、リビルド時間を約40%削減できます。条件付きビルドの実装方法は以下の通りです:

- name: Build Strategy
  run: |
    [ "$WEB_ONLY" = true ] && npx cap sync || (./gradlew assembleRelease && xcodebuild ...)

このアプローチにより、必要なコンポーネントのみがリビルドされ、プロセスを効率化できます。

バージョン管理の自動化

バージョン管理を自動化することで、ワークフローを簡素化できます。以下のスクリプトを使用して、バージョン番号とビルド番号を動的に設定してください:

- name: Set Version
  run: |
    VERSION=$(node -p "require('./package.json').version")
    BUILD_NUMBER=$GITHUB_RUN_NUMBER
    echo "APP_VERSION=${VERSION}" >> $GITHUB_ENV
    echo "BUILD_ID=${BUILD_NUMBER}" >> $GITHUB_ENV

また、以下の設定により、セマンティックバージョニングの自動化も可能です:

{
  "scripts": {
    "version": "standard-version",
    "build:prod": "npm version patch && ionic build --prod"
  }
}

これらのプラクティスを導入することで、以下のようなメトリクスを通じて、パイプラインのパフォーマンスを追跡・改善するための強固なフレームワークを構築できます:

  • ステージごとのビルド時間
  • キャッシュ効率(ヒット/ミス率)
  • リソース使用量のピーク時負荷

複数環境のセットアップ

環境ごとの設定を使用することで、複数の環境管理を簡素化できます。設定例は以下の通りです:

環境 設定ファイル
開発 .env.dev
ステージング .env.staging
プロダクション セキュアなVault

以下のスクリプトを使用すると、環境を動的に設定できます:

- name: Configure Environment
  env:
    API_KEY: ${{ secrets.ENV_SPECIFIC_API_KEY }}
    BUNDLE_ID: ${{ parameters.bundleId }}
  run: |
    echo "ENVIRONMENT=${{ parameters.environment }}" >> $GITHUB_ENV
    echo "API_ENDPOINT=${{ parameters.apiUrl }}" >> $GITHUB_ENV

これらの設定を Capgo のチャンネルベースのデプロイと組み合わせることで、環境ごとに正確なアップデートが可能になります。これにより、ロールアウトがスムーズになり、異なる環境におけるアプリの挙動をより細かく制御できます。

まとめ

開発におけるCI/CDの役割

Capacitor アプリにCI/CDパイプラインを導入すると、ワークフローの効率が大幅に向上します。業界のデータによると、チームは以下の成果を得られます: リリースサイクルを50〜70%高速化 iOSとAndroidの同時ビルドが可能になります [3]依存関係のインストールやプラットフォームの同期などのタスクを自動化することで、デプロイエラーを 40-60% [1][2].

例えば、Azure DevOps pipelinesを活用しているチームでは、ビルドステップの順次実行やXcodeのパッケージングなどのプロセスを自動化しています。また、開発用と本番用の両方でパラメータ化された環境を使用しています。このアプローチにより、手動でのGradleやXcodeの CLI 操作が不要になり、常に信頼性の高いアーティファクト作成が可能になります。

Capgo と組み合わせることで、アップデート管理を効率化するための基盤が整います。

アップデート管理のための Capgo

Capgo はCI/CDパイプラインとシームレスに連携し、アプリストアのポリシーを遵守しながら即時のアップデートを提供します。アップデートは、パイプラインに組み込まれた自動テストゲートを通過した後にのみデプロイされます。

自動ビルドと段階的なロールアウト(phased rollouts)を組み合わせることで、チームは以下のような素晴らしい成果を実現できます: 7日間以内にユーザーカバー率80% そして、1時間以内でのロールバック機能。

一般的な戦略として、並行したデプロイ・トラックの実行があります。自動ビルドは内部テストに使用し、段階的なロールアウトは特定のユーザーセグメントを対象にします。これにより、厳格な自動テストゲートに裏打ちされた、迅速かつ安全なアップデートが保証されます。 [1].

よくある質問

Capacitor アプリの作成方法

Capacitor アプリのビルドは、以下の簡単なステップで行えます:

  1. 環境のセットアップ:システムに Node.js と npm をインストールします。次に、Ionic CLI を使用して、Capacitor をサポートする新しいプロジェクトを開始します:

    ionic start myApp tabs --capacitor
  2. プラットフォームの追加:iOS や Android など、ターゲットとするプラットフォームを追加します:

    npx cap add ios
    npx cap add android
  3. Web code の同期:以下のコマンドを実行して、Web code をネイティブプラットフォームと同期させます:

    npx cap sync

同期ステップは、アプリの各プラットフォーム間での一貫性を保ち、CI/CD パイプラインでスムーズに動作させるために非常に重要です。環境構築の詳細については、Tools セクションを確認してください。

Capacitor アプリ向け CI/CD のセットアップへ戻る

使用している場合 Capacitor アプリの CI/CD セットアップ CI/CD自動化を計画するには、次と連携してください Capgo での CI/CD 設定 Capgo CI/CDでのプロダクトワークフローについては、 Capgo Native Build Capgo Native Buildsでのプロダクトワークフローについては、 Capgo インテグレーション Capgo インテグレーションでのプロダクトワークフロー向けに、 CI/CD 連携 CI/CD Integrationの実装詳細については、 GitHub Actions 連携 GitHub Actions Integrationの実装詳細については。

Capacitor アプリ向けの Live Updates

Web レイヤーのバグが本番で発生したら、App Store の審査を何日も待たずに Capgo で修正を配信しましょう。ネイティブの変更は通常の審査フローに残したまま、ユーザーはバックグラウンドでアップデートを受け取れます。

最新のブログ記事

Capgoは、真にプロフェッショナルなモバイルアプリを作るために必要な最高のインサイトを提供します。