1. トップ
  2. 学校紹介
  3. 情報公開
  4. 学科情報
  5. シラバス - 科目一覧

シラバス

高度ゲーム制作科 2026年度入学生

科目名 プログラミングⅤ 作成日 2026/03/09
区分 選択Ⅰ 講義/演習
開催時期・標準履修年次 3年次 前期
講義・演習駒数/週 2駒
実習・実験駒数/週 0駒
合計駒数/週 2駒
総時間数 60時間
総単位数 4単位
企業連携
授業の目的 これまでに修得したC++の知識と生成AIを活用し、大規模なゲーム開発に耐えうる「堅牢なソフトウェアアーキテクチャの設計と構築」スキルの習得を目的とする。
到達目標 SOLID原則を理解し、依存関係を整理して疎結合な設計が出来る。 デザインパターンを使って効率的な処理を組むことが出来る。 メモリ負荷を抑えたリソース管理が出来る。 タスクシステムの構築が出来る。 外部ファイル(JSON/YAML等)駆動環境の構築が出来る。

評価項目 ①定期テスト ②小テスト ③レポート ④課題 ⑤作品 ⑥ポートフォリオ ⑦成果発表 ⑧その他
割合 50%  %  % 25%  %  %  % 25%
評価基準
下記の項目A.B.C.全てを達成して単位取得とし、項目C.の点数によって秀・優・良・可の評価を行う。  A. 当科目授業の80%以上出席する。80%未満の学生は期末試験の受験資格が無く不合格となる。  B. 教員が指定する実習課題を全て提出する。  C. 中間テストおよび期末テストでそれぞれ60点以上を取得する。
※上記に示した評価項目の割合(%)を基準に、総合評価点を算出して成績評価を行う。
※出席率が80%未満の場合は、評価対象としない。

担当教員 植山 沙欧
テキスト・参考文献 Game Programming Patterns ソフトウェア開発の問題解決メニュー Optimized C++ 最適化、高速化のためのプログラミングテクニック 教員が作成する資料及びテキスト 生成AI
実務経験有無  
  
授業外学習
(予習・復習等)
演習問題が出題されるので、その解決方法を検討したのちにコーディングを行うこと。 考えても理解できない、思いつかない点をまとめ、次回登校時に教員に聞く点をリスト化をすること。 予習よりも復習に重点を置き、分からない点を残さず理解を深めること。  履修前提
※自由選択科目のみ記載
  

授業計画

回数 学習目標 学習項目
1 SOLID原則(単一責任、開放閉鎖など)を学習し、変更に強く再利用性の高い設計が出来る。 密結合なコードの問題点を理解し、依存関係を整理して保守性を高める手法が使える。  SOLID原則(単一責任・開放閉鎖等)を学習する。 密結合なコードの弊害を学習する。 変更に強く再利用性の高いクラス設計手法から依存関係を整理して保守性を高める設計指針を実践する。 
【理解度確認】課題にて確認する。
2 インスタンスを唯一に保証するSingletonパターンを実装し、グローバルな管理が出来る。 Service Locatorパターンを使い、依存性を注入(DI)してテストのしやすい設計が出来る。  シングルトンパターンの功罪を再考し、唯一のインスタンスを管理する厳格な実装手法を学習する。 Service Locatorパターンや依存性の注入(Dependency Injection)を用い、疎結合な設計を実践する。 グローバルな資源管理と拡張性を両立させるための、高度な設計パターンを実践する。 
【理解度確認】課題にて確認する。
3 プレイヤーの入力をコマンドオブジェクトとしてカプセル化し、入力とアクションの分離が出来る。 コマンドの履歴を保持することで、リプレイ機能やUndo/Redo機能が作れる。  プレイヤーの入力をカプセル化するコマンドパターンを用い、入力と挙動を分離する方法を学習する。 コマンド履歴の保持により、リプレイ機能やUndo/Redo機能を容易に実現する手法を実践する。 ユーザー操作の抽象化を通じ、柔軟なアクション制御システムの構築能力を実践する。 
【理解度確認】課題にて確認する。
4 通知側と購読側の関係を構築し、特定のイベント発生時に自動で処理を実行させる仕組みが作れる。 UIの更新やサウンド再生など、ゲームロジックと演出を疎結合に繋ぐことが出来る。  通知側と購読側を分離するオブザーバーパターンを用い、イベント発生時に処理を実行させる方法を学習する。 UI更新やサウンド再生等の演出をゲームロジックから切り離し、疎結合な連携を実現する方法を学習する。 システム間の依存度を最小限に抑え、機能追加が容易なイベント駆動設計を実践する。 
【理解度確認】課題にて確認する。
5 文字列IDやハッシュ値を用いた汎用的なメッセージ送信システムの構築が出来る。 送信側が相手の具体的な型を知らなくても情報を伝えられる柔軟な通信が作れる。  文字列IDやハッシュ値を用いた汎用的なメッセージ送信システムを構築し、柔軟な通信基盤を構築する。 大規模プロジェクトにおいて不可欠な、オブジェクト間の疎結合な情報伝達手法を学習する。 送信側が相手の具体的な型を知らなくても情報を伝達できる、抽象度の高い連携を実践する。 
【理解度確認】課題にて確認する。
6 ブロードキャスト通信やフィルタリング機能を実装し、効率的なイベント配送が出来る。 大規模なゲーム開発でも破綻しない、拡張可能なメッセージバスの設計が出来る。  ブロードキャスト通信やフィルタリング機能を実装し、効率的なイベント配送システムを構築する。 拡張可能なメッセージバスの設計を学び、多数のオブジェクトが関わる複雑な通知フローを学習する。 システム全体の通信負荷を抑えつつ、確実な情報共有を行うための高度な設計を実践する。 
【理解度確認】課題にて確認する。
7 Factory Methodパターンを使い、インスタンス化のロジックをまとめることが出来る。 生成するクラスの種類を外部データで指定し、プログラムを変更せずにオブジェクトの追加が出来る。  Factory Methodパターンを用い、インスタンス化のロジックを専用のクラスに集約・隠蔽する方法を学習する。 生成するクラスの種類を外部データから指定し、コードを書き換えずにオブジェクトを追加する方法を学習する。 オブジェクトの「利用」と「生成」を完全に分離し、柔軟性の高いシステム構築を実践する。 
【理解度確認】課題にて確認する。
8 メモリの確保・解放を繰り返さないオブジェクト再利用の仕組みを理解し、負荷軽減が出来る。 メモリの断片化(フラグメンテーション)を防ぎ、長時間の稼働でも安定した動作が出来る。  メモリの確保と解放を繰り返さないオブジェクトプールの仕組みを学習する。 メモリの断片化(フラグメンテーション)を防ぎ、長時間の稼働でも安定した動作を維持する設計を学習する。 リソースの使い回しをシステム化し、パフォーマンスの安定化を図る技術を実践する。 
【理解度確認】中間テストにて確認する。
9 可変長テンプレートを用いて、任意の引数で初期化可能な汎用プールクラスが作れる。 弾やエフェクトなど、大量に生成・破棄されるオブジェクトを効率よく管理する方法の説明が出来る。  可変長テンプレートを用いて、任意の引数で初期化可能な汎用プールクラスを構築する。 弾やエフェクト等の大量生成オブジェクトを対象に、高速かつ効率的な管理ロジックを実装する。 汎用性の高いリソース管理部品を作ることで、異なるプロジェクトでも再利用可能な技術を学習する。 
【理解度確認】課題にて確認する。
10 継承による機能追加の限界を理解し、コンポーネントの「合成」による柔軟な設計が出来る。 エンティティにコンポーネントを自由に着脱し、多様な属性を持つオブジェクトが作れる。  継承による機能追加の限界を知り、コンポーネントの「合成」の活用法を学習する。 エンティティに機能を自由に着脱可能にし、多様な属性を持つオブジェクトを動的に作る設計を実践する。 深い継承階層を避け、組み合わせによって柔軟に挙動を変える高度な設計法を実践する。 
【理解度確認】課題にて確認する。
11 更新処理を「タスク」として抽象化し、優先度に基づいた実行順序の制御が出来る。 タスク間の依存関係を定義し、確実に特定の順番で処理が行われるシステムの構築が出来る。  更新処理を「タスク」として抽象化し、優先度に基づいた実行順序を制御するタスクシステムを構築する。 タスク間の依存関係を定義し、特定の順番で確実に処理が行われる安全な実行基盤を設計する。 ゲームループ内の複雑な更新フローを一括管理するための、アーキテクチャ設計を学習する。 
【理解度確認】課題にて確認する。
12 ゲームループから独立してタスクを追加・削除出来る動的なマネージャーが作れる。 フェーズ(初期化、更新、描画)ごとにタスク群をまとめて一括管理する手法が使える。  ゲームループから独立して動的にタスクを追加・削除できる、汎用的なタスクマネージャを構築する。 フェーズ(初期化・更新・描画)ごとにタスク群を整理し、一括で制御する手法を実習にて実践する。 大規模開発での処理順序の混乱を防ぎ、予測可能なシステム実行環境を構築する。 
【理解度確認】課題にて確認する。
13 パラメータを外部ファイル(JSON/YAML/XML等)へ切り出し、コードを書き換えずに調整が出来る。 データの自動読み込み(ホットリロード)の概念を理解し、開発効率を上げる工夫が出来る。  外部ファイル(JSON/YAML/XML等)へ切り出し、コードを書き換えずに調整可能なデータ駆動設計を学習する。 ホットリロードの概念を学び、実行中にデータを反映させて開発効率を向上させる工夫を学習する。 エンジニア以外でも調整可能な柔軟な制作体制を支える、システム基盤を構築する。 
【理解度確認】課題にて確認する。
14 学んだデザインパターンを組み合わせ、小規模なゲームフレームワークが作れる。 クラス図を作成し、システム全体の構成をドキュメントとして設計・整理が出来る。  学習したデザインパターンを組み合わせ、小規模なゲームフレームワークを作成する方法を学習する。 クラス図を用いてシステム全体の依存関係を視覚化し、論理的な裏付けのある設計を学習する。 3年次前期の総括として、自身の手で一からシステムの骨組みを設計・具現化する。 
【理解度確認】課題にて確認する。
15 実装したコードに対してリファクタリングを行い、より美しく効率的なコードに出来る。 ピアレビュー(Peer Review)を行い、他人のコードを読むことで新しい設計手法や注意点の指摘が出来る。  実装したフレームワークに対してリファクタリングを行う方法を学習する。 ピアレビューを通じ他者の設計意図を読み取り、自身のコードを客観的に評価・改善する能力を実践する。 設計と実装のサイクルを完遂し、プログラミング能力を作品として完成させる。 
【理解度確認】課題にて確認する。