自分専用の教材をChatGPTで作る。生成AIを活用した学習法の実践
最近、openFrameworksの勉強を少しずつやっているのですが、試しにChatGPT(o1)に教科書作ってもらったらかなりいい感じでした。技術系のトピックで既に広く使われているものに関して勉強するには、この手法がかなり有用かもしれません。
o1を使った学習の手順
今の所実践しているのはこんな感じです
自身の現在地点、学びたいこと、目標を伝え、教材の章立てを作ってもらう
章立てに納得がいったら、最初の章の内容を出力してもらう
出力された教材を使って学習する(演習問題とかを出してくれて、気が利いています)
その章でもう少し深掘りしたいことがあれば、リクエストして補完してもらう
次の章に進み、2〜4を繰り返す
参考までに、僕の場合はこんな感じで頼んでみました。
個人的には、自分の現在地点に応じて教材をオーダーメイドできる点がポイントだと思っています。既にC言語に精通している点を伝えれば、その内容をうまく省略してもらえるし、より実践的な内容を盛り込んでほしければ、演習問題をたくさん作ってくれるかもしれません。
openFrameworksに関して言えば、良質な書籍やドキュメントが多くありますが(↓の書籍にもお世話になってます)、自身の個別のニーズに応えてもらう手段としてo1も積極的に使っていきたいと思いました。
以下、実際に出力してもらった章立てです。
# openFrameworksでVJ・ジェネラティブアートを創作するための教材(章立て)
## 第0章:イントロダクション
- **目的・ゴールの明確化**
- VJ・ジェネラティブアートを通じて何を表現したいのか
- openFrameworksを学ぶメリットと概要
- 生成AIを「どう」活用するか(アイデア出しや学習補助の位置づけ)
- **教材の使い方**
- 学習ペースの提案
- 必要ソフトウェアや参考資料の紹介
---
## 第1章:プログラミング基礎(C++の再確認)
- **C++の基本構文**
- 変数・型・演算子
- 制御構文(if, for, while など)
- 関数の定義と呼び出し
- **オブジェクト指向の基本**
- クラスとオブジェクト
- 継承・ポリモーフィズムの概要
- **コンパイルとリンカの仕組み**
- 環境構築とデバッグ方法
- **演習:簡単なコンソールアプリケーションを作る**
---
## 第2章:openFrameworksの導入と基礎
- **openFrameworksとは**
- オープンソースのフレームワークとしての特徴
- どんな場面で使われるか(インタラクティブアート、VJ、インスタレーションなど)
- **開発環境のセットアップ**
- oF (openFrameworks) のダウンロード・インストール
- IDE(Visual Studio, Xcode, CLion など)の初期設定
- **openFrameworksプロジェクトの構造**
- `ofApp.h` / `ofApp.cpp` / `main.cpp` の役割
- `setup()`, `update()`, `draw()` の流れ
- **演習:サンプルに触れてみる**
- サンプルプロジェクトをビルドして動かす
- 簡単な図形を描画してみる
---
## 第3章:基本的なグラフィックス描画とアニメーション
- **座標系と色の扱い**
- 2D座標(原点、座標系の向き)
- カラー空間(RGB, HSBA など)
- **図形とパスの描画**
- `ofDrawCircle`, `ofDrawRectangle`, `ofPath` など
- 塗りつぶしとストロークの使い分け
- **アニメーションの基礎**
- フレームとタイムベース
- `update()` 内でのパラメータ更新
- **演習:シンプルなアニメーションを作る**
- 図形が画面上を動く/変化するプログラム
---
## 第4章:アルゴリズム入門(ジェネラティブアートの基礎)
- **ランダムとノイズ**
- `ofRandom()`, `ofNoise()` を使った不規則性の導入
- Perlin Noise / Simplex Noise
- **フラクタルと再帰**
- 再帰関数の考え方
- フラクタルツリーなどの生成
- **粒子システム**
- パーティクルの基本構造(位置、速度、加速度)
- パーティクル同士の相互作用(重力、引力・反発)
- **演習:アルゴリズムを活かしたビジュアル表現**
- ノイズを使ったグラデーションや有機的形状
- パーティクルを使った簡易的な動く背景
---
## 第5章:VJ表現に必要なリアルタイム処理
- **パフォーマンス最適化の考え方**
- フレームレートの計測と軽量化テクニック
- 描画回数やオブジェクト数のコントロール
- **リアルタイムでのエフェクト処理**
- シェーダー(GLSL)入門
- ポストエフェクト(ブラー、グロー、ディストーションなど)
- **オーディオとの連動**
- 音声入力の解析(FFT, RMS など)
- 音楽の周波数帯に合わせたビジュアル反応
- **演習:ミュージック・ビジュアライザーの作成**
- 音に反応する図形やパーティクルシステム
---
## 第6章:インタラクション(センサーや入力デバイスとの連携)
- **キーボード・マウス・OSC 入門**
- openFrameworksでの入力制御
- OSC (Open Sound Control) を使った他ソフトとの連携
- **Webカメラ・Kinectなどの利用**
- 映像入力の取り込み
- モーショントラッキングの基礎
- **演習:インタラクティブなインスタレーションのプロトタイプ**
- キー操作でエフェクトが変わる
- カメラ映像に反応してパーティクルが広がる
---
## 第7章:生成AIとの協働によるアイデア発想・プロトタイピング
- **生成AIの得意分野を理解する**
- コードスニペットの自動生成
- デバッグ補助(エラーの原因調査など)
- アイデア出し
- **AIに頼りすぎない学習方法**
- 答えを得るだけでなく思考プロセスを学ぶ重要性
- 提案されたコードを分解して理解する習慣
- **テキストベースAIを使った実践例**
- 「円が反発し合うアニメーション」をAIに質問しながら作る
- 生成されたコードの改善と最適化
---
## 第8章:映像出力や制御の最適化(VJパフォーマンスに向けて)
- **映像出力の形式と注意点**
- 複数画面出力
- プロジェクションマッピングとの連携
- **VJソフトやツールとの連携**
- Syphon (macOS), Spout (Windows) を使った映像転送
- TouchDesigner、Resolume などとのハイブリッド運用
- **ショーコントロールの基礎**
- OSC / MIDI シグナルを使ったプログラムの制御
- タイムコードと同期する手法
- **演習:簡易VJセットの構築**
- openFrameworksで作った映像を外部ソフトに送信し、リアルタイムVJを行う
---
## 第9章:応用:3D表現と高度なインタラクション
- **3D描画の基礎**
- カメラ・ライトの設定
- メッシュ操作とカスタマイズ
- **シェーダーの応用**
- バーテックスシェーダーとフラグメントシェーダー
- ノイズやマテリアルの操作
- **高度なセンサーデータとの連動**
- Depthセンサー(Kinect, Realsenseなど)
- スマホやArduinoからのデータ取得
- **演習:3D空間を使ったジェネラティブアート**
- 立体的なパーティクルアニメーション
- シェーダーによる特殊効果
---
## 第10章:作品制作と発表
- **作品テーマ設定とスケッチ**
- コンセプト・アイデアをまとめる
- 参考作品・参考文献のリサーチ
- **プロトタイプ制作とフィードバック**
- 小さな単位でのテスト・修正を繰り返す
- 生成AIのアイデア提示を活かしながらデバッグ
- **完成形の調整とリハーサル**
- VJなら音源や会場の環境でテスト
- 展示作品なら展示場所の環境で調整
- **発表と今後の展望**
- SNSやポートフォリオサイトへの公開
- フィードバックを取り込み、さらなる改良
---
## 第11章:さらなる発展とコミュニティ参加
- **コミュニティへの参加**
- openFrameworks公式フォーラム
- GitHubでのコード共有やコントリビュート
- **最新技術へのキャッチアップ**
- 生成AIの進化
- クリエイティブコーディング全般の潮流(Processing, p5.js, TouchDesignerなど)
- **次なるステップ**
- WebGLやUnity/C#での表現
- 実装スキルの横展開(インスタレーション、メディアアートなど)
---
あんなに単純なプロンプトでここまで精緻に作ってくれるとは驚きです。
実際に第3章の内容まで出力してもらって学習を進めていますが、学習の体験としてかなり良質だと感じています(かなりボリュームあるので、実際の内容の掲載については省略します)。
特に教材を読んでわからないこと、気になったことがあった場合にカジュアルに相談できるのがとても良いです。教材の著者と何でもチャットで相談できてすぐに返信してくれるってすごくない?
こんな感じで、自分の学習を補強するツールとしてChatGPTを使うアプローチは今後も継続していきたいと思っています。最近は定期タスクを実行してもらう機能が実装されたので、毎日定期的に問題出してもらう仕組みとか作ったら面白そうだな、みたいなことも考えています。
これからもいろいろ試行錯誤しつつ、自分なりの“生成AI×学習”スタイルを確立していきたいです。そうやって得た知見は、また随時シェアしていきます!