へなちょこSEの考察

0x22歳のへなちょこSEが、日々思うことを考察します。自社内、金融系を経て現在法人系PKG開発に従事。

React Nativeで開発するならExpoなんだけど、OTAアップデートが逆に困る件

React Nativeで開発をするなら、Expoはとっても便利です。

最高なのは実機での確認がすごく簡単なこと。

特にiPhoneでの開発には通常はMacが必須なわけですが、普段使うのはWindowsなんだよなぁなんて自分みたいなエンジニアには、Windowsで開発しながら即時でiPhone実機で確認ができるのはすげー便利です。

ただ、実際に運用するフェーズに入ったら、Expoのメリットの一つであるOTAアップデートが困る面もあります。

OTAアップデートとは

ここで言うOTAアップデートとは、Expoで「Publish」なるコマンドを使うと、アプリストアのバイナリをアップしなおさなくても、ユーザーのアプリが更新される機能のことです。

更新されるタイミングは再起動が必要だったり、制御するにはそれようのプログラミングが必要ですが、いちいち審査に出して公開を待つ、なんてことをするよりは全然早くて便利です。

ただ、一点だけ困るのは、アプリストアのアプリを更新するために「build:ios or android」を実行しても、Publishされてしまうこと。

一応、release-channelなんて機能もありますが、公開用のチャンネルに対してビルドしたら、やはり勝手にアップデートされてしまいます。

個人開発だったり気にしないレベルの更新とかならいいんですが、大規模アップデートだったりとか、会社で作ってるアプリだったりすると、更新されるべきタイミングを制御したい場合もあったりします。

そうすると、リリースチャンネルは使い捨てのように毎回変えながらビルドしていく形にしないといけない・・・??

たぶん、ブランチを切って開発したらそのブランチ名でリリースチャンネルを設定してリリース、次のブランチはまたリリース時にブランチ名でリリースチャンネルを指定してリリース、って感じで行くのが良いのかなぁ。

そうすると、通常の開発だとブランチで開発して終わったらマスターにマージ、って感じになりますが、ブランチで開発してリリースチャンネルを作ったら以後そのブランチをマスターとして、また別にブランチを切って、バグは元のブランチ=新しいマスター側に反映してリリース・・・みたいな運用になるんでしょうか。

そういうルールで、リリースチャンネルをブランチ名から自動指定できるようにしたら、まぁできないこともない運用かなぁ。

リリースチャンネル運用、計画的にやりましょう。