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

シラバス

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

科目名 プログラミングⅡ 作成日 2026/08/26
区分 必修 講義/演習
開催時期・標準履修年次 1年次 後期
講義・演習駒数/週 3駒
実習・実験駒数/週 0駒
合計駒数/週 3駒
総時間数 90時間
総単位数 6単位
企業連携 無
授業の目的 以下三点の技術習得を目的とする。 ・C++の核心である「メモリ管理」 ・ゲーム開発に不可欠な「システム構築の知識」 ・データで駆動させるために必要な「実践的なデータ処理技術」
到達目標 メモリの概念を学習し、アドレス、ポインタ、記憶領域の説明が出来る。 STLを使い、実行時に増減する複雑なデータ群を効率的かつ安全に管理が出来る。 継承とポリモーフィズムを用いたクラス設計が出来る。 処理を部品化する設計手法(Strategyパターン等)の説明が出来る。 外部ファイルの読み書きやビット演算によるフラグ制御の実装が出来る。 生成AIが提案したコードの説明が出来る。

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

担当教員 植山 沙欧、大野 雅俊
テキスト・参考文献 C++ ゼロからはじめるプログラミング 教員が作成する資料及びテキスト
実務経験有無 無 
大野 雅俊 プログラマとして、コンシューマゲーム・スマートフォンゲームの開発および開発サポートツールの作成業務経験がある。その経験から得た知識・技術と共に開発のノウハウも含めた実践的な能力を身に着ける教育を行う。 
授業外学習
(予習・復習等)
演習問題が出題されるので、その解決方法を検討したのちにコーディングを行うこと。 考えても理解できない、思いつかない点をまとめ、次回登校時に教員に聞く点をリスト化をすること。 予習よりも復習に重点を置き、分からない点を残さず理解を深めること。 自身の知識を増やすためのAI使用は認めるが、自身の理解度を超えた範囲でのAI使用(自力での説明ができない実装等)は認めない。  履修前提
※自由選択科目のみ記載
  

授業計画

回数 学習目標 学習項目
1 メモリ上のアドレスの概念を理解し、* & -> が使える。 配列名が先頭要素のアドレスであることを理解し、ポインタ演算による要素アクセスが出来る。  メモリ上のアドレスの概念を復習し、アドレス演算子を用いたメモリアクセスの基礎を学習する。 ポインタ変数の宣言とnullptrによる安全な初期化の手法を実践する。メモリ操作の基本を学習する。 ポインタを用いた直接的なデータ操作の機序を学習する。低レイヤの視点を実践する。 
【理解度確認】課題にて確認する。
2 多次元配列のポインタが扱える。 ポインタ変数へのポインタ(多重ポインタ)が扱える。 構造体のポインタが扱え、パディングの説明が出来る。  配列名とアドレスのポインタ演算を用いた配列要素へのアクセス手法を学習する。 関数への引数としてポインタを渡し、呼び出し元の変数を直接書き換える参照渡しを学習する。 構造体のポインタを用いたメンバアクセス、パディングの仕組みを学習する。 
【理解度確認】課題にて確認する。
3 関数へのポインタが扱える。 メンバ関数に隠し引数(thisポインタ)が渡される仕組みの説明が出来る。 スタックフレームの説明が出来る。  関数の実体をアドレスとして扱う関数ポインタの宣言方法と、コールバック処理への応用を学習する。 メンバ関数呼び出し時に暗黙的に渡されるthisポインタの仕組みを、関数ポインタの視点から学習する。 関数呼び出し時に積まれるスタックフレームの構造を学び、引数・戻り先・ローカル変数の関係を理解する。 
【理解度確認】課題にて確認する。
4 newとdeleteを使ったメモリの動的確保が出来る。 Cのメモリ領域(スタックstack、スタティックstatic、プログラムprogram、ヒープheap)の説明が出来る。  newとdelete演算子を用いた動的なメモリ領域の確保と、手動による解放の手順を学習する。 ヒープ領域の特性を学習する。実行時の要求に応じた柔軟なメモリ管理手法を実践する。 動的配列の活用により、データの規模変化に適応可能なプログラムの構築手法を学習する。 
【理解度確認】課題にて確認する。
5 staticメンバ変数(ユニークな存在)の説明が出来る。 staticメンバ関数(隠し引数thisの付与が無い=>関数の扱い)の説明が出来る。  staticメンバ変数を用いて、全インスタンス間で共有されるデータの定義と管理手法を学習する。 staticメンバ関数を実装し、インスタンスを生成せずにアクセス可能な機能の構築法を実践する。 クラス単位で共通化すべき情報と機能の切り分けを行い、効率的な資源利用を実践する。 
【理解度確認】課題にて確認する。
6 IS-A関係を理解し、コードの再利用が出来る。 アクセス指定子「protected」を使い、派生クラスへのカプセル化が出来る。 継承の乱用が危険であることの説明が出来る。  クラスを拡張する継承(IS-A関係)の概念を学習する。 アクセス指定子「protected」を活用し、派生クラスに対して適切な情報の公開と秘匿方法を学習する。 継承だけで全ての個性を表現しようとするとクラス数が爆発的に増える問題(継承の乱用)を学習し、設計の限界を認識する。 
【理解度確認】課題にて確認する。
7 継承関係におけるコンストラクタとデストラクタの実行順序の説明が出来る。 基底クラスのコンストラクタへ初期化リストを用いた適切な初期化が出来る。 仮想関数を使ってクラスごとに異なる振る舞いの実装が出来る。  継承関係におけるコンストラクタとデストラクタの実行順序を学習する。 初期化リストを用いて基底クラスのコンストラクタを明示的に呼び出し、正しい初期設定を学習する。 仮想関数を用いたオーバーライドにより、クラスごとに異なる振る舞いを実装する手法を学習する。 
【理解度確認】課題にて確認する。
8 基底クラスのポインタで派生クラスのインスタンスを指すことが出来る。 仮想デストラクタを定義し、派生クラスのメモリ解放漏れを防止するコードが書ける。 純粋仮想関数を持つ抽象クラスを定義し、派生クラスでの実装が出来る。  基底クラスのポインタで派生クラスを操作するポリモーフィズムの具体的な運用方法を学習する。 仮想デストラクタを適切に定義し、派生クラスのメモリ解放漏れを防止する安全な設計を構築する。 型に依存しない抽象的な操作を実現し、プログラムの拡張性を飛躍的に高める手法を学習する。 
【理解度確認】課題にて確認する。
9 std::vectorなどの動的配列コンテナを使い、要素の追加や削除を効率的に行える。 std::stringを用いた高度な文字列操作や、std::mapによるキー検索機能が使える。  標準ライブラリ(STL)の動的配列コンテナであるstd::vectorを用い、要素管理の効率化を学習する。 std::stringによる高度な文字列操作や、std::mapによる高速なキー検索の活用手法を実践する。 標準提供されるデータ構造を使いこなし、開発効率と実行性能を両立させる技術を学習する。 
【理解度確認】課題にて確認する。
10 std::shared_ptrが使える。 std::weak_ptrが使える。 std::unique_ptrが使える。  所有権を唯一に限定するstd::unique_ptrの特性と、スコープ終了時の自動解放(RAII)の仕組みを学習する。 参照カウント方式で複数箇所から所有権を共有するstd::shared_ptrの仕組みと使用場面を学習する。 std::shared_ptr同士の循環参照を回避するstd::weak_ptrの役割と活用方法を学習する。 
【理解度確認】課題にて確認する。
11 継承と仮想関数を用いて「ふるまい(処理)」を部品化する設計が出来る。 ポリモーフィックなコンテナを使った一括処理が書ける。  キャラクターの能力を「保持する振る舞い部品の組み合わせ」で表現する設計手法(Strategyパターン)を学習する。 抽象クラスとその派生クラスを用いて、個々の処理をカプセル化する方法を実践する。 std::vectorを用いて複数の振る舞いを保持し、一括して実行する仕組みを実装する。 
【理解度確認】課題にて確認する。
12 ファイルストリームを使ったテキストデータの読み書きが出来る。 設定ファイルからゲームのパラメータを読み込み、プログラムに反映させる処理が作れる。  ファイルストリームを用いて、テキストデータの読み書きを学習する。 外部の設定ファイルからパラメータを読み取り、プログラムに反映させるデータ主導の処理を構築する。 データの保存と復元のプロセスを通じ、外部リソースとの連携手法を実習にて実践する。 
【理解度確認】課題にて確認する。
13 バイナリ形式でのデータ保存を理解し、シリアライズによる構造体のファイル出力が出来る。 ビッグエンディアンとリトルエンディアンの説明が出来る。 CSVファイルのパース処理を実装し、Excel等で編集したデータをゲームで活用出来る。  バイナリ形式でのデータ保存とシリアライズを学び、構造体等のデータを効率的にファイル化することを学習する。 エンディアンの差異に関する基礎知識を学習する。 CSVファイルのパース処理を構築する。 
【理解度確認】課題にて確認する。
14 論理演算(AND, OR, NOT, XOR)を使い、複数のフラグ情報を1つの変数での管理が出来る。 ビットマスクを用いた特定のフラグ判定や、フラグの反転・消去が出来る。  ビット単位の論理演算(AND, OR, NOT, XOR)を用い、複数のフラグ情報を変数一つで管理することを学習する。 ビットマスクを駆使して特定のフラグを判定・操作し、省メモリで高速な状態管理を実践する。 ゲーム開発で多用される「フラグ立て」や「判定」の処理を実践する。 
【理解度確認】課題にて確認する。
15 ビットシフト演算による高速な乗除算や、データパッキングの仕組みの説明が出来る。 ARGBカラーコードの各成分をビット演算で取り出し、色情報の加工や変換が出来る。  ビットシフト演算による高速な計算手法と、情報のパッキングによるデータ圧縮の仕組みを学習する。 ARGBカラーコードの成分抽出を題材に、ビット演算を用いた具体的な色情報の加工を実践する。 1年次の全学習内容を再確認する。 
【理解度確認】課題にて確認する。