Goで簡易なCode Agentを作ってみた
「How to Build an Agent」記事を写経しながら、Go簡易なコーディングエージェントを作成しました。
自分で作ることでエージェントに対する理解が深まるので、エージェントに興味ある方はぜひ試してみてください。
作ったもの
シンプルなエージェントで次のことができます。また、拡張性もあるので、
- LLMとやりとり(モデルはClaudeを利用)
- ファイルの作成・編集
- ファイルの読み取り
- ディレクトリの読み取り
コーディングエージェントを立ち上げfizzbuzzプログラムの作成を指示します。
fizzbuzzプログラムをgoで作成してください。ファイル名はfizzbuzz.goにしてください
するとエージェントがFizzBuzzプログラムを作成してくれました。
% go run main.go
Chat with Claude (use 'ctrl-c' to quit)
You:
fizzbuzzプログラムをgoで作成してください。ファイル名はfizzbuzz.goにしてください
Claude: GOで`fizzbuzz.go`というファイル名でFizzBuzzプログラムを作成します。FizzBuzzプログラムは通常、1から100までの数字を出力し、3の倍数のときは"Fizz"、5の倍数のときは"Buzz"、3と5の両方の倍数のときは"FizzBuzz"と出力するプログラムです。
まず、現在のディレクトリにあるファイルを確認してみましょう。
tool: list_files({})
Claude: それでは、fizzbuzz.goファイルを作成します。
tool: edit_file({"path":"fizzbuzz.go","old_str":"","new_str":"package main\n\nimport \"fmt\"\n\nfunc main() {\n\t// 1から100までの数値をループ処理\n\tfor i := 1; i <= 100; i++ {\n\t\t// 3と5の両方の倍数(15の倍数)の場合\n\t\tif i%3 == 0 && i%5 == 0 {\n\t\t\tfmt.Println(\"FizzBuzz\")\n\t\t// 3の倍数の場合\n\t\t} else if i%3 == 0 {\n\t\t\tfmt.Println(\"Fizz\")\n\t\t// 5の倍数の場合\n\t\t} else if i%5 == 0 {\n\t\t\tfmt.Println(\"Buzz\")\n\t\t// それ以外の場合は数字をそのまま出力\n\t\t} else {\n\t\t\tfmt.Println(i)\n\t\t}\n\t}\n}"})
Claude: `fizzbuzz.go`ファイルを作成しました。このプログラムは以下の機能を持っています:
1. 1から100までの数値をループで処理します
2. 数値が3と5の両方の倍数(つまり15の倍数)の場合は "FizzBuzz" と出力します
3. 数値が3の倍数の場合は "Fizz" と出力します
4. 数値が5の倍数の場合は "Buzz" と出力します
5. それ以外の場合は数値そのものを出力します
このプログラムを実行するには、コマンドラインで以下のコマンドを実行してください:
```
go run fizzbuzz.go
```
これにより、1から100までの数値に対するFizzBuzzの結果が表示されます。
You:

実際にエージェントが作成したFizzBuzzプログラムは次のようになっており実行もできました。
cat fizzbuzz.go
package main
import "fmt"
func main() {
// 1から100までの数値をループ処理
for i := 1; i <= 100; i++ {
// 3と5の両方の倍数(15の倍数)の場合
if i%3 == 0 && i%5 == 0 {
fmt.Println("FizzBuzz")
// 3の倍数の場合
} else if i%3 == 0 {
fmt.Println("Fizz")
// 5の倍数の場合
} else if i%5 == 0 {
fmt.Println("Buzz")
// それ以外の場合は数字をそのまま出力
} else {
fmt.Println(i)
}
}
}%
エージェントのシーケンス図
エージェントは魔法のように思えますが、シーケンス図をみるとシンプルな作りとなっています。
- エージェントのメインはループ処理
- エージェントのループ内では、
- ユーザーからのメッセージを受け取る
- メッセージ内容をLLMに送信する
- レスポンス内容に応じて、ユーザーにメッセージを返したり、ツール(ファイル読み込みやファイル編集など)を実行する

エージェント作りを試してみたいという方はぜひ「How to Build an Agent」を試してみてください。