基盤開発の属人化を防ぐための施策「テックリレー」を実施してみた
はじめに
株式会社QualiArtsの田村です。 Unityエンジニアとしていくつかのゲーム開発に携わったのち、現在は開発推進室という主にゲーム開発のための基盤を開発する組織に所属しています。 また、QualiArtsの技術組織では領域ごとに分科会と呼ばれる組織を設けて課題解決していますが、その中のUnity領域を担当するUnity分科会のリーダーとしても活動しています。
分科会について参考:QualiArtsの2021年の技術組織を振り返る
Unity分科会では、今年2022年の1月から4月まで、テックリレーという施策を実施しました。 本記事ではそのテックリレーについて振り返ります。
テックリレーとは
QualiArtsでは「IDOLY PRIDE」をはじめ、これまでUnityを用いていくつものゲームを開発・運用してきており、多くのノウハウが蓄積されています。 その中で、プロジェクト横断で使える社内基盤の開発にも積極的に取り組んでおり、実際のゲーム開発で多くの社内基盤が活用されています。 基盤の開発者は、開発推進室のようにそれを主業務として行っている人もいれば、ゲームタイトルのプロジェクトに所属しつつゲームの機能開発と並行して行っている人もいます。
一方で、既存の基盤をメンテナンスできる人、新たな基盤をゼロから開発できる人が限られてしまっているという課題がありました。 そのような課題を解決することを目的として、Unity分科会でテックリレーを考案し、実行しました。 ちなみにテックリレーという名前は、技術を伝承するための施策という意味を込めています。
テックリレーでは、2,3人で構成されるグループをいくつか作り、グループごとにテーマを決めて活動を行います。 各グループは、既存の基盤に機能追加するか、新たな基盤の開発を行います。
機能追加することを目的とするグループは、元々その基盤のメンテナーだった人と、そうではないがその基盤の分野に興味のある人から構成されます。 元々メンテナーだった人がグループのメンバーに機能追加の方法を教えることで、その基盤を今後メンテナンスできる人を増やす狙いです。
また新たな基盤の開発を目的とするグループは、基本的には基盤開発に慣れている人とそうではない人から構成されます。 基盤開発に慣れていない人もグループに所属して開発に携わることで、基盤開発の進め方を学び、今後ゼロから基盤開発できるようになることを目指します。 加えて、初めから複数人で基盤を開発することにより、1人しかその基盤の中身を知らないというような属人化の状態を防ぎます。
今回は初めての試みということもあり、テーマとメンバーは公募するのではなくUnity分科会で決めました。 テーマは全部で7テーマとなりました。 テックリレーでの活動はミッションの1つとして個人の目標に組み込むことで、業務時間内で活動しつつ適切に評価されるように注意しました。
テーマの紹介
活動を行った全7テーマのうち、ここではRoslynAnalyzerとAssetViewerをピックアップして簡単に活動内容を紹介します。
RoslynAnalyzer
まずはRoslynAnalyzerをテーマとしたグループについての紹介です。
QualiArtsでは、C#のコードを静的解析して問題を指摘・修正する仕組みであるRoslynAnalyzerを利用し、独自の解析を行っています。 問題があればIDE上で指摘される他、プルリクエストを提出したときに実行されるテストによって自動的に指摘されます。
ただし、RoslynAnalyzerによる独自のアナライザーを開発し内部実装を知っているのは筆者のみという状況でした。 そこでテックリレーでRoslynAnalyzerを1つのテーマとし、それまでRoslynAnalyzerを触ったことがなかったメンバーに機能追加をお願いしました。 もちろん機能追加をお願いする上で、現在の実装がどのようなものでどのように開発を行ったら良いかというのを伝えました。
結果として、そのメンバーも内部実装について理解し、アナライザーで問題を修正する部分を新しく実装したり、問題として指摘するルールを増やしたりすることができました。
AssetViewer
続いてAssetViewerをテーマとしたグループについての紹介です。
QualiArtsでは、3Dやイラスト画像などのアセットを実機やWebGLで確認するための仕組みを用意しています。 この仕組みはAssetViewerと呼ばれ、クリエイターなどがアセットの実際の見た目を確認するときに重宝していますが、ゲームタイトルごとに独自の実装をしているという状況でした。
そこで、今後のプロジェクトで共通で使えるAssetViewerの仕組みを開発することを目的としたグループを作りました。 またこのグループでは技術チャレンジとして、Unityの新しいUIシステムであるUI Toolkitを利用しました。 特にランタイムでのUI Toolkitの利用は社内で事例が無く、ちょうど良い題材であったため採用しました。
結果として、テックリレーの期間中にプロジェクトに依存しない基礎的な部分の実装を完了することができました。 また、UI Toolkitの知見も社内に貯めることができました。 テックリレーで開発したものを実際のプロジェクトに導入するため、このグループはテックリレーの期間が終わったあとも活動を継続しています。
成果発表会
テックリレーの活動は4月で一区切りとし、そこまでの成果発表会を行いました。 成果発表会にはQualiArtsの全てのUnityエンジニアと興味のある他領域のメンバーが参加しました。 通常業務では触れないような技術の話も多く、質問やコメントも盛り上がりました。
テックリレーの結果と今後
テックリレーによって、一部基盤をメンテナンスできる人が増えたり、それまで基盤を開発したことのない人が基盤開発に携われたりしました。 この点に関しては当初の狙い通りになったと思います。 ただし、全てのテーマに関して完全に理想の形になったかというとそんなことはなく、それに加え今回テーマにあがらなかったものに関してもまだ属人化が顕著な基盤は存在しています。 そのため、この問題には継続して取り組んでいく必要があります。
またUnity分科会で最近議論していることが、基盤を使う側の属人化です。 テックリレーは基盤を作る側の属人化の解消を目的としていましたが、基盤を使う側もまた属人化の問題があるのです。 プロジェクト側で基盤を使える人が限られた人になっており、最悪の場合は作った人しか使えないという場合があります。 これではせっかく作った基盤を最大限に活かしきれませんし、使える人が別プロジェクトに異動になったら困ってしまいます。
そこで直近、使う側の属人化の解消にも何か手を打つ予定です。 これについても何か成果が出たらブログを書きたいと思います。