Swiftでプログラミングの未来を体験しよう。本格的なAIコーディングエージェントをSwiftでゼロから構築する方法を詳しく解説します。外部API依存なしで、あなたのアイデアをすぐに形にできる時代がきました。
コーディングエージェントとは?
コーディングエージェントとは、人間の代わりにコードを書いたり、編集を加えたりするAIシステムのことです。大きな特徴として「Plan-Act-Evaluate」というループ処理があります。まずユーザーの要求を分析して план を立て、コードを 生成・実行 し、最後に結果を検証します。Swift は型安全で堅牢なため、信頼性の高いエージェント構築に適しています。
プロジェクト準備とアーキテクチャ設計
Xcodeで新しいSwift Packageを作成します。必要なパッケージは.swiftpm/ディレクトリに定義してください:
// Package.swift
let package = Package(
name: "CodeAgent",
platforms: [.macOS(.v14)],
dependencies: [],
targets: [.target(name: "CodeAgent")]
)
アーキテクチャは「Handler - Agent - Tool」の3層構造が推奨です。Handlerがユーザー入力を受理し、Agentが思考と判断を担当、Toolが実際のファイル操作やコマンド実行を行います。各モジュールはProtocolを通じて疎結合に保ちましょう。
LLM統合の実装
まずはシンプルなプロンプトベースの実装から始めます。OpenAI APIを 例として統合方法を確認しましょう:
import Foundation
protocol LLMProvider {
func generateResponse(prompt: String) async throws -> String
}
class OpenAILLM: LLMProvider {
private let apiKey: String
private let endpoint = "https://api.openai.com/v1/chat/completions"
func generateResponse(prompt: String) async throws -> String {
// API呼び出しの実装
var request = URLRequest(url: URL(string: endpoint)!)
request.httpMethod = "POST"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
let body: [String: Any] = [
"model": "gpt-4",
"messages": [{"role": "user", "content": prompt}]
]
request.httpBody = try JSONSerialization.data(withJSONObject: body)
let (data, _) = try await URLSession.shared.data(for: request)
// レスポンスの解析と返り値
return parseResponse(data)
}
}
ファイル操作とコマンド実行機能
Tool層では実際のファイルシステム操作を実装します。SecurityScopeやSandboxの許可が必要な点に注意してください:
```swift class FileTool { func readFile(at path: String) throws -> String { return try String(contentsOfFile: path, encoding: .utf8) } func writeFile(content: String, to path: String) throws { try content.write(toFile: path, atomically: true, encoding: .utf8