おはこんばんちは!

最近、頑張って立て続けに記事書いてます。

今回は最近はやり(?)のAIエージェントでプログラミングを教えてくれる先生を作ってみました。

今回のソースもGitで共有しています。

興味のある方はCloneして使ってみてください。

自分で少し勉強を教えてもらいましたが、なかなか面白かったです。

概要

今回はVSCodeの”Gemini Code Assist”を使用してAI先生を作成しました。

LLMはGemini3、または、Gemini2.5です。

Instructionsを使用してAI先生の役割ややることを設定し、各カリキュラムの説明や例題、回答例はSKILLs を使うことでトークンを節約しています。

AI Agent(AIエージェント)とは

設定した手順などに従って行動するAIという感じと思います。

今回はAI先生という役割を持たせて、プログラミングを教える先生になってもらいました。

以下、Gemini様の説明です。


自律的に考え、行動する「デジタル・パートナー」

AIエージェントとは、単に質問に答えるだけのチャットボットを超え、与えられた目標(ゴール)を達成するために自律的に計画を立て、実行し、完遂するソフトウェアシステムです。

  • 特徴: 従来のAIが「検索エンジン」に近い存在だったのに対し、エージェントは「優秀な部下や秘書」のように振る舞います。周囲の状況を分析し、必要であれば外部ツールを使いこなしながら、人間の介在を最小限に抑えてタスクを進めます。
  • 役割: 複雑なワークフローの自動化、個別最適化された学習支援、ビジネスプロセスの代行など、多岐にわたる分野での活躍が期待されています。

Instructions(命令・指示書)とは

行動のルールなどを記載するマークダウン方式のファイルです。

GitHubCopilotでは”Instructions.md”に記載するみたいですが、今回はGeminiを利用するので、”CONTRIBUTING.md”と”AGENTS.md”に記載しています。

“CONTRIBUTING.md”にはAI先生はどういう人か、どういう言動をしてほしいかなどを記載して、”AGENTS.md”には学習に必要なファイルや進め方などの具体的な指示を記載しています。

以下、Gemini様の説明です。


エージェントの「性格」と「行動指針」を定義する司令塔

Instructionsは、AIエージェントがどのように振る舞い、どのようなルールに従って判断を下すべきかを記述した動作ガイドラインです。

  • 役割: エージェントの役割(ペルソナ)、守るべき制約事項、出力の形式などを指定します。
  • 重要性: 優れたInstructionsを与えることで、エージェントの自律性をコントロールし、意図しない挙動を防ぎながら、一貫性のある高品質なアウトプットを引き出すことが可能になります。

SKILLsとは

AIエージェントが使うことができる道具のようなものです。

道具というとToolsやMCPも同じですが、SKILLsには「手順」とか「シナリオ」としての機能もあるようなので、実際に使って検証してみました。

以下、Gemini様の説明です。


特定の専門作業を可能にする「拡張機能パッケージ」

SKILLs(エージェントスキル)とは、AIエージェントに特定の専門能力や知識を後付けで追加するための、再利用可能な命令・スクリプト・リソースのセットです。

  • 特徴: エージェントは必要に応じてこれらを自動的に読み込みます。例えば、「PowerPoint作成スキル」や「データ分析スキル」などをパッケージ化しておくことで、汎用的なAIが特定のタスクをプロ並みにこなすスペシャリストへと進化します。
  • メリット: 毎回長いプロンプトを入力する手間を省き、ドメイン固有の専門知識や企業の独自ルール、複雑なツール操作を効率的かつ正確に実行させることができます。

SKILLs、ToolsMCP の違い

一言でいうと、これらは「AIができることを増やすための3つのレイヤー」です。

項目定義役割
SKILLs「手順」のパッケージ特定のタスク(例:議事録作成)を完遂するためのノウハウや一連の手順
Tools「道具」そのもの外部アプリや機能(例:Googleカレンダー、計算機、検索)を操作する手段
MCP「接続」の標準規格エージェントとデータ(ツール)をつなぐための共通ルール

構造

カリキュラムのフォルダ構造などは”SKILL.md”に記載することでAIに理解させています。

また、カリキュラムの進め方については”AGENTS.md”にフローチャートで記載してAIに理解させています。

カリキュラムツリー

└─ ai-teacher-curriculum
      ├─ 1.display,valiables,calculations
      ├─ 2.input
      ├─ 3.if
      ├─ 4.loop
      ├─ 5.array
      ├─ 6.method
      └─ 7.class

カリキュラム構造

├─ [カリキュラム]
    ├─ explanation.md
    └─ practices
            ├─ 01-practice.md
            ├─ 01-answer.md
            ├─ 02-practice.md
            ├─ 02-answer.md
            ├─ 03-practice.md
            ├─ 03-answer.md
            ...

進め方

コンテンツの作成

実は、SKILLsで使用した問題は北ソフト工房さんのサイトを参考にさせていただいています。(北ソフト工房さん。いつもお世話になっております。)

こちらのサイトは新人君の教育とかで使わせていただいているのですが、JAVAの問題集のサイトです。

今回、説明用の”explanation.md”、例題を記載した”practice.md”、回答例を記載した”answer.md”を作成していますが、上記のサイトを参考に以下のような指示でAIで自動生成しています。

  • 説明:例題を解くのに必要な技術の説明
  • 例題:Pythonの例題に変換
  • 回答例:例題の回答

何度か作り直しましたが、1時間もかからなかったと思います。

手作りしたら大変なことになってたでしょうね。

まあ、内容の確認をしていないので間違いがあるかもしれませんが、今回はAIエージェントやSKILLsの検証なので細かいチェックはしていません。

本当に教育で使用するときは内容を確認してから使うようにしてくださいね。

準備

まずは、VSCodeのインストールを行ってください。

最低限必要のものとしては拡張機能の”Gemini Code Assist”のみです。

AIエージェントがファイルアクセスの許可をいちいち聞いてくるので、”settings.json”に設定を追加することをお勧めします。

ctrl + shift + p ⇒ 「基本設定:ユーザ設定を開く(json)」

{
    ...
    "geminicodeassist.agentYoloMode": true,
    "geminicodeassist.inlineSuggestions.enableAuto": false
}

それ以外にもMarkDownを見るためのツールはあったほうが便利です。

  • Markdown Preview Enhanced
  • Mermaid Markdown Syntax Highlighting

Pythonの実行をしたい場合はvenvやPython拡張機能のインストールを行ったほうがいいと思いますので、必要なものは追加してください。

使い方

“Gemini Code Assist”のプロンプトで、以下の文言を入力するとAI先生が開始されます。

@file:CONTRIBUTING.md のルールに従い、@file:AGENTS.md の手順でカリキュラムを開始してください。

実際にはこんな感じで学習をすることができます。いろいろ余計なことを言うので実用するには調整が必要かもしれませんね。

トラブル発生

記事用に動画を撮ろうとしたらいきなり”Gemini Code Assist”が、”An unknown error occurred.”というエラーを吐き始め、AIエージェントが動かなくなってしまいました。

Geminiに根掘り葉掘り聞き、RPDの利用上限とかアカウントの設定とか支払い設定の確認など行いましたが、まったく解消せず。。。

Gemini様が、”Gemini Code Assist”のログがあるから見ろというので、「表示⇒出力(Ctrl + Shift + u)」で確認したところ、”403″エラーとなっていて、メッセージにURLが書かれていたのでアクセスしたところ、「アカウントがロックされてます」的な画面が表示されました!

ロックの解除を行ったところ、無事に復旧できました。

解決に2時間ぐらいかけちゃいました。。。ログで出力してるんだから画面にも出してほしいですね。

まとめ

プログラミングやPython初心者が気軽に勉強できる環境としてAIが教えてくれるシステムの構築をしたいなぁって思っていましたが、VSCodeとGemeniを使って意外と簡単に作ることができました。

こんな感じで作れるなら、ほかの言語についても量産できそうです。