5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クラスターAdvent Calendar 2022

Day 8

PC,モバイル,VRに対応したマルチプラットフォームアプリのリリースフロー

Last updated at Posted at 2022-12-08

この記事は クラスター Advent Calendar 2022 8日目の記事です。
昨日は @UnlimitedBuildWorks さんの 私とEyePhoneの出会い でした。
30年前からHMDが存在していたのに驚きですね!!

こんにちは!クラスター株式会社でSoftware Engineerをしているizumiです。
私は現在主にiOS/Unityの開発と、アプリのリリース担当をしています。

clusterの対応プラットフォーム

image.png

「cluster」は、VRからスマホまでどこからでも遊べるメタバースプラットフォームとして、現在では以下のプラットフォーム向けのクライアントアプリケーションを開発しています。

  • Windows Desktop
  • Windows VR
  • macOS
  • iOS
  • Android
  • Meta Quest2

また、クライアントアプリ以外にWebアプリケーションの開発も行っており、Webを含めた全てのプラットフォームに対して基本的に毎週リリースを行っています。

clusterのリリースフロー

clusterのリリースフローを簡単にまとめると下記のようになります。
基本的にこのサイクルで毎週アプリのリリースを行っています。

image.png

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チームへと配信されます。

図にすると以下のような構成
image.png

QA

火曜日から木曜日まではQAフェーズです。
branch cutで配信したビルドを用いてQAチームが新規機能のテストからリグレッションテストまでを行います。
(clusterのQAチームはいつも短期間で多くのプラットフォームのテストしていて非常に頼もしいです!!)

バグがあった場合には、バグの優先度がトリアージされ、リリース不可なバグと判断された場合にはRC branchへの修正のcherry-pickやバグがあった機能のFeatureFlagをOFFにしてリリースの見送りが判断されることもあります。

審査提出

QA完了後、App Store / Google Playへの審査提出を行います。
主にここからがリリース担当者である筆者の仕事になります。

審査に提出する際のリリースノートやストア情報の更新などはプロダクトマネージャーやマーケティングチームのメンバーと共同で作成します。
この時に例えば、VRに関する新機能はVR対応のプラットフォームにのみ記載するようにする、などプラットフォーム毎にリリースノートを最適化することもあります。

リリースノートが完成したあとは各プラットフォームの審査に提出し、審査が通るよう祈ります :pray:

リリース

審査通過後はいよいよリリースです。
自動リリースなどは行わずに、各種ストアでの公開やリリース用のCIを手動で実行しています。
基本的にはボタンをポチポチするだけの作業ですが、常に程よい緊張感を持ちながらリリースしています。

この作業によってPC、Mobile、VR、全てのプラットフォームの新しいバージョンが同時にユーザーへ届けられます。
(※厳密にはストア反映による多少のタイムラグがあります)

リリース内容は社内にも展開します。
image.png
リリース担当をすると沢山リアクションも貰えるので役得ですね。

おわりに

このようなフローでclusterでは全てのプラットフォームのリリースタイミングを揃えて定常的にリリースしています。

モバイルアプリなどではiOS/Android別々にリリースするケースもよくありますが、各プラットフォームのリリースを揃える事によってユーザーへの告知タイミングを揃えられる点や、強制アップデートやリリース時期の調整が必要になった場合にもリリース担当者が全プラットフォーム管理しているのでコミュニケーションパスが分かりやすくなることが利点かと思っています。
また、個人的に今まではApp Store Connectしか触っていなかったのですが、clusterでリリースを担当するようになってGoogle PlayやMeta Quest向けのダッシュボードも触るようになったことは新鮮でした。

ちなみに2022年は今日までに47回のリリースを行いました!
(※hotfixなどの緊急リリースは除く)

来年以降も定常的にアプリをリリースできる環境を保っていきたいですね。
リリースフローには改善の余地もまだまだあるので、改善したいエンジニアも絶賛募集中です!

さて、明日は @toyakun さんのクラフトアイテム制作Tips&公式アイテムの話です。
今年リリースされたワールドクラフトのアイテム制作の話ということで非常に楽しみです!

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?