IT・情報処理 / Unity 認定

Unity認定 アソシエイト:プログラマーの例題・出題範囲・重要用語

出題範囲

  • テックリードエンジニアが作成/設計した既存のシステムへの統合で扱われたコードを評価する
  • コーディング標準とベストプラクティスを適用する。
  • 指定されたインタラクションまたはプログラミングロジックを実行するコードを判別する
  • シーン間のトランジションを実装するプロセスを決定する
  • 静的変数やPlayerPrefsなどのアプローチを使って、シーン間やセッション間でデータを保存する
  • UnityのAPIドキュメントに従って、UnityのAPIメソッドを使用して定義された結果を取得します
  • GameObjectのプロパティ、スクリプト、コンポーネントを必要なタスクに応じて適切に選択する
  • 基本的な継承とインターフェースの違いを説明する
  • リスト、配列、辞書を含むがこれらに限定されない、特定の状況に対して一般的に使用される適切なデータ構造を選択する
  • 浮動小数点数、ブール値、文字列など、特定の状況に応じて適切なデータ型を選択する
  • WebGLまたはパーソナルコンピュータにアプリケーションをビルドする
  • アンカー、ピボット、グループを使用して、定義されたレイアウトに従ってキャンバス上にUIコンポーネントを配置する
  • 様々なUI要素にデータを表示するために必要なプロセスを特定する
  • UnityEventシステムを使用してユーザー入力に応答する方法を説明する
  • コードが期待通りに実行されなかった場合に考えられる原因を特定するためのプログラム・デバッグ・メッセージ
  • コードブロックからコンパイルエラーの原因を特定する
  • ヌル変数に起因するエラーの特定
  • 定義されたコーディング標準に適合するようにコードをリファクタリングし、改善するために必要なテクニックを特定する
  • 適切なプロファイリング・ツールを選択し、パフォーマンス問題の原因を特定する
  • シーンでのプレハブの使い方を説明する
  • ネストされたプレハブまたはプレハブの変形を変更するプロセスと結果を説明する
  • Unityで作業する際のバージョン管理の主な目的を説明する

例題に挑戦

スキルサートのAIが生成した演習問題のサンプルです。アプリでは毎週新しい問題が追加されます。

例題1

次のコードブロックにおいて、コンパイルエラーが発生する原因として正しいものはどれか。 ```csharp public class PlayerController : MonoBehaviour { void Start() { int playerHealth = 100 Debug.Log(playerHealth); } } ```

  1. セミコロンの欠落
  2. MonoBehaviourを継承していない
  3. Debug.Logメソッドの引数が無効である
  4. Startメソッドにアクセス修飾子が必要である
  5. 変数名の命名規則が誤っている
解答と解説を見る

正解: セミコロンの欠落

C#の構文ルールでは、命令文の末尾にセミコロン(;)を記述する必要があります。提示されたコードでは、変数playerHealthを100で初期化している行の末尾にセミコロンがないため、コンパイラはエラーを出力します。これはプログラムの基本構造に関わるエラーであり、Unityのコンソールでも頻繁に指摘される箇所です。正解は「セミコロンの欠落」です。

例題2

次の2つのスクリプトが存在する場合、UIスクリプトでコンパイルエラーが発生する原因はどれか。 ```csharp // ScoreManager.cs public class ScoreManager : MonoBehaviour { int currentScore = 10; } // UI.cs public class UI : MonoBehaviour { public ScoreManager manager; void Update() { Debug.Log(manager.currentScore); } } ```

  1. アクセス修飾子の不足により変数にアクセスできない
  2. Updateメソッド内でDebug.Logを使用できない
  3. ScoreManagerが正しくインスタンス化されていない
  4. manager変数が初期化されていない
  5. currentScoreが整数型であるためログ出力できない
解答と解説を見る

正解: アクセス修飾子の不足により変数にアクセスできない

C#において、クラス内のフィールドにアクセス修飾子(publicやprivateなど)を明示しない場合、デフォルトでprivateとなります。ScoreManagerクラスのcurrentScore変数は修飾子がないためprivate扱いとなり、外部のUIクラスからはアクセスできません。外部から参照するには、public修飾子を付けるかプロパティを介する必要があります。正解は「アクセス修飾子の不足により変数にアクセスできない」です。

重要用語

シングルトンパターン
特定のクラスのインスタンスがシステム内で1つだけに制限される設計パターンです。Unityでは、GameManagerなどのグローバルにアクセスが必要な管理用クラスでよく用いられます。既存システムとの統合では、複数のインスタンスが生成されないよう注意深く扱う必要があり、テックリードが設計した共通基盤へのアクセス手段として頻出します。
インターフェース
クラスが実装すべきメソッドやプロパティの定義のみを持つ仕組みです。テックリードが設計した既存システムに新しい機能を追加する際、特定のインターフェースを実装することで、システムの内部構造を深く知らなくても安全に機能を統合できます。コードの依存関係を低減させ、拡張性を高めるために不可欠な要素です。
ScriptableObject
大量のデータを効率的に管理するためのUnity独自のクラスです。シリアライズ可能なデータをアセットとして保存でき、メモリ消費を抑えながら複数のオブジェクト間でデータを共有できます。リードエンジニアが設計したデータ駆動型のシステムでは、設定値やステータス管理に広く活用されるため、その扱いの理解が求められます。
名前空間 (Namespace)
クラス名や型名の衝突を防ぐために、コードをグループ化して整理する仕組みです。大規模なプロジェクトや、外部ライブラリを既存システムに統合する際、自身のコードが既存のシステムと干渉しないよう適切に定義する必要があります。テックリードが定めるコーディング規約に従い、整理されたコード構造を維持するために重要です。
UnityEvent
インスペクター上でイベントハンドラーを設定できるUnityの仕組みです。オブザーバーパターンを簡便に実現し、スクリプト間の依存関係を切り離す(疎結合にする)ことができます。リードが作成した既存のUIシステムやゲームロジックとの連携において、コードを直接書き換えずに動作を追加する際の主要な手段となります。
抽象クラス (Abstract Class)
他のクラスのベースとなるクラスで、そのままではインスタンス化できません。共通の機能を提供しつつ、特定のメソッドの実装を派生クラスに強制します。既存システムで定義された基本クラスを継承して新しいコンポーネントを作成する場合、システム全体の設計ルールを守りながら機能を拡張するために利用されます。
リファクタリング
外部から見た動作を変えずに、コードの内部構造を整理・改善する作業です。テックリードが作成したコードに新機能を統合する際、既存のロジックを理解し、可読性や保守性を高めるために行われます。技術的負債を解消し、将来的な拡張に耐えうるコード品質を維持するために、アソシエイトレベルでも意識すべき重要なプロセスです。
カプセル化
クラス内部の状態や詳細な実装を隠蔽し、外部からは必要な操作のみを公開するプログラミングの原則です。テックリードが設計したシステムの堅牢性を守るために、公開されたAPI(パブリックメソッドなど)のみを通じて操作を行い、不用意に内部変数にアクセスしないことが求められます。これにより、予期せぬバグの混入を防ぐことができます。

Unity認定 アソシエイト:プログラマーの対策はアプリで

AIが毎週生成する新作問題・ランクマッチ・週次ランキング・AI診断で「続けられる」資格学習を。無料で始められます。

IT・情報処理の他の資格