ECSとは
ECSは「Entity Component System」の略称で、データ指向の設計手法です。Unityでは「DOTS (Data-Oriented Technology Stack)」の一部として知られています。
- Entity: オブジェクト(個体)を識別するためのIDです。自身はデータや機能を持ちません。
- Component: 属性や状態を保持する「データ」のみの構造体です。
- System: コンポーネントの状態を監視し、更新を行う「ロジック(処理)」です。
従来のOOP(Unity等)との比較
- Entity: UnityのOOPにおける
GameObjectに近い概念ですが、Entity自体は空のコンテナ(ID)に過ぎません。 - Component: UnityのComponentと概念は似ていますが、ECSのComponentはデータのみを持ち、振る舞い(メソッド)を持たないことが大きな特徴です。これにより、実行時の付け替えが非常に高速かつ容易になります。
- System: Unityにおけるスクリプト内の更新ロジックに相当します。特定のコンポーネントを持つEntityを抽出し、一括で処理を行います。
ECSの利点
ECSを採用することで、データがメモリ上に連続して配置されるようになります。これによりCPUのキャッシュ効率が極めて高くなり、大量のオブジェクトを高速に処理することが可能です。また、データと処理が明確に分離されるため、コードの再利用性や保守性が向上するというメリットもあります。