メタバースを支えるエンジニアの生態について/iOSDC2022登壇レポート

先日行われたiOSDC Japan 2022。
クラスター社でも社員が登壇し、2つのテーマについて発表いたしました。

この記事では「メタバースを支えるエンジニアの生態について」の内容を紹介します。

※iOSDC Japan:iOS関連技術をコアのテーマとした技術者のためのカンファレンス

今回のイベントの登壇者

クラスターのエンジニアについて

clusterは3D空間のイメージが強いため、他領域のエンジニアの方からは「3DCGエンジニアではなくても活躍できますか?」「iOSエンジニアは採用していますか?」という質問をよくいただきます。

もちろん、答えは「Yes」です。

実際にどのようなバックグラウンドを持つエンジニアが働いているのか、社員にアンケートをとったので紹介します。

クラスターに入社する直前に働いていた業界は?

半数以上のエンジニアは、Webアプリケーション・モバイルアプリケーションの開発エンジニアで、3DCGの利用が多い業界出身者ではありません。ついで、ゲーム系開発から参加しているエンジニアが多く、もっとも関係が深いVR業界からの参加者は9%程度です。

上の図から分かるように、半数以上が3DCGとは縁の薄い業界からクラスターに入社しています。業界経験は選考にさほど影響しないため、安心してクラスターにご応募いただければと思います!

仕事で一番使っている言語は?

Unityで採用されているC#と、サーバーサイド開発で使われているGo言語が上位にはいっています。TypeScriptは Webフロントエンド開発に利用しているため、多くの割合を占めていると言えますね。

ついでSwiftがランクインしています。KotlinはもちろんAndroid開発に、SQLはデータエンジニアが分析業務に利用している状況です。

出社時間は?

クラスターではフレックス制を採用しているので、普段の始業時間も聞いてみました。

結果として、お昼前までには大半のエンジニアが業務を開始しています。

体感としては、もう少し遅い時間から勤務する人が多い印象なので、ちょっと意外な結果でした。とはいえ、10時以降に始業する人が半数以上ですので、朝が早い会社では無さそうです。18時以降の回答があるのは副業で参加しているエンジニアが居るためです。

オンラインMTGのアバター参加率は?

クラスターの魅力とも言えるオンラインMTGのアバター参加についてもアンケートをとりました。

結果として、半数以上が普段からアバターで参加しています。
mtgだけではなく採用面接に面接官がアバターで現れることもありますし、採用候補の人がアバターで来られることもあります。

実際、面接には公序良俗を満たす限りはどんなアバターで参加しても問題ありません。自慢のアバターで参加しましょう。

クラスターの開発フローについて

クラスターではEpicと呼んでいる開発フローを採用しています。

Epic :Product Requriements Document (PRD)を起点として、振返り終了するまでの一連の流れ

下記が、Epicの流れの全体図です

全体図の説明に入る前に、簡単にクラスターのエンジニア組織について紹介します。

クラスターのエンジニア組織

現状5つのチームがあります。

ユーザーデータの分析を行うデータエンジニア、データアナリストのチームとして「analytics」、機能開発を行うチームとして「social」「economy」「create」「play 」に分かれています。

※人数や個々のメンバーは正確ではないのでご注意ください。

さらにそのチームメンバーの中からEpic毎の小さなチームを組成しています。

この図ですと、黒頭巾に赤髪のkyokomiさんが、 Epic owner兼、android担当エンジニアとしてアサインされています。他にも Web Frontend担当、iOS担当、Backend Server担当、Unity担当がいるエンジニアチームですね。

続いて、Epicの流れの中の重要なイベントについて解説します。

====

PRD(Product Requirements Document)

まずは、Epicの起点となるPRDについて説明します。

RPDとは、どんな機能を開発したいのかを簡潔に説明した文章です。

PRDはProduct Managerが書き、役員を中心としたプロダクト系幹部メンバーが開発承認を行います。開発の手戻りが起きないように、企画段階から幹部メンバーへの説明が行われているわけです。

Epic Kick-off

次にEpicを進めるリーダーであるEpic Ownerが中心となり、Epic Kick-off(Epic を始めるための会)を開きます。

招集されるのは、その機能のPRDを書いたPM、デザイナー、実装後にテストを行うQA担当者、そして実装を担当するエンジニアです。Epic Kick-offでは、PRDに書かれた内容を実装するために、スケジュールやそれぞれが担当する作業の確認を行います。

Epic実装中

Epic Kick-off後に開発がスタートします。開発中の情報共有は Epic Ownerに一任されています。ですので、Slackで日報を書くスタイルやデイリーでミーティングを開くスタイルなど、Epic Ownerによってやり方が変わります。

Bug Bash

開発期間の終盤には、Bug Bashと呼ばれるイベントがあります。これはエンジニア、QA担当者が集まって実装中の機能に触れる会です。

Bug Bashは毎週木曜日に開催しており、自分が参加していないEpicで開発している機能に触れ、バグが発生していないかを探します。

開発に参加していないエンジニアが参加することで、当事者であると逆に見落としてしまうようなバグを発見できることができます。

Release Review

Bug Bashで致命的な問題がなければ、翌日金曜日にRelease Reviewが行われます。

Release Reviewは、プロデューサーが実装された内容が、リリースして良い状態にあるかを最終確認する機会です。

プロデューサーというのはサービス開発の最終責任者で、現在は代表の加藤が務めています。無事通過すれば、翌週にコードがRelease Candidate Branchに入ります。通過しない場合はリリースは見送られ、プロデューサーから指摘があった事項の修正が始まります。

Release Candidate Branch Cut

毎週月曜にはRelease Candidate BranchのCutがあります。我々は単にCutと呼んでいることが多いです。リリース用のブランチが切られるタイミングで、このブランチに入らなかったコードはその週にはリリースされません。クラスターでは機能の有効化・無効化を feature flagで管理しているので、リリースされない場合は、feature flagをoffにして対応します。

QA Sign-off

Release Candidate BranchがCutされ、コードがフリーズされると、QAによるテストが始まります。テストの結果、リリースできる品質であるとQAが認めると、Sign-offが行われます。

Sign-offされた機能はいよいよリリースです。Sign-offされない場合は、残念ながらリリースは見送られ、修正が始まります。

Release

RC Branchからリリース用のビルドを作成します。作成されたビルドはApp Store、Play Storeの審査を受けます。審査が無事すべて終わると、すべてのPlatformで同時に公開されます。

iOS/Android/Quest2/Windows/Macと対応するPlatformが多いのも、clusterの大きな特徴です。しかし、それぞれ別のビルドが必要になるので、ビルド提出は大変な作業です。

Epic振返り

リリースが終わると、Epicの振返りが行われます。KPT(Keep / Problem / Try)の抽出を行うのですが、これはMiroを使かったオンラインミーティングとして30〜60分ほどかけて行います。参加者は開発に参加したエンジニアやQA担当者です。

この振返りが毎回必ず行われるところがクラスターの大きな特徴の一つです。より良い開発が行われるように、毎回のEpicで改善を目指しています。

並行していくつものEpicが進行してるので、このEpic振返りの要点を集約するリリース振返りも後日開催されます。リリース振返りでは、各Epic Ownerやエンジニアリングマネージャー、PMリーダー、QAリーダーが集まります。

====

clusterの開発フローの大きな特徴は、

・Epic毎に開発メンバーが招集されチームが生成される
・Epic Onwerが進め方を決めている
・振返りが毎回ある

という点を挙げることができます。振返りを通じて徐々に改善を積み重ねているので、次に紹介するときには、また少し違う形の開発フローになっているかもしれません。

またEpicだけですべての開発に携わることはできないので、開発チーム、Epicのチーム以外にも、様々な会議体がエンジニア組織には存在します。

まとめ

クラスターでは、Unityエンジニアだけでなく、 iOSエンジニア、Androidエンジニア、Webエンジニア、Serverエンジニアと様々な領域で採用強化中です!

クラスターでは自分の得意な領域をベースに、領域をまたいで活躍することも可能です。実際にiOS担当エンジニアとして入社、その後はUIフレームワークの知識を活かして、UnityのUIフレームワーク作成を担当しているエンジニアもいます。

このように活躍の幅が広いのがクラスターの特徴です。ぜひメタバースを遠いところと感じていた人も、まずはカジュアル面談でお話できたら幸いです。