自動化

Shorebird と Codemagic を活用した継続的デリバリーの概要

目次

Shorebird と Codemagic を活用した継続的デリバリーの概要

アプリの開発からリリースにおいて、いかに効率的なデプロイメントを行うかは重要な課題です。Shorebird と Codemagic は、それぞれ異なる役割を持ちながらも、Flutter アプリの継続的デリバリーを効率化するために活用できます。Shorebird はホットパッチ機能を提供し、アプリの審査を経ずに修正を適用可能にします。一方で Codemagic は CI/CD ツールとして、自動化されたビルドやデプロイを支援します。

本記事では、Shorebird と Codemagic の基本概念を解説し、それぞれの利点や活用方法を明確にします。また、両者を組み合わせることでどのようにアプリ開発を最適化できるのか、具体的なワークフローの説明を交えて詳しく解説していきます。これにより、開発者は手作業を減らしながら、迅速かつ確実なアプリのデプロイを実現できます。

Shorebird と Codemagic の基本概念と違い

Shorebird と Codemagic はどちらも Flutter アプリの開発に関わるツールですが、それぞれ異なる役割を持っています。Shorebird はホットパッチの適用を可能にし、アプリの修正を即座に行える点が特徴です。これは、アプリストアの審査を待たずにバグ修正や軽微な変更を適用できるため、運用の効率化に寄与します。一方、Codemagic は CI/CD プラットフォームとして、アプリのビルド、テスト、デプロイを自動化する役割を果たします。

Shorebird はコードの即時修正に特化しており、Codemagic はそのコードを安定してデプロイする役割を担います。これにより、両ツールを組み合わせることで、開発からリリースまでのプロセスがよりスムーズになります。アプリ開発チームが頻繁にアップデートを行う場合、Shorebird を活用しながら Codemagic で継続的デリバリーを実現することが望ましいでしょう。

Shorebird を活用するメリットとは?

Shorebird を利用する最大のメリットは、アプリのパッチ適用を迅速に行える点にあります。通常、アプリの修正をリリースする際には、アプリストアの審査を待つ必要があります。しかし、Shorebird を活用すれば、アプリのコードを変更し、ユーザーの端末に直接パッチを適用することが可能になります。これにより、バグの修正や小規模な機能改善を素早く行えるため、ユーザーエクスペリエンスの向上につながります。

また、Shorebird のパッチ適用機能は、運用コストの削減にも貢献します。従来のリリースサイクルでは、毎回新しいバージョンをビルドしてデプロイする必要がありますが、Shorebird を活用することで、その手間を大幅に削減できます。特に、頻繁に更新が必要なアプリにとっては、大きなメリットとなるでしょう。

Codemagic を導入することで得られる利点

Codemagic を導入することで、開発プロセスの自動化が可能になり、エンジニアの負担を軽減できます。手動でのビルドやデプロイ作業は時間がかかり、ミスの発生リスクも伴いますが、Codemagic を活用すれば、それらのプロセスをスクリプト化し、自動で実行できるようになります。これにより、開発者はよりクリエイティブな作業に集中できるようになります。

また、Codemagic は Android・iOS 両方のプラットフォームをサポートしており、クロスプラットフォーム開発に適しています。さらに、GitHub などのリポジトリと連携し、コードの変更があるたびに自動でビルド・テストを行う設定も可能です。これにより、品質を維持しながら迅速なリリースを実現できます。

Shorebird と Codemagic の連携による CI/CD の最適化

Shorebird と Codemagic を組み合わせることで、CI/CD のプロセスを最適化できます。Shorebird のホットパッチ機能を活用すれば、アプリストアの審査を待たずに修正を適用でき、Codemagic による自動デプロイ機能を活用すれば、リリースの手間を削減できます。このように、両ツールを組み合わせることで、リリースまでの時間を短縮し、より迅速な開発サイクルを実現できます。

また、CI/CD パイプラインを最適化することで、エンジニアの作業負担を軽減できるだけでなく、コードの品質管理も向上します。Codemagic を利用した自動テストの実行により、バグの発見が早まり、Shorebird による即時修正が可能になるため、より安定したアプリ運用が可能になります。

Shorebird と Codemagic の適用事例と成功例

Shorebird と Codemagic を導入することで、多くの企業が開発効率を向上させています。例えば、あるモバイルアプリ開発企業では、Shorebird のパッチ機能を利用してリリース後のバグ修正時間を 90% 短縮しました。これにより、ユーザーの離脱率が大幅に減少し、アプリの評価向上につながりました。

また、Codemagic を活用することで、リリースにかかる時間を大幅に短縮できた事例もあります。従来の手動ビルド・デプロイでは 1 回のリリースに 1 時間以上かかっていた企業が、Codemagic の自動化により、わずか 15 分で新バージョンのデプロイが完了するようになりました。このように、Shorebird と Codemagic の組み合わせにより、開発チームの生産性向上が実現されています。

Shorebird と Codemagic を連携させるための事前準備

Shorebird と Codemagic を連携させて CI/CD パイプラインを構築するには、いくつかの事前準備が必要です。まず、それぞれのツールのアカウントを作成し、基本的な設定を行います。Shorebird は Flutter アプリ向けのホットパッチ適用ツールであり、Codemagic は自動化されたビルドとデプロイを提供する CI/CD プラットフォームです。これらを組み合わせることで、アプリの更新を迅速かつシームレスに行うことが可能になります。

事前準備としては、Shorebird のアカウント作成、Codemagic のアカウント設定、CLI のインストール、環境変数の設定などが必要になります。また、Shorebird のトークンを取得し、Codemagic で適切に設定することで、パッチ配信を自動化できます。本セクションでは、それぞれの準備手順を詳しく解説し、スムーズな環境構築を支援します。

Shorebird のアカウント作成と基本設定

Shorebird を利用するには、まずアカウントを作成する必要があります。Shorebird の公式サイトにアクセスし、メールアドレスとパスワードを登録することで、アカウントの作成が完了します。作成後、管理画面から新しいプロジェクトを作成し、Flutter アプリを登録します。

また、Shorebird の設定では、アプリごとの API キーを取得し、それを Codemagic に適用する必要があります。このキーは、アプリのバージョン管理やパッチ適用の際に使用されるため、安全に管理することが重要です。さらに、Shorebird CLI をインストールすることで、ローカル環境での操作が可能になります。CLI を活用することで、開発者はアプリのパッチ適用やバージョン管理を簡単に行うことができます。

Codemagic のアカウント作成と基本設定

Codemagic を利用するためには、公式サイトにアクセスし、アカウントを作成する必要があります。Codemagic は GitHub、GitLab、Bitbucket などのリポジトリと連携できるため、利用するプラットフォームに応じた設定を行います。アカウント作成後、Codemagic の管理画面で新しいプロジェクトを登録し、Flutter アプリのビルド設定を行います。

また、Codemagic では、環境変数の設定が重要です。例えば、Shorebird の API トークンや Google Play / App Store の認証情報を Codemagic の環境変数として登録することで、ビルドプロセスがスムーズに進行します。特に、CI/CD パイプラインを自動化する際には、適切な環境変数を設定しておくことが不可欠です。

Shorebird と Codemagic の統合に必要なツール

Shorebird と Codemagic を統合するには、いくつかのツールを準備する必要があります。まず、Shorebird CLI をインストールし、ローカル環境でパッチ適用のテストができるようにします。Shorebird CLI は、以下のコマンドでインストールできます:

dart pub global activate shorebird_cli

次に、Codemagic でのビルドを自動化するために、Codemagic CLI をインストールすることも推奨されます。Codemagic CLI を使用することで、ローカル環境でビルドの実行や設定のテストが可能になります。これらのツールを正しくセットアップすることで、Shorebird と Codemagic の統合がスムーズに進みます。

Shorebird CLI のインストールと動作確認

Shorebird CLI をインストールした後は、動作確認を行うことが重要です。以下のコマンドを実行し、インストールが正しく完了したかを確認します:

shorebird --version

このコマンドが正しく動作すれば、Shorebird CLI のインストールは完了です。次に、Shorebird にログインし、プロジェクトを適切に設定します。以下のコマンドを実行することで、Shorebird にログインできます:

shorebird login

ログイン後、Flutter アプリのディレクトリに移動し、Shorebird を有効化するコマンドを実行します:

shorebird init

これにより、Shorebird の設定ファイルが生成され、プロジェクトが Shorebird に登録されます。以降の手順では、この設定を活用して Codemagic との統合を進めていきます。

Shorebird と Codemagic の統合時の注意点

Shorebird と Codemagic を統合する際には、いくつかの注意点があります。まず、Shorebird の API トークンを適切に管理し、環境変数として登録することが重要です。Codemagic にトークンを設定する際には、環境変数の暗号化機能を利用し、安全に管理しましょう。

また、CI/CD パイプラインの実行時に、Shorebird のパッチ適用処理が適切に動作するかを確認する必要があります。Codemagic のビルドプロセスに Shorebird のパッチ適用スクリプトを組み込むことで、リリース時に自動的にパッチを適用できるようになります。このプロセスを自動化することで、手動での作業を減らし、開発チームの負担を軽減できます。

最後に、Shorebird のパッチ適用機能を利用する場合、アプリの更新がユーザーに適用されるまでのタイムラグが発生することがあります。特に、アプリがバックグラウンドにある場合、適用が遅れる可能性があるため、この点を考慮して実装を行いましょう。

Codemagic アカウントの作成と設定方法を詳しく解説

Codemagic は、Flutter アプリの開発を効率化するための CI/CD プラットフォームです。Codemagic を活用することで、アプリのビルド、テスト、デプロイを自動化し、開発者の負担を軽減できます。Codemagic の最大の特徴は、Flutter に特化したサポートが充実しており、簡単な設定で継続的インテグレーション(CI)と継続的デリバリー(CD)を実現できる点です。

本セクションでは、Codemagic のアカウント作成手順と基本設定について詳しく解説します。これにより、初めて Codemagic を利用する開発者でも、スムーズに環境構築を行い、自動化されたワークフローを導入することが可能になります。特に、GitHub などのソースコード管理ツールとの連携や、環境変数の設定方法についても触れていきます。

Codemagic の登録手順と基本的な設定

Codemagic を利用するには、まず公式サイト(https://codemagic.io)にアクセスし、アカウントを作成する必要があります。Codemagic では、GitHub、GitLab、Bitbucket などのソースコード管理サービスと連携できるため、通常はそれらのアカウントを利用してサインアップします。

アカウント作成後、ダッシュボードにアクセスし、「新しいアプリを追加」ボタンをクリックします。次に、リポジトリを選択し、Codemagic がビルドを実行できるようにアクセス権限を付与します。その後、基本的な設定として、Flutter SDK のバージョンやターゲットプラットフォーム(Android / iOS)を選択します。これにより、Codemagic 上でのビルド環境が整います。

Codemagic のプロジェクト設定方法

Codemagic では、プロジェクトごとにビルド設定を行う必要があります。プロジェクトを選択すると、設定画面に移動し、「ワークフロー」の設定が可能になります。ここで、使用する Flutter のバージョン、ビルドターゲット、環境変数などを設定します。

また、Codemagic では「codemagic.yaml」ファイルを利用することで、ワークフローをより詳細にカスタマイズできます。例えば、Android / iOS のビルドごとに異なる環境変数を設定したり、特定の条件を満たした場合にデプロイを自動化するスクリプトを組み込むことが可能です。これにより、柔軟なビルド環境を構築できます。

環境変数とシークレット管理のベストプラクティス

CI/CD を活用する際、環境変数の管理は非常に重要です。Codemagic では、環境変数を「ビルド設定」から簡単に登録できます。例えば、Google Play API キーや App Store Connect の認証情報など、ビルドやデプロイに必要なシークレットキーを安全に管理するために、環境変数を活用します。

また、Codemagic では環境変数の暗号化機能を提供しており、機密情報をセキュアに管理できます。これにより、リポジトリに機密情報を直接含めることなく、安全なビルド環境を実現できます。環境変数の適切な設定は、CI/CD のセキュリティを確保するうえで不可欠です。

Codemagic で利用可能なビルドマシンの種類

Codemagic では、ビルドマシンを選択することで、最適な環境でアプリのビルドを実行できます。提供されているビルドマシンには、以下の種類があります:

  • macOS(Apple M1 / Intel)
  • Linux(Docker コンテナ環境)
  • Windows(Android ビルド向け)

Flutter アプリの開発では、iOS のビルドが必要になる場合が多いため、macOS マシンを選択することが推奨されます。また、Android アプリのみを開発する場合は、Linux または Windows 環境を選択することで、コストを抑えつつビルドを高速化できます。

Codemagic の通知設定とアラート管理

Codemagic では、ビルドやデプロイのステータスをリアルタイムで把握できるように、通知機能が提供されています。通知設定を行うことで、ビルドが成功した場合や失敗した場合に、メールや Slack、Discord などのツールにアラートを送信できます。

特にチームで開発を行っている場合、Codemagic の通知機能を活用することで、ビルドの失敗をすぐに検知し、迅速に対応できるようになります。また、エラーログの出力機能を有効にしておくことで、トラブルシューティングが容易になります。CI/CD の運用をスムーズに行うために、適切な通知設定を行いましょう。

Shorebird トークンの生成と Codemagic での設定手順

Shorebird を Codemagic と連携させるためには、Shorebird の API トークンを取得し、Codemagic に設定する必要があります。このトークンは、Shorebird のホットパッチ機能を活用する際に必須となり、CI/CD パイプラインの一部として使用されます。適切にトークンを管理することで、安全かつ効率的にパッチ適用を自動化できます。

本セクションでは、Shorebird トークンの生成方法と Codemagic における設定手順について詳しく解説します。また、セキュリティを確保するためのベストプラクティスや、トークンの有効期限・更新時の注意点についても触れます。これにより、安全かつスムーズに Shorebird と Codemagic の統合を進めることができます。

Shorebird トークンの役割と必要性

Shorebird トークンは、Flutter アプリに対するパッチの適用を管理するための認証情報として機能します。このトークンを Codemagic に設定することで、CI/CD パイプラインの一環として、ビルド完了後に自動的にパッチを適用できるようになります。

また、Shorebird トークンを利用することで、認証されたデバイスのみがパッチを適用できるようになります。これにより、アプリのセキュリティを確保し、不正なパッチ適用を防ぐことが可能になります。開発環境でのテストだけでなく、本番環境でのパッチ適用にも必要となるため、適切な管理が求められます。

Shorebird トークンの取得手順

Shorebird トークンを取得するには、まず Shorebird CLI を使用します。以下のコマンドを実行することで、ログインとトークンの取得が可能です:

shorebird login

ログインが完了したら、次に以下のコマンドを実行して API トークンを取得します:

shorebird account token

このコマンドを実行すると、Shorebird の認証用 API トークンが表示されます。このトークンは、Codemagic に設定するために必要となるため、安全に管理しましょう。特に、トークンを直接リポジトリに含めるのは避け、環境変数として登録するのが推奨されます。

Codemagic での Shorebird トークンの設定方法

取得した Shorebird トークンを Codemagic に設定するには、Codemagic の管理画面から環境変数を追加します。以下の手順で設定を行います:

  • Codemagic のダッシュボードにログインする。
  • 対象のプロジェクトを開き、「Environment variables(環境変数)」を選択する。
  • 「+ Add variable(変数を追加)」をクリックし、新しい変数を作成する。
  • 変数名を「SHOREBIRD_API_TOKEN」、値に取得したトークンを入力する。
  • 「Secure(暗号化)」のオプションを有効にし、トークンを安全に管理する。

設定が完了したら、Codemagic のビルドプロセスでこの環境変数を参照できるようになります。Shorebird を活用したパッチ適用の自動化には、この設定が必須となるため、適切に設定を行いましょう。

トークン管理のベストプラクティスとセキュリティ対策

Shorebird トークンは機密情報であるため、適切に管理することが重要です。以下のベストプラクティスを実践することで、トークンのセキュリティを確保できます:

  • リポジトリにトークンを直接含めない(環境変数を利用する)。
  • Codemagic の「Secure(暗号化)」オプションを必ず有効にする。
  • 必要に応じて、トークンの有効期限を短く設定し、定期的に更新する。
  • アクセス権限を適切に設定し、不要なユーザーがトークンを取得できないようにする。

また、Shorebird の公式ドキュメントで推奨されているセキュリティ対策を確認し、最新のセキュリティポリシーを適用することも重要です。これにより、CI/CD パイプラインの安全性を確保し、不正アクセスを防ぐことができます。

トークンの有効期限と更新時の注意点

Shorebird の API トークンには有効期限が設定されている場合があり、定期的に更新する必要があります。トークンが期限切れになると、CI/CD パイプラインの実行時に認証エラーが発生し、ビルドやデプロイが停止する可能性があります。

トークンの有効期限を確認するには、以下のコマンドを実行します:

shorebird account token --info

もし有効期限が近づいている場合は、新しいトークンを発行し、Codemagic の環境変数を更新する必要があります。新しいトークンを発行するには、以下のコマンドを実行します:

shorebird account token --refresh

新しいトークンが発行されたら、Codemagic の環境変数を更新し、以前のトークンは削除するようにしましょう。これにより、不要なトークンがシステムに残らず、セキュリティリスクを軽減できます。

codemagic.yaml ファイルの詳細な構成と設定方法

Codemagic では、ビルドプロセスを自動化するために codemagic.yaml ファイルを使用します。このファイルを利用することで、Flutter アプリのビルド、テスト、デプロイを細かく設定でき、CI/CD パイプラインをカスタマイズできます。手動でのビルド設定よりも柔軟で、環境ごとに異なる構成を簡単に適用できるため、多くの開発者にとって必須の設定ファイルとなっています。

本セクションでは、codemagic.yaml の基本構成、環境変数の設定方法、Shorebird との統合方法、ビルドステップの追加、エラーを防ぐためのポイントについて解説します。これにより、最適な CI/CD 環境を構築し、開発を効率化できます。

codemagic.yaml ファイルの基本構成

codemagic.yaml は、Codemagic のビルドパイプラインを制御するための設定ファイルです。このファイルには、Flutter SDK のバージョン、ビルドターゲット(Android/iOS)、環境変数、テストの実行手順、デプロイ方法などを定義します。基本的な構成は以下のようになります:

workflows:
  flutter-app:
    name: Flutter App Build
    environment:
      flutter: stable
      groups:
        - google_credentials
    scripts:
      - name: Flutter パッケージの取得
        script: flutter pub get
      - name: ビルド
        script: flutter build apk --release

この設定では、Flutter の安定版(stable)を使用し、必要なパッケージを取得した後に Android 用のリリースビルドを行います。iOS 向けの設定を追加することも可能です。

環境ごとの設定を管理する方法

codemagic.yaml では、環境ごとに異なる設定を適用できます。例えば、本番環境と開発環境で異なる API キーや設定を使用する場合、以下のように環境変数を設定します:

environment:
  groups:
    - production_env
    - staging_env

また、特定の条件に基づいて異なるワークフローを実行することも可能です。例えば、特定のブランチのみ本番環境にデプロイする場合、以下のように記述します:

workflows:
  release:
    instance_type: mac_mini_m1
    triggering:
      events:
        - push
      branch_patterns:
        - pattern: release/*
          include: true

このように設定することで、ブランチ名が release/ で始まる場合のみ、このワークフローが実行されるようになります。

Shorebird を統合するための特別な設定

Shorebird を Codemagic のビルドプロセスに統合するには、Shorebird CLI をインストールし、パッチ適用プロセスを codemagic.yaml に追加します。以下のように記述すると、ビルド後に Shorebird のパッチを適用できます:

scripts:
  - name: Shorebird のセットアップ
    script: dart pub global activate shorebird_cli
  - name: Shorebird の認証
    script: shorebird login --api-token $SHOREBIRD_API_TOKEN
  - name: Shorebird パッチの適用
    script: shorebird patch apply

この設定により、Codemagic がビルド完了後に自動的に Shorebird のパッチ適用処理を実行し、最新の修正がアプリに反映されるようになります。

ビルドステップとスクリプトの追加方法

codemagic.yaml では、ビルドの各ステップをスクリプトとして追加できます。例えば、iOS ビルドの手順を追加するには、以下のように記述します:

scripts:
  - name: iOS ビルド
    script: |
      flutter build ipa --release

また、ビルドプロセス中にカスタムスクリプトを実行することも可能です。例えば、依存関係のチェックやコードフォーマットの適用をビルド前に行いたい場合、以下のように設定できます:

scripts:
  - name: コードのフォーマットチェック
    script: flutter format --set-exit-if-changed .
  - name: 依存関係のチェック
    script: flutter pub outdated

このように、codemagic.yaml にカスタムスクリプトを追加することで、CI/CD ワークフローをより強力にカスタマイズできます。

エラーを防ぐための YAML 設定のポイント

codemagic.yaml を正しく設定するためには、いくつかのポイントに注意する必要があります。特に、以下のような点に気を付けましょう:

  • YAML のインデントはスペース(2 つまたは 4 つ)を使用し、タブを使わない。
  • 変数の記述ミスを防ぐため、環境変数は正しく設定する。
  • ブランチパターンの設定を適切に行い、意図しないビルドが発生しないようにする。
  • ビルドステップの順序を明確にし、依存関係のある処理は適切に整理する。

また、Codemagic のダッシュボードには codemagic.yaml のバリデーションツールがあるため、ビルド前に設定ミスをチェックすることが推奨されます。特に、環境変数の設定ミスは CI/CD の実行エラーにつながりやすいため、テスト環境で事前に確認することが重要です。

Codemagic を用いた Android リリースワークフローの構築

Codemagic は、Flutter アプリのビルドとデプロイを自動化する強力な CI/CD プラットフォームです。特に Android アプリのリリースにおいては、手動でのビルドや署名、Google Play へのアップロードなど、多くの作業が発生します。これらの作業を Codemagic で自動化することで、リリース作業の効率化を図ることが可能です。

本セクションでは、Codemagic を用いた Android アプリのリリースワークフローを構築する方法を詳しく解説します。具体的には、Codemagic のビルド設定、Google Play へのデプロイ準備、APK/AAB の署名方法、リリースプロセスの最適化、自動テストの実行方法について説明します。これにより、Android アプリのリリース作業を大幅に効率化し、品質を向上させることができます。

Codemagic で Android プロジェクトを設定する方法

Codemagic で Android プロジェクトを設定するには、まず Codemagic のダッシュボードにログインし、新しい Flutter プロジェクトを追加します。次に、リポジトリを選択し、CI/CD のワークフローを設定します。

codemagic.yaml を使用する場合、以下のように記述することで、Android アプリのビルドプロセスを設定できます:

workflows:
  android-release:
    name: Android Release Build
    instance_type: mac_mini_m1
    environment:
      flutter: stable
    scripts:
      - name: Flutter パッケージの取得
        script: flutter pub get
      - name: Android リリースビルド
        script: flutter build appbundle --release

この設定では、Flutter のパッケージを取得し、Google Play に提出可能な AAB(Android App Bundle)を生成します。ビルド環境の設定を適切に行うことで、Codemagic 上での Android アプリのリリース作業を自動化できます。

Google Play にデプロイするための準備

Android アプリを Google Play にデプロイするには、Google Play Developer API を設定し、Codemagic から自動アップロードできるようにする必要があります。以下の手順で設定を行います:

  • Google Play Console にアクセスし、「API アクセス」から新しいサービスアカウントを作成する。
  • 適切な権限を付与し、JSON キーファイルをダウンロードする。
  • Codemagic の環境変数に、この JSON キーファイルの内容を GOOGLE_PLAY_JSON_KEY として登録する。

Codemagic では、環境変数を利用して Google Play へのアップロードを自動化できます。例えば、以下のような codemagic.yaml の設定を追加することで、自動アップロードを行うことができます:

publishing:
  google_play:
    credentials: $GOOGLE_PLAY_JSON_KEY
    track: production

この設定を行うことで、Codemagic のビルド完了後に、Google Play に自動的にアプリがアップロードされるようになります。

Android ビルドの最適化と高速化

Android アプリのビルドは時間がかかるため、Codemagic の設定を最適化することで、ビルド時間を短縮できます。以下の方法で、ビルドプロセスを高速化できます:

  • Flutter のキャッシュを有効化する(flutter pub cache を活用)。
  • 不要なデバッグログを削除し、リリースビルド専用のワークフローを作成する。
  • Gradle の並列ビルドを有効にする(gradle.properties で設定)。

また、Codemagic のマシンインスタンスを適切に選択することで、ビルド時間を短縮できます。例えば、高速なビルドが求められる場合は、M1 Mac mini を使用することで、よりスムーズにビルドを実行できます。

署名付き APK/AAB の作成と管理

Android アプリを Google Play にアップロードするには、適切に署名された APK または AAB を作成する必要があります。Codemagic では、以下の手順で署名を自動化できます:

  • Keystore(keystore.jks)を作成し、Codemagic の環境変数に登録する。
  • 署名情報(KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD)を環境変数に設定する。
  • codemagic.yaml に署名の設定を追加する。

以下の設定を codemagic.yaml に追加することで、自動署名が可能になります:

scripts:
  - name: Keystore 設定
    script: |
      echo $KEYSTORE | base64 --decode > /tmp/keystore.jks
  - name: APK の署名
    script: |
      jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \
      -keystore /tmp/keystore.jks \
      -storepass $KEYSTORE_PASSWORD \
      -keypass $KEY_PASSWORD \
      app-release-unsigned.apk $KEY_ALIAS

この設定により、Codemagic でビルドされた APK/AAB に自動的に署名が適用され、Google Play にアップロードできる状態になります。

Codemagic による自動テストの実行と結果確認

Codemagic では、Android アプリのテストも自動実行できます。テストを追加することで、リリース前にアプリの品質を確保することが可能です。以下のように設定を追加します:

scripts:
  - name: ユニットテストの実行
    script: flutter test
  - name: UI テストの実行
    script: flutter drive --target=test_driver/app.dart

また、Codemagic のテストレポート機能を利用することで、テスト結果をダッシュボード上で確認することも可能です。これにより、リリース前に重大なバグを検出し、品質の高いアプリを提供できるようになります。

Codemagic を用いた iOS リリースワークフローの構築

Codemagic を利用することで、iOS アプリのビルドとリリース作業を自動化できます。手動でのビルドや証明書管理、App Store へのアップロードは時間がかかる作業ですが、Codemagic の CI/CD パイプラインを活用すれば、これらのプロセスを簡単に管理できるようになります。

本セクションでは、Codemagic での iOS プロジェクトの設定、App Store へのデプロイ準備、iOS ビルドの最適化と高速化、署名付き IPA の作成、Codemagic によるテストの自動化について詳しく解説します。これにより、開発者はスムーズにリリース作業を進められるようになります。

Codemagic で iOS プロジェクトを設定する方法

Codemagic で iOS プロジェクトを設定するには、まずリポジトリを登録し、Xcode や Flutter SDK のバージョンを指定する必要があります。以下のように codemagic.yaml を記述することで、iOS アプリのビルド環境を設定できます:

workflows:
  ios-release:
    name: iOS Release Build
    instance_type: mac_mini_m1
    environment:
      flutter: stable
      xcode: latest
    scripts:
      - name: Flutter パッケージの取得
        script: flutter pub get
      - name: iOS リリースビルド
        script: flutter build ipa --release

この設定により、Codemagic は Flutter の安定版を使用し、最新の Xcode を利用して iOS のリリースビルドを実行します。

App Store へのデプロイに必要な手順

iOS アプリを App Store にデプロイするには、Apple Developer アカウントを設定し、適切な証明書とプロビジョニングプロファイルを Codemagic に登録する必要があります。以下の手順で進めます:

  • Apple Developer アカウントで API キーを作成する。
  • Codemagic の環境変数に API キーを登録する(APP_STORE_API_KEY)。
  • 証明書とプロビジョニングプロファイルを Base64 形式でエンコードし、Codemagic にアップロードする。

codemagic.yaml に以下の設定を追加することで、App Store への自動デプロイが可能になります:

publishing:
  app_store_connect:
    api_key: $APP_STORE_API_KEY
    bundle_id: com.example.app
    submit_to_testflight: true

この設定を行うことで、Codemagic がビルド完了後に TestFlight へ自動的にアプリをアップロードし、App Store の審査プロセスを簡単に進められるようになります。

iOS ビルドの最適化と高速化

iOS アプリのビルド時間を短縮するために、Codemagic ではいくつかの最適化手法を活用できます。以下のポイントに注意すると、より効率的なビルドが可能になります:

  • ビルドキャッシュを有効化する(flutter build --no-tree-shake-icons など)。
  • Xcode のビルド設定を最適化する(DerivedData を活用)。
  • 不要なシミュレーターのビルドをスキップする。

また、Codemagic のビルドマシンとして M1 Mac mini を選択することで、Intel Mac に比べてビルド時間を大幅に短縮できます。ビルド時間を最適化することで、CI/CD のパフォーマンスを向上させることができます。

署名付き IPA の作成と管理

iOS アプリを App Store にアップロードするには、署名付き IPA を作成する必要があります。Codemagic では、以下の手順で自動署名を設定できます:

  • Apple Developer Portal から「配布用証明書」と「プロビジョニングプロファイル」を取得する。
  • 証明書(certificate.p12)を Base64 形式でエンコードし、Codemagic に登録する。
  • 環境変数に証明書パスワードとプロファイルを登録する。

codemagic.yaml に以下の設定を追加することで、署名付き IPA を作成できます:

codesign:
  app_store:
    provisioning_profile: $PROVISIONING_PROFILE
    certificate: $CERTIFICATE
    certificate_password: $CERTIFICATE_PASSWORD

この設定により、Codemagic は自動的に適切な証明書を適用し、署名付きの IPA を作成できます。これにより、手動での証明書管理の手間を省くことができます。

Codemagic による iOS テストの自動化

Codemagic では、iOS アプリのテストを自動化することが可能です。リリース前にテストを実施することで、アプリの品質を確保し、バグの発生を防ぐことができます。以下のように codemagic.yaml に設定を追加します:

scripts:
  - name: ユニットテストの実行
    script: flutter test
  - name: UI テストの実行
    script: flutter drive --target=test_driver/app.dart

また、Codemagic の「テストレポート機能」を利用することで、テストの結果をダッシュボードで確認できます。これにより、CI/CD パイプラインの一環として、自動テストを確実に実行し、品質管理を強化することが可能になります。

Shorebird を利用したパッチ配信ワークフローの最適化

Shorebird は、Flutter アプリのパッチ適用を可能にするツールであり、アプリのアップデートを迅速に行うことができます。特に、バグ修正や小規模な機能追加を即座にユーザーに提供できる点が大きなメリットです。従来、アプリの更新にはストアの審査を通過する必要がありましたが、Shorebird を活用すれば、ユーザーにすぐに修正を適用できます。

本セクションでは、Shorebird のパッチ配信機能の概要、パッチの作成・適用手順、Codemagic との統合による自動化、バージョン管理の方法、エラーハンドリングのポイントについて詳しく解説します。これにより、開発チームは手間を減らしながら、スムーズにアプリの更新を管理できるようになります。

Shorebird のパッチ配信機能の概要

Shorebird は、Flutter アプリに対してコードの一部を修正し、ユーザーに即座に適用できるホットパッチ機能を提供します。この機能を利用することで、アプリストアの審査を待つことなく、修正を反映することが可能になります。

例えば、特定の UI のバグ修正や、小規模な機能追加を行いたい場合、Shorebird を活用することで数分以内に更新を適用できます。これにより、ユーザーの体験を向上させ、開発の柔軟性を高めることができます。また、Shorebird のパッチは安全に管理されており、意図しない改変が適用されないような仕組みも備わっています。

Shorebird パッチの作成と適用手順

Shorebird のパッチは、CLI を使用して作成できます。まず、ローカル環境で変更を加えた後、以下のコマンドを実行します:

shorebird patch create

このコマンドを実行すると、新しいパッチが作成され、Shorebird のサーバーにアップロードされます。その後、適用するバージョンを指定して、パッチを適用します:

shorebird patch apply --version 1.0.1

この処理により、アプリが指定のバージョンに対して更新され、ユーザーのデバイスに即座に反映されます。なお、パッチの適用はネットワーク経由で行われるため、ユーザーがオンライン状態である必要があります。

Codemagic を利用したパッチ配信の自動化

Shorebird のパッチ配信を Codemagic と統合することで、CI/CD ワークフローの中で自動的にパッチを適用することが可能になります。これにより、手動での更新作業を省略し、スムーズなリリース管理を実現できます。

Codemagic の codemagic.yaml に以下のスクリプトを追加することで、パッチ適用プロセスを自動化できます:

scripts:
  - name: Shorebird のセットアップ
    script: dart pub global activate shorebird_cli
  - name: パッチの作成
    script: shorebird patch create
  - name: パッチの適用
    script: shorebird patch apply --version $APP_VERSION

この設定により、Codemagic でビルドが完了した後に、Shorebird のパッチ適用が自動的に実行されるようになります。

パッチ配信のバージョン管理とロールバック

Shorebird では、パッチのバージョン管理を行うことができ、必要に応じて以前のバージョンへロールバックすることも可能です。例えば、新しいパッチに問題が発生した場合、以下のコマンドで以前のバージョンに戻すことができます:

shorebird patch rollback --version 1.0.0

このコマンドを実行することで、最新のパッチが無効化され、指定したバージョンの状態に戻ります。これにより、万が一の問題発生時にも迅速に対応することができます。

また、Shorebird では各パッチの適用状況をログで確認できるため、どのバージョンがどのユーザーに適用されたかを把握することも可能です。

パッチ適用時のエラーハンドリングとデバッグ

Shorebird でパッチを適用する際、いくつかのエラーが発生する可能性があります。代表的なエラーとして以下のものが挙げられます:

  • ネットワーク接続が不安定でパッチが適用されない。
  • アプリのバージョンが不一致でパッチが適用できない。
  • Shorebird の認証情報が正しく設定されていない。

これらの問題を解決するために、以下のようなデバッグ手順を実行すると効果的です:

  • CLI で shorebird status を実行し、Shorebird の設定が正しく適用されているか確認する。
  • 環境変数 SHOREBIRD_API_TOKEN が Codemagic に適切に設定されているかを確認する。
  • Shorebird のログを参照し、エラーの詳細を分析する(shorebird logs コマンドを使用)。

また、Shorebird の公式ドキュメントには、よくあるエラーとその対策が記載されているため、最新の情報を確認しながら適用することが推奨されます。

Shorebird と Codemagic による CI/CD パイプラインの自動化

Shorebird と Codemagic を組み合わせることで、Flutter アプリの CI/CD(継続的インテグレーション / 継続的デリバリー)パイプラインを自動化できます。Shorebird はアプリのホットパッチ機能を提供し、Codemagic はビルドやデプロイを自動化するため、これらを組み合わせることで、アプリの品質向上と開発プロセスの最適化が可能になります。

本セクションでは、Codemagic を活用した CI/CD の基本、Shorebird との統合方法、Codemagic での自動ビルドとテスト、セキュリティ対策、トラブルシューティングについて解説します。これにより、開発チームは効率的にアプリをリリースし、迅速に問題を修正することができます。

CI/CD の基礎と Codemagic での自動化の利点

CI/CD は、開発プロセスの一環として、コードの変更を継続的に統合(CI)し、自動的にテストとデプロイを行う(CD)仕組みです。Codemagic を利用することで、以下のような利点があります:

  • 手動でのビルドやデプロイ作業を削減できる。
  • コードの変更を迅速にテストし、品質を確保できる。
  • エラーを早期に発見し、修正までの時間を短縮できる。

Codemagic は Flutter に特化した CI/CD プラットフォームであるため、Flutter アプリのビルドとデプロイを簡単に自動化できます。これにより、開発チームはより迅速にアプリを市場に投入できるようになります。

Codemagic を利用した自動ビルドとテスト

Codemagic を利用して自動ビルドとテストを設定することで、コードの変更があった際に即座に品質チェックを実行できます。以下のように codemagic.yaml を設定することで、ビルドとテストを自動化できます:

workflows:
  flutter-ci:
    name: Flutter CI/CD Pipeline
    environment:
      flutter: stable
    scripts:
      - name: パッケージの取得
        script: flutter pub get
      - name: ユニットテストの実行
        script: flutter test
      - name: アプリのビルド
        script: flutter build apk --release

この設定により、Codemagic はコードの変更が検出されるたびに、パッケージの取得、テストの実行、リリースビルドを自動で行います。

Shorebird と Codemagic を活用した継続的デプロイ

Codemagic と Shorebird を連携させることで、ビルドが完了したアプリに対して、Shorebird のホットパッチを適用することができます。これにより、ストアの審査を待たずに素早くバグ修正を配信できます。

以下の codemagic.yaml 設定を追加することで、パッチの適用プロセスを自動化できます:

scripts:
  - name: Shorebird のセットアップ
    script: dart pub global activate shorebird_cli
  - name: パッチの作成
    script: shorebird patch create
  - name: パッチの適用
    script: shorebird patch apply --version $APP_VERSION

この設定を利用することで、アプリのビルド完了後に自動的にパッチを適用でき、リリースサイクルを加速させることが可能になります。

CI/CD のセキュリティと権限管理のポイント

CI/CD を自動化する際には、セキュリティ管理が重要になります。特に、Codemagic や Shorebird で利用する API トークンや認証情報を適切に管理することが求められます。以下のポイントを押さえて、セキュリティを確保しましょう:

  • API トークンは環境変数として Codemagic に登録し、リポジトリに直接含めない。
  • Shorebird のパッチ適用は、許可されたユーザーのみが実行できるように権限を設定する。
  • Codemagic のビルド環境に不要なアクセス権限を付与しない。

また、Codemagic の環境変数設定で「Secure(暗号化)」オプションを有効にすることで、機密情報の漏洩を防ぐことができます。

自動化ワークフローのトラブルシューティング

CI/CD パイプラインを運用していると、時折エラーが発生することがあります。代表的なトラブルとその解決策を紹介します:

  • ビルドが失敗する: Codemagic のログを確認し、環境変数が正しく設定されているか確認する。
  • Shorebird のパッチが適用されない: API トークンの有効期限を確認し、必要に応じて更新する。
  • テストが失敗する: ローカル環境で flutter test を実行し、問題を特定する。

また、Codemagic には「ビルド履歴」の機能があり、過去のビルド結果を比較しながら問題を特定することが可能です。Shorebird についても、CLI の shorebird logs コマンドを活用することで、エラーの詳細を確認できます。

これらの手法を駆使することで、CI/CD パイプラインの安定運用を実現し、アプリの品質を維持しながらリリースを継続的に行うことができます。

Shorebird と Codemagic 連携時のトラブルシューティングと対策

Shorebird と Codemagic を活用して CI/CD パイプラインを構築すると、多くの開発プロセスを自動化できる反面、さまざまなトラブルが発生する可能性もあります。特に、環境変数の設定ミス、ビルドエラー、Shorebird のパッチ適用の失敗などが主な問題となります。

本セクションでは、よくあるエラーの原因とその解決策、ビルド失敗時のログ分析方法、パッチ適用時の不具合の対処法、Codemagic の設定ミスによるトラブルの回避方法、Shorebird と Codemagic 連携のベストプラクティスについて解説します。これにより、スムーズな CI/CD 運用を実現し、開発の生産性を向上させることができます。

よくあるエラーと解決策

Shorebird と Codemagic を連携する際に発生しやすいエラーには、以下のようなものがあります:

  • Shorebird の認証エラー(API トークンの無効化)
  • Codemagic の環境変数が正しく設定されていない
  • ビルド時のパーミッションエラー(証明書やキーストアの問題)
  • Shorebird のパッチ適用時のバージョン不一致

これらの問題に対処するために、まず Shorebird CLI を使って API トークンが正しく設定されているかを確認します:

shorebird account token --info

また、Codemagic の環境変数が正しく設定されているかを、Codemagic のダッシュボードから確認し、再設定することも重要です。

ビルド失敗時のログ分析方法

Codemagic でのビルドが失敗した場合、まずログを確認することが重要です。Codemagic のダッシュボードでは、各ビルドの詳細なログが閲覧できます。特に、以下の点を確認しましょう:

  • 環境変数が正しく設定されているか(codemagic.yaml での設定ミス)
  • 必要な Flutter プラグインが不足していないか(flutter pub get の実行確認)
  • 証明書やキーストアの設定が正しく適用されているか

また、Shorebird のパッチ適用時にエラーが発生した場合、以下の CLI コマンドを実行し、詳細なログを取得できます:

shorebird logs

このログを分析することで、どの段階でエラーが発生しているのかを特定できます。

パッチ適用時の不具合の対処法

Shorebird のパッチ適用に失敗する主な原因として、以下のようなものが考えられます:

  • アプリのバージョンとパッチのバージョンが一致していない
  • Shorebird の API トークンが無効になっている
  • アプリがバックグラウンド状態でパッチを適用しようとしている

これらの問題に対処するために、まず Shorebird CLI でバージョン情報を確認しましょう:

shorebird patch list

また、問題のあるパッチをロールバックする場合は、以下のコマンドを実行します:

shorebird patch rollback --version 1.0.0

これにより、最新のパッチを取り消し、以前のバージョンに戻すことが可能になります。

Codemagic の設定ミスによるトラブルの回避方法

Codemagic の設定ミスによるトラブルは、CI/CD パイプラインの実行失敗につながることがあります。以下のポイントを確認し、事前に回避することが重要です:

  • 環境変数(API キーや証明書)の設定が正しいか
  • 必要な依存関係(Flutter SDK、Shorebird CLI など)がインストールされているか
  • codemagic.yaml の構文エラーがないか
  • ブランチ設定が意図したとおりに機能しているか

例えば、環境変数の設定ミスを防ぐために、Codemagic のダッシュボードから「Secure(暗号化)」オプションを有効にしておくと、機密情報の漏洩を防ぐことができます。また、codemagic.yaml のバリデーション機能を活用して、構文ミスを事前に防ぐことも重要です。

Shorebird と Codemagic 連携のベストプラクティス

Shorebird と Codemagic を連携させる際には、以下のベストプラクティスを実践することで、よりスムーズな運用が可能になります:

  • Shorebird の API トークンを定期的に更新し、セキュリティを確保する
  • CI/CD パイプラインの各ステップを細かく分け、エラーの発生ポイントを特定しやすくする
  • テストの自動化を徹底し、パッチ適用後の動作確認を省略しない
  • Codemagic のビルド環境を最新の Flutter バージョンに合わせて更新する

また、Shorebird では、新しいパッチが適用される前に、特定の条件(例:特定のユーザーグループのみに適用)を設定することが可能です。これにより、すべてのユーザーに対して一斉に変更を適用するのではなく、段階的にリリースすることができます。

最適な CI/CD パイプラインを構築し、Shorebird と Codemagic を最大限に活用することで、Flutter アプリの開発スピードを向上させ、より安定したアプリ運用を実現できます。

資料請求

RELATED POSTS 関連記事