はじめに
オンラインコースやプログラミングスクールはたくさんあるけど、どれも固定のカリキュラムでみんなと同じコースを受けることが多い。
けれども、何かを学習することに、「これさえやればOK」みたいな汎用的な方法はない。
どこでつまずくか、物事をどうやって理解するか、どれくらいかかるのかは人によって当然異なる。
そこで、AIを利用してみよう。
AIは人間と違い情報のリソースは原理的に無限で、インターネット上に転がる膨大な情報を精査・整理することに長けている。
だから、AIを用いれば、自分の関心をつたえるだけで自分専用のカリキュラムを作ることも不可能ではない。
人間のチューターと違って時間も場所も選ばずに質問できて、デバッグもしてくれる。
ただし、注意深く指示しないと、ただ質問に対して答えとなるコードを即座に送るだけになってしまう。それは学習とは言えない。
当記事では、生成AIを自分専用のチューターとして設定し、学習に役立てるためのプロンプトを紹介する。
なお、私はClaudeを愛用しているが、ChatGPTでも特に問題はない。
学習ロードマップ作成
・プロンプト例
私は【A】を学びたいと思っています。80対20の法則に従った包括的な学習プランを作成してください。【B】週間、各週ごとに特定のトピックを取り上げる構成にしてください。
【B】週間の核となる学習期間の後、【A】の知識を応用し、強化するのに役立つプロジェクトを(初心者から上級者へと徐々に難易度が上がっていくように)5つ提案してください。各プロジェクトについて、簡単な説明と知識の強化に役立つ主要な概念を挙げてください。
学習プランは、初心者でも理解できるような詳細なものでありながら、私自身が自主的に考え、問題解決に取り組めるようなものにしてください。
【A】には学びたいトピックを、【B】には数字(何週間で学びたいか)を入力。
【A】は「Java」や「Spring Boot」のような大きな主題よりも、「Javaでのファイル処理」「Springを用いた基本的なRESTful APIの開発」のように具体的であればあるほど、良いロードマップを提供してくれます。
※20対80の法則とは、プログラミングの文脈で簡単に言うと、「全コードの80%は、その言語の持つ機能・ツールのうちの20%によって書かれている」というもので、最初から全てを理解しようとせず、核となる概念から学びましょうと言う意味で使われる。
学習方法の学習
・プロンプト例
【言語】で【A】について学んでいます。
【A】について、それを用いる目的や、一般的にどのような場面で使用されるかなどを簡潔に説明してください。
【A】を示す簡単なコード例を提示してください。
【A】に関して初心者が陥りがちな3つの間違いや誤解と、それを避ける方法を教えてください。
【A】が特に役に立つような、実際のアプリケーション例やシナリオを2つ教えてください。
【A】の使い方を練習するのに役立つ、徐々に難易度が上がる3つの練習問題を出してください。その際、解答は提供しないでください。
これらの情報を提供した後、【A】について、その応用事例についてより深く考えるきっかけとなるような質問を私に投げかけてください。
【言語】にはそのまま学習中の言語を、【A】には「ロードマップ」と同じようにトピックを入力してください。
プロジェクト作成
・プロンプト例
【A】を実際に駆使した【B】に取りかかろうとしています。【言語】に関する私の現在の技術レベルは[初級/中級/上級]です。
- このプロジェクトの主要なコンポーネントや機能についての、ハイレベルな概要。
- 私が作成する必要がある主なファイルやモジュールを含む、プロジェクトの構造。
- このプロジェクトの進行中に遭遇する可能性のある3つの主要な課題と、それを克服するための戦略(具体的なコードによる解決策は送らないでください)。
- 基本的な機能を完成させた後、より複雑なプロジェクトにするための2つの発展的な目標。
- このプロジェクトでを通して強化される、【言語】の重要なコンセプトやスキルを3つ挙げてください。
答えをすぐに提示するのではなく、私の思考を導くような表現で答えてください。
私は、様々な機能の開発や実装の方法を、まずは自分で考えたいです。
【A】は「ロードマップ」や「学習方法の学習」でのトピックのような、ある程度具体的な方がいいでしょう。ただ、【A】はなくても大丈夫です。
【B】には実際に作ってみたいアプリ(や機能)を入れてください。
【言語】はそのまま、学習中の言語です。
ロードマップは、かなり大雑把なものが上がってくるので、それでは右も左も分からないという人のために、詳細なロードマップを作らせるプロンプトも考案中です。
こちらも洗練されてきたらどこかのタイミングで記事にしたいと思います。