世界的に有名なゲームエンジン「Unity」に関する資格を皆様は持っているでしょうか?Unityは様々なレベルに向けた公式資格を提供しています。
今回筆者はUnity Certified Expert Programmerを受験してみたので、その範囲についてご紹介いたします。
Unity Certified Expert Programmerについて
まずUnity Certified Expert Programmerについてですが、概要については下記の公式ページに載っています。
これによると下記のような位置づけの説明が書かれています。内容としては、
- 豊富な開発経験を持った熟練開発者であること。
- コードを行えるようなコーディングレベルの知識を持っていること。
- ゲーム開発の考え方やあるべき設計などを理解していること。
を対象とした内容のようです。
この認定試験は、ゲームプレイプログラマー、ゲームエンジニア、ソフトウェアエンジニア、シニアソフトウェアエンジニア、モバイルアプリケーション開発者、ツールプログラマー、AI プログラマー、AR/VR/MR/XR 開発者、DOTS プログラマーなどの職種に 5 年以上の経験を持つプログラマーを対象としています。
この試験でテストされる知識は、実際のプロジェクトの状況で実地の経験を通じて得たものです。試験では、この知識を特定のシナリオに適用し、適切なアクションや結果を判断する能力を評価します。Unity に関する幅広い知識に加えて、分析、細かい部分への気配り、批判的思考のスキルが必要です。
実際に出題された内容
汎用的なゲームプログラミング知識
- Inputに合わせてオブジェクトを動かす処理
- 基礎的な数理API (min, max,sqrt, magnitude),型(ulongなど)
- クラスの継承, インタフェース
- エラーの推定、適したエラーハンドリング
- メモリがオーバーしている時の対処法
- 関数の使い方、修飾子in,out,ref
Unityならではのプログラミング/機能の知識
- EditorExtension
- DOTS(Data-Oriented Technology Stack)
- ドローコール
- HDRP
- URP
- ScriptableObject
- Rendering Pipeline
- Asset Bundle
- Unity Collaborate
- Unity Cinemachine
- Unity PackageManager
- RuntimeInitializer
- Find関数やGetComponents関数などの処理コスト
- CustomView
- prefab
- PlayerPrefs
ゲームデザイン知識
- インスタンスの共有化、使い方
- マテリアルの共有化、使い方
設計や運用に関するベストプラクティス
- プロジェクトが始まって最初に決めるべきこと
- デザイナやUnityに詳しくない人と一緒に業務を進めるためのコストパフォーマンスの高い設計手法。
- 前提となるスケジュールや目標に合わせて優先すべき開発事項
- リスクの低い開発対応の検討。
- 運用を見据えてまず取り組むべき高優先度事項。
筆者のイメージとしては知識ベースの問題は3割、コーディングに関する問題が3割、高度や設計や運用に関する問題が3割くらいではないかと感じました。
このうち知識ベースとコーディングに関してはそこまで開発経験がなくてもカバーできそうな印象を受けました。ただしゲーム開発ならではのプログラミング知識が問われたりするのでそこはカバーしておいた方が良いかと思います。
一方で「Expert」という名前がつけられていることもあり、開発の経験などによるセンスが問われる問題も多く出題されます。この辺りは経験の浅いプログラマーには難しいかもしれません。所感としてUnityを全く触ったことのないエンジニアには厳しい試験ではありますが、ある程度触ったことがあれば対応できなくもない問題が思っていたより多い印象です。
試験自体がかなり勉強になる
この試験、日本円にしてだいたい50,000円弱と高額なのですが、この試験自体がかなり勉強になりました。Unityに関してカバーしておいた方が良い知識を汎用的・包括的に学べます。加えてUnityに限らないゲーム開発であるべき知識やそもそも全て開発・運用全般に通ずる考え方や着眼点を学べるので、ある意味学びのツールとして有用だと思います。