免責事項
本記事の内容は個人の見解であり、所属する企業の公式な見解や方針を代表するものではありません。
また、本記事の内容は完全に個人の趣味・学習の範囲で行っているものです。
本記事で紹介する取り組みは、業務とは切り離された個人のローカル環境およびプライベートリポジトリで実行しています。
発端
- ここ1〜2年ほど、ゲーム関連の技術に興味を持ち勉強を続けています。
- ただ、ゲーム関連の技術を勉強する際に、「1冊の本にしっかり向き合って通読する」という勉強方法が自分にはあまり向いていない、という問題意識がありました。
- そもそもゲーム関連の技術は非常に幅が広く、すべてをカバーするのは困難です。だからこそ、例えばレンダリングの本を読んでいる最中にも「アルゴリズムの話も知りたいな」と色々な分野に目移りしてしまいがちです。
- かといって本を途中で読むのをやめてしまうと、たとえそこから得たものがあったとしても「読み切れなかった」という挫折感が残ってしまいます。
- そこで、もっと自分に合った学習方法として、AI(AntigravityCLI)を「専属のエンジニアリングコーチ」として活用する仕組みを立ち上げました。
- 毎日AIに様々な分野から少しずつ課題を出してもらい、色々な知識を「つまみ食い」していくスタイルです。
- これなら飽きずに続けられ、挫折感も味わわずに学習を継続できると考えました。
- 開始から10日ほど毎日課題を解くことに成功しているため、いまのところはこの取り組みは成功していると言えるのではないかと思っています。
- 本記事は、単なる質問相手としてAIを使うのではなく、毎日の出題を通じてゲーム開発の基礎技術を体系的に学ぶ仕組みを作ってみた、というお話です。
学習している5つの主要テーマ
現在は、主に以下の5つのテーマについて学習を進めています。
-
3D数学の基礎知識
- 内積・外積による判定、行列クラスの実装、クォータニオンなど、3Dゲーム開発に必須の数学知識
-
アーキテクチャと設計パターン
- オブザーバーパターンやデータ指向設計(DOD)、ECS(Entity Component System)など
-
グラフィックス・レンダリングの基礎
- レンダリングパイプラインの理解や、カスタムシェーダー(GLSL/HLSL)の記述など
-
メモリ管理の最適化
- CPUキャッシュを意識した設計や、オブジェクトプール、カスタムアロケータの実装など、パフォーマンスに直結する部分
-
ゲーム向けアルゴリズム
- 空間分割(四分木/八分木)や、A*探索、ナビゲーションメッシュなど
これらを独学で一から体系的に学ぶのはなかなか骨が折れますが、そこをAIコーチにサポートしてもらっています。
リポジトリの運用ルールとAIの活用方法(学習の仕組み)
飽きずに継続できるよう、AIに対していくつかルールを設定し、学習を自動化・サポートさせるようなプロンプトを組んでいます。
-
1日1トピックの完結型
- 毎日1つ、重すぎずしっかり学べるテーマをAIから出題させています。
- ハードルを下げて、毎日の習慣にするのが狙いです。
-
多様な形式での出題
- 読み物、ハンズオン、クイズ、実装課題など、その日のテーマに合わせた形式で「お題」を出力してもらいます。
- 毎日同じ形式だと飽きてしまうので、変化をつけるようにしています。
-
インタラクティブな学習サポート
- 出題されて終わりではなく、分からない箇所があればすぐにその場で質問できます。
- 実装課題で行き詰まった際にヒントを出してもらうといった柔軟な対応も可能で、この対話性こそがAIをコーチとして使う最大のメリットだと感じています。
-
知識の定着
- 新しいトピックを学ぶ際、AIに「過去に学んだ〇〇の知識とどう関連しているか」を意図的に解説させています。
- これにより、点と点の知識が結びついて体系的な理解に繋がっている気がします。
-
学習記録の自動化
- AIに出題内容や回答、フィードバックを
log/YYYY-MM-DD/YYYY-MM-DD.mdという形式で日々の記録としてマークダウンに追記・蓄積させています。
- AIに出題内容や回答、フィードバックを
-
自動コミット&プッシュ
- その日の学習が完了した段階で、AI自身にGitのコミットとプッシュを行わせています。
- 学習の軌跡がGitHub上に自動で残っていくので、モチベーション維持に役立っています。将来的に振り返る際にも重宝しそうだと考えています
プロンプト入力の手間を省く「カスタムスキル」の作成
毎日学習を始めるにあたり、毎回「今日は〇〇について出題して、ログを残して…」と長文のプロンプトを入力するのは面倒です。
そこで、この出題フローを自動化するカスタムスキル(dailyスキル)も作成しています。
-
番号で分野を指定
-
1〜5の数字を入力するだけで、上記の5つのテーマからどれを学習するかを特定します。
-
-
柔軟な追加指示
- 「
/daily 3 今日はシェーダーの実装を少しやりたい」のように入力すれば、「グラフィックス」の分野から、希望に沿った課題を自動生成してくれます。
- 「
-
ログ保存などの一括処理
- お題の生成だけでなく、
log/YYYY-MM-DD/YYYY-MM-DD.mdへの保存までを一括で行うようにスキル側に指示を組み込んでいます。
- お題の生成だけでなく、
このように、日々の学習を始める際の負担を極限まで取り除くことで、継続へのハードルをさらに下げています。
おわりに
この取り組みを通じてお伝えしたいのは、LLMは単なる「質問相手」ではなく、自らの学習をリードし、進捗管理と記録まで行ってくれる「継続学習の伴走者(コーチ)」になり得るということです。
このようにプロンプトや仕組みをシステム化していくこと自体も面白く、日々の学習の良いスパイスになっています。
もし「AIを使って何か新しいことを学びたいけれど、三日坊主になりがち」という方がいれば、こうした「専属コーチ化」のアプローチが何かのヒントになれば幸いです。