nanocodeで学ぶAIコーディングエージェントの仕組み:250行で理解するClaude Code代替の実装パターン

当ページのリンクには広告が含まれています。

お疲れ様です!IT業界で働くアライグマです!

結論から言えば、AIコーディングエージェントの核心は「ツール呼び出しのループ」に集約されます。 Claude CodeやGitHub Copilot Agentなど高度なツールが話題ですが、その基本原理はシンプルです。

「AIコーディングツールの仕組みを理解したいけど、ソースが複雑すぎて追えない」「Claude Codeは便利だけど、何をやっているのかブラックボックス」——こんな悩みを持つエンジニアも多いのではないでしょうか。

今回紹介する「nanocode」は、Claude Code代替として公開されたわずか250行のPythonファイルです。依存ライブラリゼロで、AIエージェントの仕組みを学ぶのに最適な教材となります。

目次

nanocodeとは何か

💡 AI・機械学習スキルを本格的に習得したいなら
実務レベルのAIスキルを身につけて市場価値を高めましょう

nanocodeは、GitHub上で公開されているオープンソースのAIコーディングエージェントです。特徴は以下の通りです。

nanocodeの基本スペック

  • コード行数:約250行(単一Pythonファイル)
  • 依存ライブラリ:ゼロ(標準ライブラリのみ)
  • 対応モデル:Claude API(Anthropic)
  • 主な機能:ファイル読み書き、コマンド実行、コード生成

詳しくはGitHub Copilotのエージェントモードとカスタム命令で開発生産性を最大化する実践ガイドも参考にしてください。

なぜ250行で実現できるのか

多くのAIコーディングツールは数万行のコードで構成されています。しかしnanocodeが250行で済むのは、「本質的な処理」だけに絞っているからです。

  • UIなし(CLIのみ)
  • エラーハンドリング最小限
  • 機能拡張性なし(単一ユースケース特化)

この割り切りによって、AIエージェントの「核心部分」だけを抽出したコードになっています。

IT女子 アラ美
250行でClaude Codeみたいなことができるんですか?

ITアライグマ
基本的な仕組みは同じです。ただし本格運用にはエラー処理やセキュリティ対策が必要なので、学習用として活用するのがおすすめです。

AIコーディングエージェントの基本アーキテクチャ

AIコーディングエージェントのアーキテクチャ比較(コード行数)
図:主要なAIコーディングエージェントのコード行数比較

nanocodeのソースコードを読み解くと、AIコーディングエージェントは以下の3つのコンポーネントで構成されていることがわかります。詳しくはclaude-hudでClaude Codeの作業状況を可視化するも参考にしてください。

ツール定義(Tool Schema)

エージェントが使える「道具」を定義します。nanocodeでは以下の4つのツールが定義されています。

TOOLS = [
    {"name": "read_file", "description": "ファイルを読み込む"},
    {"name": "write_file", "description": "ファイルに書き込む"},
    {"name": "run_command", "description": "シェルコマンドを実行する"},
    {"name": "ask_user", "description": "ユーザーに質問する"},
]

エージェントループ(Agent Loop)

AIエージェントの心臓部です。以下のサイクルを繰り返します。

  1. ユーザーの指示をLLMに送信
  2. LLMがツール呼び出しを返す(またはテキスト応答)
  3. ツールを実行し、結果をLLMに返す
  4. タスク完了まで2〜3を繰り返す

ツール実行(Tool Execution)

LLMが指定したツールを実際に実行し、結果を返します。nanocodeではsubprocessモジュールでシェルコマンドを実行したり、標準のファイルI/Oでファイル操作を行います。

IT女子 アラ美
ツール呼び出しのループって、どこで止まるんですか?

ITアライグマ
LLMが「もうツールを呼び出さない」と判断したとき、つまりテキストのみの応答を返したときにループが終了します。

nanocodeのソースコード解説

実際のnanocodeのコードを見ながら、重要なポイントを解説します。リポジトリはGitHubで公開されています。詳しくはadversarial-specで仕様策定を自動化するも参照してください。

メインループの実装

nanocodeの中核となるメインループは以下のような構造です。

def run_agent(prompt: str) -> str:
    messages = [{"role": "user", "content": prompt}]

    while True:
        # Claude APIにリクエスト送信
        response = call_claude_api(messages, tools=TOOLS)

        # ツール呼び出しがあれば実行
        if response.get("tool_use"):
            tool_result = execute_tool(response["tool_use"])
            messages.append({"role": "assistant", "content": response})
            messages.append({"role": "user", "content": tool_result})
        else:
            # ツール呼び出しがなければ完了
            return response["content"]

このシンプルなwhile Trueループが、AIエージェントの本質です。

ツール実行の実装

ファイル書き込みやコマンド実行は、標準ライブラリで実装されています。

def execute_tool(tool_call: dict) -> str:
    name = tool_call["name"]
    args = tool_call["input"]

    if name == "read_file":
        with open(args["path"]) as f:
            return f.read()
    elif name == "write_file":
        with open(args["path"], "w") as f:
            f.write(args["content"])
        return "File written successfully"
    elif name == "run_command":
        result = subprocess.run(args["command"], shell=True, capture_output=True)
        return result.stdout.decode() + result.stderr.decode()

IT女子 アラ美
こんなにシンプルなコードで、本当にファイル操作やコマンド実行ができるんですか?

ITアライグマ
できます。ただし、本番環境ではセキュリティリスクがあるので、サンドボックス化やパーミッション管理が必要です。

nanocodeを使った実践ケーススタディ

💡
AI開発スキルを実務レベルに引き上げるなら
LLMやAgent開発の実践的なスキルを身につけて、市場価値の高いエンジニアを目指しましょう

実際にnanocodeを使ってプロジェクトに導入した例を紹介します。詳しくはsmart-coding-mcpでAIアシスタントにセマンティックコード検索を追加するも参考にしてください。

状況(Before)

チームA(バックエンド3名)では、定型的なファイル操作(CRUDテンプレート生成、テストコード雛形作成)に毎回15分程度かかっていました。Claude Codeの導入を検討したものの、ライセンスコストとセキュリティ審査がハードルでした。

行動(Action)

チームリーダーがnanocodeをベースに、以下の拡張を実施しました。

  1. ツール定義の追加(1日目)create_crud_templateツールとgenerate_test_scaffoldツールをnanocodeに追加。合計60行のコード追加
  2. サンドボックス化(2日目):Dockerコンテナ内でnanocodeを実行するように構成し、ファイル操作範囲をプロジェクトディレクトリに限定
  3. チームへの展開(3日目):3名のメンバー全員が使えるようにCLIを整備し、ドキュメントを作成

結果(After)

  • CRUDテンプレート生成:15分 → 30秒(約30倍高速化)
  • テストコード雛形作成:15分 → 45秒(約20倍高速化)
  • 月間削減時間:約15時間(チーム剀5時間 × 3名)
  • ライセンスコスト:Claude API使用料のみ(月約1,000円)

IT女子 アラ美
カスタムツールを追加するのは難しくないですか?

ITアライグマ
nanocodeはシンプルな構造なので、Pythonの基本が分かればツール追加は簡単です。まずは既存のツールを参考にしてみてください。

nanocodeの実行とカスタマイズ

実際にnanocodeを動かす手順と、拡張のアイデアを紹介します。詳しくはFormeでIaCの概念を学ぶも参考にしてください。

# リポジトリをクローン
git clone https://github.com/1rgs/nanocode.git
cd nanocode

# ANTHROPIC_API_KEYを設定
export ANTHROPIC_API_KEY="your-api-key"

# 実行
python nanocode.py "Pythonでフィボナッチ数列を計算するプログラムを作成して"

拡張のアイデア

nanocodeをベースに、以下のような拡張が可能です。

  • ブラウザ操作ツール追加:Playwrightを使ったWeb操作
  • データベース操作ツール:SQLiteやPostgreSQLへのクエリ実行
  • API呼び出しツール:外部APIとの連携
  • 対話履歴の永続化:セッション管理機能

本記事で解説したようなAI技術を、基礎から体系的に身につけたい方は、以下のスクールも検討してみてください。

比較項目 DMM 生成AI CAMP Aidemy Premium
目的・ゴール ビジネス活用・効率化非エンジニア向け エンジニア転身・E資格Python/AI開発
難易度 初心者◎プロンプト作成中心 中級者〜コード記述あり
補助金・給付金 最大70%還元リスキリング補助金対象 最大70%還元教育訓練給付金対象
おすすめ度 S今の仕事に活かすなら AAIエンジニアになるなら
公式サイト 詳細を見る
IT女子 アラ美
AIスキルを身につけたいけど、どのスクールを選べばいいかわからないです…
ITアライグマ
現場で即・AIを活用したいならDMM 生成AI CAMPがおすすめです!プロンプト中心で初心者でも取り組みやすいですよ。

まとめ

nanocodeを通じて、AIコーディングエージェントの仕組みを理解することができました。

  • 核心はツール呼び出しループ:LLMがツールを呼び、結果を受け取り、また判断する
  • 250行で実現可能:本質だけに絞れば、驚くほどシンプルな構造
  • 拡張の余地:ブラウザ操作やDB連携など、ツールを追加すれば機能拡張可能
  • 学習教材として最適:Claude CodeやAiderの仕組みを理解する入り口になる

AIコーディングエージェントは「魔法」ではなく、理解可能なエンジニアリングです。nanocodeをベースに自分なりのエージェントを作ってみることで、LLM時代の開発スキルを磨いてみてください。

IT女子 アラ美
自分でもAIエージェントを作れるかもと思えてきました!

ITアライグマ
まずはnanocodeを動かしてみて、少しずつ拡張していくのがおすすめです。LLMの能力を引き出すツール設計が楽しくなりますよ。

厳しめIT女子 アラ美による解説ショート動画はこちら

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITアライグマのアバター ITアライグマ ITエンジニア / PM

都内で働くPM兼Webエンジニア(既婚・子持ち)です。
AIで作業時間を削って実務をラクにしつつ、市場価値を高めて「高年収・自由な働き方」を手に入れるキャリア戦略を発信しています。

目次