この記事は クラスター Advent Calendar 2022 8日目の記事です。
昨日は @UnlimitedBuildWorks さんの 私とEyePhoneの出会い でした。
30年前からHMDが存在していたのに驚きですね!!
こんにちは!クラスター株式会社でSoftware Engineerをしているizumiです。
私は現在主にiOS/Unityの開発と、アプリのリリース担当をしています。
clusterの対応プラットフォーム
「cluster」は、VRからスマホまでどこからでも遊べるメタバースプラットフォームとして、現在では以下のプラットフォーム向けのクライアントアプリケーションを開発しています。
- Windows Desktop
- Windows VR
- macOS
- iOS
- Android
- Meta Quest2
また、クライアントアプリ以外にWebアプリケーションの開発も行っており、Webを含めた全てのプラットフォームに対して基本的に毎週リリースを行っています。
clusterのリリースフロー
clusterのリリースフローを簡単にまとめると下記のようになります。
基本的にこのサイクルで毎週アプリのリリースを行っています。
branch cut ~ RC build
clusterではモノレポでの開発を行っており、一部のプラットフォームやコードを除いて基本的に1つのリポジトリで管理し、開発中の機能はFeatureFlagで分岐するようにしてmain branchへどんどんマージしています。
※FeatureFlagや機能開発については弊社のtech blogでも解説しています
毎週月曜日に現在のmain branchからRelease Candidate(RC) branchを作成(=branch cut)し、各プラットフォーム向けにビルドを行います。
RC branchの作成、buildはCIで行われ、この時に各Platformのバージョン番号も統一して割り当てています。
CIにはGitHub ActionsとJenkinsを採用しており、モバイルアプリのbuildや配信にはfastlaneを用いています。
ビルドした成果物は、iOSはTestFlight、AndroidはFirebase App Distribution、Meta QuestはQuest StoreのAlpha Channel、PC版はS3、といったように各プラットフォーム毎の配信方法で社内のQAチームへと配信されます。
QA
火曜日から木曜日まではQAフェーズです。
branch cutで配信したビルドを用いてQAチームが新規機能のテストからリグレッションテストまでを行います。
(clusterのQAチームはいつも短期間で多くのプラットフォームのテストしていて非常に頼もしいです!!)
バグがあった場合には、バグの優先度がトリアージされ、リリース不可なバグと判断された場合にはRC branchへの修正のcherry-pickやバグがあった機能のFeatureFlagをOFFにしてリリースの見送りが判断されることもあります。
審査提出
QA完了後、App Store / Google Playへの審査提出を行います。
主にここからがリリース担当者である筆者の仕事になります。
審査に提出する際のリリースノートやストア情報の更新などはプロダクトマネージャーやマーケティングチームのメンバーと共同で作成します。
この時に例えば、VRに関する新機能はVR対応のプラットフォームにのみ記載するようにする、などプラットフォーム毎にリリースノートを最適化することもあります。
リリースノートが完成したあとは各プラットフォームの審査に提出し、審査が通るよう祈ります
リリース
審査通過後はいよいよリリースです。
自動リリースなどは行わずに、各種ストアでの公開やリリース用のCIを手動で実行しています。
基本的にはボタンをポチポチするだけの作業ですが、常に程よい緊張感を持ちながらリリースしています。
この作業によってPC、Mobile、VR、全てのプラットフォームの新しいバージョンが同時にユーザーへ届けられます。
(※厳密にはストア反映による多少のタイムラグがあります)
リリース内容は社内にも展開します。
リリース担当をすると沢山リアクションも貰えるので役得ですね。
おわりに
このようなフローでclusterでは全てのプラットフォームのリリースタイミングを揃えて定常的にリリースしています。
モバイルアプリなどではiOS/Android別々にリリースするケースもよくありますが、各プラットフォームのリリースを揃える事によってユーザーへの告知タイミングを揃えられる点や、強制アップデートやリリース時期の調整が必要になった場合にもリリース担当者が全プラットフォーム管理しているのでコミュニケーションパスが分かりやすくなることが利点かと思っています。
また、個人的に今まではApp Store Connectしか触っていなかったのですが、clusterでリリースを担当するようになってGoogle PlayやMeta Quest向けのダッシュボードも触るようになったことは新鮮でした。
ちなみに2022年は今日までに47回のリリースを行いました!
(※hotfixなどの緊急リリースは除く)
来年以降も定常的にアプリをリリースできる環境を保っていきたいですね。
リリースフローには改善の余地もまだまだあるので、改善したいエンジニアも絶賛募集中です!
さて、明日は @toyakun さんのクラフトアイテム制作Tips&公式アイテムの話です。
今年リリースされたワールドクラフトのアイテム制作の話ということで非常に楽しみです!