mcpField
C
coding-swift

coding-swift

github.com/alphaonedev開発43 回インストール
リポジトリ

coding-swift について

coding-swiftは、iOSやmacOSの開発を支援するSwift 6向けスキルです。並行処理、ジェネリクス、パッケージ管理、テストを扱います。

主な機能

  1. 01async/awaitとアクターによる並行処理
  2. 02ジェネリクスとプロパティラッパー
  3. 03Swift Package Managerの依存関係管理
  4. 04XCTestによる非同期コードのテスト

活用シーン

  1. 01非同期ネットワークリクエストを使うアプリの構築
  2. 02アクターによる共有状態の安全な管理
  3. 03Sendable準拠に向けたコードの更新
  4. 04SPM依存関係の編集とテスト実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill coding-swift

インストール後、Claude Code で/coding-swiftを入力して読み込まれたか確認します。

詳細

目的

このスキルは、並行処理、ジェネリクス、パッケージ管理など、iOS および macOS 開発向けの最新機能に重点を置き、Swift 6 プログラミングを AI が支援できるようにします。

使用する場面

非同期処理ベースのアプリの構築、スレッドセーフを実現するアクターの実装、iOS/macOS プロジェクトでの Swift Package Manager(SPM)依存関係の管理など、Swift 6 コードに関するタスクでこのスキルを使用します。既存コードの Sendable 準拠やジェネリクスの機能強化が必要な場合にも適用します。

主な機能

  • 非同期処理:ネットワークリクエストの処理など、ブロッキングを伴わないコード実行に使用します。
  • アクター:共有状態を安全に管理し、Sendable 準拠を確保します。
  • ジェネリクス:ジェネリック構造体の定義など、型制約を使って再利用可能なコードを実現します。
  • プロパティラッパー:検証など、プロパティ管理を簡素化します。
  • 結果ビルダー:SwiftUI のビューなど、複雑な型を構築します。
  • SPM:Package.swift ファイルを使って依存関係を管理します。
  • テスト:非同期コードのユニットテストを XCTest で記述します。

使用パターン

タスクを実行する際は、Swift 6 の慣用的な書き方に沿ってコードを構成します。I/O 操作には非同期関数を使用し、共有状態はアクターでラップし、コレクションにはジェネリクスを活用します。SPM では Package.swift を編集してビルドを実行します。データ競合を避けるため、常に Sendable に準拠していることを確認してください。Xcode と統合する場合は、プロジェクト設定でコンパイラのバージョンを指定して、Swift 6 ツールチェーンでプロジェクトをコンパイルします。

よく使うコマンド/API

  • Swift パッケージをビルドする:プロジェクトディレクトリで swift build --configuration release を実行します。
  • テストを実行する:SPM プロジェクトで swift test --enable-test-discovery を実行します。
  • 非同期 API の使用:func fetchData() async throws -> Data { ... } のような非同期関数を定義し、Task { let data = try await fetchData() } で呼び出します。
  • アクターの例:actor MyActor { var state: Int = 0; func update() { state += 1 } } でアクターを作成します。
  • ジェネリクス API:func swap<T>(_ a: inout T, _ b: inout T) { let temp = a; a = b; b = temp } のようなジェネリック関数を使用します。
  • プロパティラッパー:@propertyWrapper struct Clamped<Value: Comparable> { var wrappedValue: Value { ... } } のように定義します。
  • SPM の設定:let package = Package(name: "MyApp", dependencies: [.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0")]) のような形式で Package.swift を編集します。

統合に関する注意

Xcode 15 以降などを使って Swift 6 ツールチェーンがインストールされていることを確認し、このスキルを統合します。外部サービスを利用する場合は、コード内の API 呼び出しで $SWIFT_API_KEY のような環境変数を使って認証情報を設定します。例:let apiKey = ProcessInfo.processInfo.environment["SWIFT_API_KEY"]。他のスキルと組み合わせる場合は、「Swift Packages」タブでパッケージを追加し、Xcode にインポートします。並行処理では、実行時エラーを避けるため、非同期コンテキストでアクターを使用してください。

エラー処理

Swift 6 では、次のように非同期関数で do-catch ブロックを使用してエラーを処理します。

do {
    let result = try await someAsyncFunction()
} catch let error as NSError {
    print("Error code: \(error.code)")
}

Sendable エラーが発生した場合は、関数に @Sendable を追加し、準拠していないクロージャを修正してください。SPM では、swift build の出力からビルドエラーを確認します。たとえば、「error: dependency not found」を探し、Package.swift を更新して解決します。クラッシュを防ぐため、オプショナルには必ず guard 文を使用してください。

具体的な使用例

  1. 非同期ネットワークリクエスト:API からデータを取得するには、次を使用します:func fetchUser() async throws -> User { let url = URL(string: "https://api.example.com/user")!; let (data, _) = try await URLSession.shared.data(from: url); return try JSONDecoder().decode(User.self, from: data) }。タスク内で呼び出します:Task { do { let user = try await fetchUser(); print(user.name) } catch { print(error) } }。
  2. 共有状態を管理するアクター:カウンターを安全に管理するには、次のように定義します:actor Counter { private var value = 0; func increment() { value += 1 } }。スレッドセーフを確保するため、次のように使用します:let counter = Counter(); Task { await counter.increment(); print(await counter.value) }。

グラフの関係性

  • 関連項目:coding-general(クラスターを共有)、ios-development(タグ「ios」経由)、macos-app(タグ「macos」経由)、concurrency-handling(埋め込みヒント「concurrency actor async」経由)。
  • クラスター:より広範なプログラミングスキルを対象とする「coding」クラスターに接続しています。
  • タグ:「swift」タグが付いたスキルとは言語固有のタスクで、「spm」タグが付いたスキルとはパッケージ管理で関連付けられています。

コメント