ExpoがHipcampのネイティブビルドとOTAアップデートプロセスを効率化した方法
Users • React Native • Product • December 9, 2025 • 7分で読める
ゲスト著者: Armaiz Adenwala、Tom Podlipni
HipcampがApp CenterをExpoに置き換えることで、ネイティブビルドを6倍高速化し、信頼性の高いOTAアップデートとWebのようなリリース頻度をモバイルアプリで実現した方法をご紹介します。
この記事は、HipcampのソフトウェアエンジニアであるArmaiz AdenwalaとTom Podlipniによるゲスト投稿です。Armaizはモバイルアプリエクスペリエンスを担当し、Tomはエンジニアリングチーム全体のCI/CDと開発ツールを担当しています。
長年にわたり、HipcampはビルドとリリースにApp Centerを使用していました。MicrosoftがApp Centerの終了を発表したとき、ネイティブビルドとOTA(Over-The-Air)アップデートを処理できる代替手段が必要でした。
私たちの要件はシンプルでした:
- iOSとAndroid向けの高速で信頼性の高いネイティブビルド
- シームレスなOTAアップデート機能
- 既存のワークフローとの簡単な統合
様々な選択肢を評価した結果、Expoとそのクラウドサービスを選択しました。すべての要件を満たすだけでなく、リリースプロセス全体を効率化する機会も提供してくれました。
Hipcampについて
Hipcampは、国立公園からブルーベリー農園まで、キャンプサイトを発見・予約するNo.1アプリです。Hipcampは、静かなプライベートスポット、象徴的な公有地、設備の整ったキャンプ場など、世界中のキャンプオプションを一つのアプリにまとめ、あなたがキャンプしたい場所すべてを提供します。
今すぐダウンロード
Expo Build:完全に最適化されたプロセス
最大の成果の一つはビルド速度でした。App Centerのビルドは約60分かかり、iOSでは頻繁にタイムアウトが発生し、信頼性に欠けていました。ExpoのBuildサービスは一貫して10分のビルドを提供し、6倍の改善により開発サイクルが大幅に加速されました。
ビルドプロセスの自動化
チームにとってビルドをさらに簡単にするため、ExpoのBuildワークフローのトリガーを処理するカスタムyarnコマンドを作成しました。
スクリプトは以下を要求します:
- 環境(staging、productionなど)
- ビルドタイプ(QA vs リリース候補)
- ビルドを説明する人間が読める形式のメッセージ
事前チェックが通過すると、ワークフローはiOSとAndroidをビルドし、iOSをTestFlightに提出し、成功通知を送信します。
Github Actionsなどの他のビルド代替手段とは異なり、このワークフローは非常に簡単に作成できました。Expoのサービスはモバイルに特化しているため、ランナーは常に現在のSDKに最適化されており、ビルドの複雑さの大部分が抽象化されています。
build_android:
name: Build Android
type: build
params:
platform: android
build_ios:
name: Build iOS
type: build
params:
platform: ios
submit_ios_build:
name: Submit iOS Build
needs: [build_ios]
type: submit
send_notification:
name: Send Build Notification
needs: [build_android, build_ios, submit_ios_build]
steps:
- name: Send Slack message
run: |
curl -X POST -H "Content-type: application/json" \
--data '{...}' # Slack Webhook Call
ビルドが完了すると、テストに必要なすべての情報を含む通知をSlackチャンネルに自動投稿します:
- TestFlightビルド番号(iOS)
- 直接APKダウンロードリンク(Android)
- その特定のビルド用に事前フィルタリングされたSentryエラー監視リンク
- チケットリアクションを使用してビルド用のバグチケットを自動作成するSlack + Asana統合
このワークフローは私たちのプロセスを変革しました。組織内の誰でもエンジニアリングサポートなしでビルドをレビューしフィードバックを提供でき、特定のチームはQAと承認のための保留中の機能のフィードを維持できます。
Expo Updates - 月次リリースから日次リリースへ
OTAアップデートは、私たちのモバイル開発ワークフローの基盤となっています。アプリストアのレビューには数日かかることがありますが、OTAアップデートにより、修正や新機能を即座に配信でき、チームがWebを本番環境にデプロイするのと同じように行えます。
以前は、AppCenterのCodePushを控えめに使用していました。日常的なリリースに依存するには信頼性が低すぎたからです。ExpoのOTA Updateサービスがそれを変えました。安定しており、予測可能で、信頼しやすいものです。これにより、より頻繁にリリースし、フィードバックにより迅速に対応し、ストア承認を待つことなくアプリを改善し続けることができます。
リリースブランチ戦略
現在の本番状態を表す専用のリリースブランチを維持しています:
- 各ネイティブリリースに対して新しいリリースブランチを作成
- mainブランチに変更をマージした後、CI/CDパイプラインが自動的にOTA可能かどうかを判定
- 適格な変更はリリースブランチにcherry-pickされ、Expo Updates経由でデプロイ
OTA適格性検出
expo-fingerprintを使用してOTA互換の変更を自動検出します。このツールはネイティブ依存関係の詳細分析を実行し、一意のフィンガープリントを生成します。cherry-pickされたコミットがリリースブランチと同じフィンガープリントを持つ場合、ネイティブ変更がないことを意味し、安全にOTAアップデートできます。
この自動化は重要でした:OTA適格性を判定する際の手動チェックと潜在的な人的エラーを排除します。
OTAプロセス概要
パイプラインがOTAアップデートを承認すると、カスタムスクリプトが:
- ExpoへのOTAをトリガー
- Sentryソースマップをアップロードし、アップデートIDを使用して新しいリリースを作成
- さらに、モバイルアプリは自動的にsentryを最新のExpo Update IDを指すように設定
- Expo UpdateダッシュボードとこのリリースのSentry issuesへの直接リンクでGithubリリースとタグを更新
ExpoによるOTAアップデートの影響
このワークフローは、モバイル機能のリリース方法を変革しました:
- ネイティブリリースの削減:アプリストア提出の回数を大幅に削減
- Webのようなデプロイ頻度:モバイルリリースがWebリリースと同じペースで実行
- より迅速なインシデント対応:壊れたデプロイメントを迅速に特定してロールバック可能
- ストレス軽減:本番バグを修正するための高圧的な緊急ネイティブリリースが稀に
結論
Expoの採用は、チーム全体に波及効果をもたらしました:
- エンジニアは、ビルドの問題のデバッグや遅いビルドの完了待ちに費やす時間が減少
- プロダクトマネージャーは、機能が即座に本番環境にデプロイされるのを見ることで、より迅速な反復とフィードバックループが可能に
- デザイナーは、エンジニアリングとの調整を常に必要とすることなく、自分のデバイスで機能を非同期でレビュー可能
- オンコールエンジニアは、緊急アプリストアリリースのストレスなしに本番バグに迅速に対処可能
Expoの信頼性、速度、柔軟性の組み合わせにより、Hipcampにとって明確な選択となりました。EAS Buildsはビルド時間を大幅に短縮し、Expo UpdatesはモバイルアプリでWebのようなデプロイ速度を実現しました。
React NativeプロジェクトでExpoを検討している場合、私たちは自信を持って言えます:正しい選択をしました。
より多くの人々を外に連れ出すお手伝いをしませんか?Hipcampで私たちと一緒に働きましょう。