expo release channel について2021/07/08

expo release channel について

React Native でアプリを作る場合にExpoを利用することで、便利な機能を使うことができます。 その中でも、ストアでの審査・公開を挟まずにアプリのアップデートを配布できるOTAアップデートはとても便利です。

この記事ではOTAアップデートを行う際に設定できる「releas channel」についての情報をまとめます。

結論を先に書くと

  • Expo を利用してビルドする際に「channel」を設定することで、OTAアップデートを制御できる。
  • 同じ channel で新しい公開ビルドがあれば、OTAアップデートが行われる。
  • 別名の channel でビルドを行えばOTAアップデートは行われない。
  • 個人的には channel は「v2.0」の形で、メジャー・マイナーバージョンを設定している。パッチバージョンの更新のみOTAアップデートの対象にする方針。

release channel とは

https://docs.expo.io/distribution/release-channels/

リリースチャンネルを使うことでOTAアップデートにより更新を配布するか制御ができます。

ユーザーの端末のアプリに設定されている channel と同じ channel で新しいビルドがExpo にある場合、OTAアップデートが実行されます。 別名の channel であればOTAアップデートの対象にはなりません。

他にも Expo SDK のバージョンが異なる場合など、OTAアップデートの対象にならない条件があります。

テスト環境用ビルドを用意したい場合やOTAアップデートを行いたくない場合に、channel を利用して制御します。 そうしないと、思わぬ更新がユーザーの端末に配布されてしまう場合があります。不具合やまだ確認中の新機能や画面が公開されてしまっては困ります。

コマンド

Expo でビルドする際のコマンドを以下のようにします。

expo build:ios --release-channel <your-channel>
expo build:android --release-channel <your-channel>

特にチャンネルを指定しない場合は「default」チャンネルになっているはずです。前回のビルドも default チャンネルで行っている場合、OTAアップデートが有効になります。 実機確認用にビルトしたい場合やリリース日をちゃんと制御したい場合であれば、channel の指定を行ってOTAアップデートが行われないように制御しましょう。

運用方針

個人的な運用方針としては、メジャーバージョンとマイナーバージョンの数字で、channel 文字列を設定しています。

v2.1

こうすることで、パッチバージョンの更新はOTAアップデートで配布。 マイナー・メジャーバージョンの更新はOTAアップデートで配布せずにストアからアップデートする。

という形にしています。 パッチバージョンはストアでリリースしなくてもよいのですが、私はストアにも反映しています。 OTAアップデートは不具合に対する急ぎの対応や、日時を制御したいお知らせメッセージなどを審査なしで配布する目的で利用しているイメージです。

おわりに

Expo を利用する最初のうちは channel の指定を行わず、基本 default チャンネルでビルドしていました。 ある日「4/1 から変更を反映したい!それまでは更新したくない!」という要件ができたとき、OTAアップデートが邪魔になってしまいました。 調べた結果、channel を使うことでOTAアップデートを制御できたので、それを使って審査用アプリ提出や当日のアップデート配布をスムーズに行うことができました。

とても便利ですが、default のまま運用していると思わぬ時に事故を起こす可能性があります。なるべく channnel は意図的に設定するルールがいいですね。

  • このエントリーをはてなブックマークに追加