概要
- Agentic coding の実体験とワークフローを解説
- Claude Code のSonnetモデルと効率的なツール運用
- Go言語推奨 の理由と言語選定のポイント
- ツール設計・運用 の具体例と工夫
- シンプルなコード と安定したエコシステムの重要性
Agentic Coding実践記
- Claude Code を中心にMaxサブスクリプション(月額$100)を利用
- Sonnetモデル のみ使用、Opusより好結果
- トークン効率 を重視し、スクリーンショットやブラウザ操作は極力回避
- エージェントにタスクを一任 し、基本的に完了まで介入しない
- IDEやAI統合の役割縮小、Vimの再活用
- 技術進化が非常に速い ため、普遍的な原則のみを重視
基本方針
- 全権限を付与 (claude --dangerously-skip-permissions使用、エイリアスclaude-yolo)
- リスク管理 はDocker環境で実施
- MCP(Multi-Component Protocol) は必要時のみ利用
- MCPはツールアクセスの標準化プロトコル
- Playwright-MCPでのブラウザ自動化など一部用途で活用
- 独自ツールは通常のスクリプト として運用
言語選定
- Go言語 を新規バックエンドプロジェクトで推奨
- 明示的なContextシステム でAIエージェントが扱いやすい
- テストキャッシュ によりエージェントループが高速
- シンプルな文法 でLLMとの相性抜群
- 構造的インターフェース で型推論が容易
- エコシステムの安定性 で古いコード生成リスク低減
- Pythonは非推奨
- Pytestのマジックや非同期処理でエージェントが混乱
- プロセス起動が遅く、エージェントループが非効率
- フロントエンド はTailwind, React, Tanstack Query/Router, Viteを選択
- Tanstack Routerのファイル名仕様($param.tsxなど)がエージェント混乱の原因
ツール設計・運用
- 全てがツールになり得る
- シェルスクリプト、MCPサーバー、ログファイル等
- ツールは高速応答が必須
- クラッシュは許容、ハングは致命的
- ユーザーフレンドリーな設計
- 誤用時は明確なエラー出力で前進を促進
- LLMの誤操作にも耐える堅牢性
- 未定義動作やユーザーエラーを想定しない
- デバッグ性・可観測性の確保
-
重要ツールはMakefileに統合し、プロセスマネージャーも二重起動を防止
-
ログは常にファイル出力し、エージェントが自己診断可能に
-
例:メール送信フローもstdoutログで完結、エージェントが自動でログ参照
-
スピード重視の工夫
- 推論コストとツール応答速度がボトルネック
- エージェント自身が一時的にツール生成 する場合も高速実行が必須
- 遅い処理はデーモン化やホットリロードで対策
- 例:Sentryのリロード遅延対策でPythonモジュールの動的読み込み
- ログの冗長度調整も重要
- 情報量とトークン効率のバランスをAIが制御可能に
安定性・コピペ・アップグレード
- 安定したエコシステムが最優先
- GoやFlaskはLLMとの相性良好
- コードベースの安定性も重要
- ライブラリアップグレードは慎重に
- エージェントが残すコメントや設計意図が陳腐化しやすい
- 依存よりも自作コード重視
- シンプルな自作コードの方がエージェント運用に有利
シンプルなコードのすすめ
- 複雑なコードより単純な実装が圧倒的に有利
- 冗長でも明確な関数名・クラス回避・継承回避
- SQLもORMより素直な記述がベター
- エージェントがSQLログと照合しやすい
Agentic Codingの課題と今後
- 進化速度が速く、現状のノウハウもすぐ陳腐化
- 普遍的な設計原則とシンプルな実装が長期的に有効
- エージェントの自律性を高めるには、ツール・ログ・エコシステム全体の設計が鍵