masayuki5160's diary

ソフトウェアエンジニアの雑多ブログ

モバイルアプリを好きな時にリリースしたい

TL;DR

色々理解はしてるけど、承認されないとアプリリリースできないのはやっぱり嫌。好きな時にリリースしたいよね、というお気持ちがある。

App Centerのretirement 

こないだ、Azureで提供されてるApp Centerがなくなることを知った。React Nativeでアプリを運用していればApp Centerが提供するCodePush はなくてはならないサービスなので、驚いた方もいるだろう。僕も以前はよく使っていて何度助けられたかわからない。(ちなみにCodePushはどうも別サービスか何かで代替できるのか、個別で問い合わせするように連絡先が書いてあった)

learn.microsoft.com

 

そんなことを考えていたら、そいやそもそも14、5年前と比べて格段にアプリのリリースは楽になったな、というのを思った。

"昔と比べると、CodePushがあってもなくても全然良くなったよ今は"

ていう話をおじさんとしては定期的にしてしまうことがあるのだけど、まあでもよく考えると好きな時にリリースできないってのは辛いよなーと改めて思っている。

アプリのリリースとその制約

React NativeというかCodePushによる不具合修正対応がアプリ審査なしでできることは非常によかった。僕もたまたま勤め先で利用しているプロダクトに関わるまでそんな方法があることを知らなかった。

アプリ(プロダクト)への要件として即座に不具合修正が必須、というケースはWebViewを使ったプロダクトにするしかないよなーと思っていた。最近はそういうのも少ない印象だけど。

 

詳細は割愛するが、プラットフォーム側もCodePush、すなわちOTA(Over The Air)によるアップデートは許容している認識。が、正直何とも言えないグレーな状況かな、と考えていて、よくわからない。以下記事にプラットフォーム側の主張の解釈が解説されているが、現状僕もこの方と同じ認識。

zenn.dev

僕の理解が追いついていないだけならいいけど、OTA配信に頼り切ったアプリ運用は僕ならしない。怖すぎる。どうしても何かしらの要求に対応するためにOTA配信に頼る場合は、ガイドラインを改めて読み直し、プラットフォーム側とやりとりをした上で判断をする。

だから、僕が担当してきたアプリでは、不具合修正や軽微な修正程度でCodePushを利用していた。

アプリで不具合が出ているのに、悠長に審査待ちをしているのはチームのメンタルにも影響はある。チームに限らずプロダクトや事業そのものにもそう。CodePushという手段で致命的な不具合に対しての対応ができる、という選択肢があることは嬉しい。実際に僕も何度も助けられた。

 

振り返ると、15年前くらいに僕がアプリ開発を始めた頃は、アプリ審査に4、5日かかることは普通のことだった(iOSのアプリ審査だけと思う)。だからアプリのリリーススケジュールを立てるのが簡単ではなかった。

ここまで時間がかかると、それを見越したサービス設計、運用が必要になる。だから、当時担当していたゲームアプリでは、アプリ更新なしでゲーム内アイテムを追加できるよう設計した。これは必須要件だった。今でも多分モバイルゲームのアプリではそうなんかな、最近やってないから知らないけど、まあそうだろう。

 

当時はアプリで不具合が出た日には修正まで数日かかっていたし、それを上長に報告するのもなかなか辛みがあった。まあでもどうしようもない。

特急審査というのがいつからあったかわからないが、それを利用したら一日程度ですぐ見てくれる、というのはほんとに神だった。今では普通のことだけど。

 

そんわけでアプリを安定してアップデートし続けるのはやっぱり簡単ではない。もっと楽したいわけなんだけど、そういう時のアプローチの一つしてリリーストレインは良いフレームワークの一つだと思う。リリーストレインについての詳細はメルカリさんの記事に詳しい。

engineering.mercari.com

リリーストレインというフレームワークの元々の出典がどこかわからないんだけど、アプリに限らずソフトウェア出荷までの仕組みを体系的にまとめた良い知恵だと思っている。まさにソフトウェアエンジニアリングていう感じがして個人的には好き。

でも、好きな時にリリースしたい

アプリのリリースについて、やはり好きな時にリリースしたい、というのは改めて思う。

とはいえ、プラットフォームに従うことで多くのユーザにサービスを届けることができていることはもちろんわかっている。個人情報の正しい取扱いをしているプロダクトか、の審査が重要なこともわかる。大事。良いプロダクトを提供し続けるため、プラットフォームのガイドラインが必要。僕が逆の立場だったとしてもそうすると思う。

 

でも、リリース好きな時にしたいよなーと思う。

これはこれ、それはそれ。うまくバランス取りながら付き合わないといけないやつ。

 

リリーストレインはこの悩ましい状況に対するソフトウェアエンジニアリングを用いた良いHowだと思ってる。

でも、リリーストレインなんて、導入する必要がないならしない方が良い。ささっと関係者で話てリリースを明日にしよう、てなるならそれが最速。そりゃそう。

小さいチームでサクサク開発して好きな時にリリースできる。アプリの運用もそうなればいいのになーと改めて最近思っている。アーキテクチャと組織設計を上手いことしてそれが可能ならそうした方が断然良いはず、と思う。

とはいえこの辺りのバランスの難しさも良くわかるので、トレードオフ関係を整理しながら何を取って何を捨てるか、という選択の問題になる。難しい。

 

ちなみにAltStoreの話も気になってはいるが、僕が話してるアプリの審査周りのことでいうと、AltStoreだったとしてもそんなに変わらないのかしら。多分変わらないんだろうな。Androidの方だとAltStore色々ある認識だけど、まあ同じようなもんかなと思っている。

gigazine.net

まとめ

信頼できるプラットフォームがあることによる恩恵は理解してる。ガイドラインや審査がそのために必要。昨今の状況を見てると、今後ますます信頼できるプラットフォームかどうかは重要になってくると思うし、そうするとプラットフォームによる審査やガイドラインは大事になるだろう。

わかってはいるし、昔よりもどんどん良くなってるのも知ってるからまあいいか、とも思ってしまう。けど、なんかそれはそれで違うような気がしていて、なんだかなー、と思いつつ、今日もリリーストレインに頼ったアプリのリリース計画とにらめっこしてる。リリーストレインのおかげで僕の仕事はだいぶ楽ではあるんだけど、なんか悩ましい。終わり。