お疲れ様です!IT業界で働くアライグマです!
結論から言えば、AIコーディングエージェントの核心は「ツール呼び出しのループ」に集約されます。 Claude CodeやGitHub Copilot Agentなど高度なツールが話題ですが、その基本原理はシンプルです。
「AIコーディングツールの仕組みを理解したいけど、ソースが複雑すぎて追えない」「Claude Codeは便利だけど、何をやっているのかブラックボックス」——こんな悩みを持つエンジニアも多いのではないでしょうか。
今回紹介する「nanocode」は、Claude Code代替として公開されたわずか250行のPythonファイルです。依存ライブラリゼロで、AIエージェントの仕組みを学ぶのに最適な教材となります。
nanocodeとは何か
nanocodeは、GitHub上で公開されているオープンソースのAIコーディングエージェントです。特徴は以下の通りです。
nanocodeの基本スペック
- コード行数:約250行(単一Pythonファイル)
- 依存ライブラリ:ゼロ(標準ライブラリのみ)
- 対応モデル:Claude API(Anthropic)
- 主な機能:ファイル読み書き、コマンド実行、コード生成
詳しくはGitHub Copilotのエージェントモードとカスタム命令で開発生産性を最大化する実践ガイドも参考にしてください。
なぜ250行で実現できるのか
多くのAIコーディングツールは数万行のコードで構成されています。しかしnanocodeが250行で済むのは、「本質的な処理」だけに絞っているからです。
- UIなし(CLIのみ)
- エラーハンドリング最小限
- 機能拡張性なし(単一ユースケース特化)
この割り切りによって、AIエージェントの「核心部分」だけを抽出したコードになっています。
IT女子 アラ美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エージェントの心臓部です。以下のサイクルを繰り返します。
- ユーザーの指示をLLMに送信
- LLMがツール呼び出しを返す(またはテキスト応答)
- ツールを実行し、結果をLLMに返す
- タスク完了まで2〜3を繰り返す
ツール実行(Tool Execution)
LLMが指定したツールを実際に実行し、結果を返します。nanocodeではsubprocessモジュールでシェルコマンドを実行したり、標準のファイルI/Oでファイル操作を行います。



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()



nanocodeを使った実践ケーススタディ
実際にnanocodeを使ってプロジェクトに導入した例を紹介します。詳しくはsmart-coding-mcpでAIアシスタントにセマンティックコード検索を追加するも参考にしてください。
状況(Before)
チームA(バックエンド3名)では、定型的なファイル操作(CRUDテンプレート生成、テストコード雛形作成)に毎回15分程度かかっていました。Claude Codeの導入を検討したものの、ライセンスコストとセキュリティ審査がハードルでした。
行動(Action)
チームリーダーがnanocodeをベースに、以下の拡張を実施しました。
- ツール定義の追加(1日目):
create_crud_templateツールとgenerate_test_scaffoldツールをnanocodeに追加。合計60行のコード追加 - サンドボックス化(2日目):Dockerコンテナ内でnanocodeを実行するように構成し、ファイル操作範囲をプロジェクトディレクトリに限定
- チームへの展開(3日目):3名のメンバー全員が使えるようにCLIを整備し、ドキュメントを作成
結果(After)
- CRUDテンプレート生成:15分 → 30秒(約30倍高速化)
- テストコード雛形作成:15分 → 45秒(約20倍高速化)
- 月間削減時間:約15時間(チーム剀5時間 × 3名)
- ライセンスコスト:Claude API使用料のみ(月約1,000円)



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開発 |
| 難易度 | プロンプト作成中心 | コード記述あり |
| 補助金・給付金 | リスキリング補助金対象 | 教育訓練給付金対象 |
| おすすめ度 | 今の仕事に活かすなら | AIエンジニアになるなら |
| 公式サイト | 詳細を見る | − |



まとめ
nanocodeを通じて、AIコーディングエージェントの仕組みを理解することができました。
- 核心はツール呼び出しループ:LLMがツールを呼び、結果を受け取り、また判断する
- 250行で実現可能:本質だけに絞れば、驚くほどシンプルな構造
- 拡張の余地:ブラウザ操作やDB連携など、ツールを追加すれば機能拡張可能
- 学習教材として最適:Claude CodeやAiderの仕組みを理解する入り口になる
AIコーディングエージェントは「魔法」ではなく、理解可能なエンジニアリングです。nanocodeをベースに自分なりのエージェントを作ってみることで、LLM時代の開発スキルを磨いてみてください。













