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