モバイルアプリ開発におけるCircleCIの導入事例
株式会社はてな / tokizo
メンバー / モバイルエンジニア
利用プラン | ツールの利用規模 | ツールの利用開始時期 |
---|---|---|
Performance | 11名〜50名 | 2022年6月 |
利用プラン | Performance |
---|---|
ツールの利用規模 | 11名〜50名 |
ツールの利用開始時期 | 2022年6月 |
導入の背景・解決したかった問題
導入背景
導入検討当時は、モバイルアプリのプロダクトの成長とともにチーム規模が拡大し、より多くのテストをすばやく実行する必要性が生じました。当時使用していたCI/CDサービスでは、テストの並列数を増やすために追加のコストが発生し、予算面での課題に直面していました。このような背景から、コストを抑えつつ、iOSアプリとAndroidアプリの効率的なビルド、テスト、デプロイを実現できる新たなCI/CDサービスを探すことになりました。
比較検討したサービス
- Bitrise
- Codemagic
- GitHub Actions
比較した軸
- 価格
- ビルドの実行時間
- リソースの性能
選定理由
機能面ではトライアルを実施し、実際のプロダクトに組み込みました。十分なCI/CDパイプラインの並列数を確保できること、および個々のビルド、テストも高速化できることを確認しました。また、価格面でも予算に収まる見込みが立ち、機能面とコスト面の両方で満足できることを確認しました。
導入の成果
CI/CDパイプラインの並列数の上限に余裕があるプランを採用し、実際に予算内で運用することができました。また、ビルド時間に関しては最大で20~30%程度の時間短縮となったプロダクトもありました。
導入に向けた社内への説明
上長・チームへの説明
以下の観点で上長に説明しました。
- トライアルを踏まえて、日々のアプリのビルド、テスト用アプリの配布、リリースの基盤としてクラウド版のCircleCIが十分に使えること
- 汎用的なCI/CDサービスのため、将来モバイルアプリ開発以外でも用途を広げられること
- 導入のメリットに対してコストが安価であると判断できること
活用方法
- git pushごとにテストのワークフローを実行
不要な場合は[ci skip]
をcommitメッセージに含めることでワークフローをスキップできます。 - 日毎のテスト用アプリの配布
cronを書かずにGUI上でスケジュールの指定ができます。 - Slack ワークフロー経由にて各種ワークフローを実行
ユニットテスト、テスト用アプリの配布、App Store Connectへのアップロード等のワークフローを、Slack ワークフロー経由で実行できるようにしています。
よく使う機能
Dynamic Configuration
実行時の条件に基づいて異なる設定ファイルを適用することができる機能です。例えば、Slack ワークフローによるトリガーに応じて、テスト用iOSアプリの配布のパイプラインを動的に生成することができます。path filtering
リポジトリ内の特定のファイルやディレクトリが変更された場合にのみ、パイプラインを実行することができる機能です。これにより、無駄なビルドやテストを避け、効率的なCI/CDプロセスを実現します。モノレポのプロダクトで活用していて、例えばAndroidディレクトリ配下にのみ差分がある場合はiOS関係のワークフローは実行せずに、Android関係のワークフローのみを実行させる、といったことができます。Test Insights
テストの結果やパフォーマンスデータを詳細に分析できる機能です。テストの成功率や実行時間を見ることができます。特にFlaky testsの検出機能が便利です。
ツールの良い点
OrbがOSSとして公開されている
Orbはパッケージ化されたビルドプロセスの効率化のためのツールです。例えば、RubyのGemのインストールやキャッシュを簡単にできるパッケージがあります。OSSのため、いざという時にソースコードを見ることができます。設定ファイルをコードベースで管理できる
Git管理下に置けるため編集履歴を追えたり、OrbのアップデートをRenovateで自動化できます。ジョブごとのCPUとRAMの使用状況を確認できる
CPUやRAMの使用状況を確認し、リソースが限界に達している場合は上位のリソースクラスを、そうでない場合は下位のリソースクラスを選択する、といった判断材料を揃えることができます。Xcodeの最新バージョンへの対応が早い
新しい開発環境でのビルドができるため、開発のスピードと品質を維持することができます。
ツールの課題点
ビルドインの証明書管理機能が無いため、fastlane matchなどの手段を自前で用意する必要があります。
ツールを検討されている方へ
選定にあたり、複数のCI/CDサービスのトライアルを利用し、実際のプロダクトに組み込んで使用感を確かめました。トライアルを行うことで、実際に設定ファイルを書いたり、証明書周りの設定を試すことができるため、使用感を確認することが有益であると感じました。使用感を事前に確認してみることをお勧めします。
株式会社はてな / tokizo
メンバー / モバイルエンジニア
株式会社はてなのiOS、Androidアプリエンジニア。
よく見られているレビュー
株式会社はてな / tokizo
メンバー / モバイルエンジニア
株式会社はてなのiOS、Androidア...
レビューしているツール
目次
- 導入の背景・解決したかった問題
- 活用方法