moai-lang-swift について
iOS と macOS 向け Swift 6 以降の開発を支援するリファレンススキルです。SwiftUI、並行処理、Combine、テスト、パッケージ管理の実装パターンを扱います。
主な機能
- 01Swift 6 の言語機能
- 02SwiftUI の状態管理とナビゲーション
- 03async/await とアクターによる並行処理
- 04Combine の Publisher パターン
- 05XCTest と Swift Package Manager
活用シーン
- 01iOS または macOS アプリの開発
- 02Swift の並行処理コードの設計
- 03SwiftUI ビューと状態モデルの構築
- 04XCTest による非同期コードのテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ modu-ai/ moai-adk --skill moai-lang-swiftインストール後、Claude Code で/moai-lang-swiftを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
modules/combine-reactive.mdconcurrency.mdswift6-features.mdswiftui-patterns.mdreferences/examples.mdreference.md詳細
Swift 6+ 開発スペシャリスト
SwiftUI、Combine、Swift Concurrency を使用した iOS/macOS 向け Swift 6.0+ 開発のエキスパートです。
自動トリガー:Swift ファイル(.swift)、iOS/macOS プロジェクト、Xcode ワークスペース
クイックリファレンス
主な機能
- Swift 6.0:型付き throws、完全な並行処理、デフォルトでのデータ競合安全性
- SwiftUI 6:@Observable マクロ、NavigationStack、最新の宣言型 UI
- Combine:パブリッシャーとサブスクライバーによるリアクティブプログラミング
- Swift Concurrency:async/await、アクター、TaskGroup、分離
- XCTest:単体テスト、UI テスト、非同期テストのサポート
- Swift Package Manager:依存関係の管理
バージョン要件
- Swift:6.0+
- Xcode:16.0+
- iOS:17.0+(推奨)、最低 15.0
- macOS:14.0+(推奨)
プロジェクトのセットアップ
Package.swift の設定:まず、swift-tools-version コメントを 6.0 に設定します。PackageDescription をインポートします。Package イニシャライザーを使用して let package を定義します。name、.iOS と .macOS の最小バージョンを指定する platforms 配列、ライブラリ定義を含む products 配列、パッケージ URL とバージョン要件を含む dependencies 配列、そして依存関係を含む target と testTarget エントリーを含む targets 配列を設定します。
基本パターン
基本的な @Observable ViewModel:Observation フレームワークをインポートします。final class に @Observable 属性と @MainActor 属性を付けます。状態を表すプロパティを private(set) var で宣言します。isLoading を true に設定し、defer を使って false に設定する非同期関数を作成し、try? await と nil 合体演算子を使って取得したデータを代入します。
基本的な SwiftUI View:View に準拠する struct を定義します。viewModel 用の @State private var を宣言します。body の計算プロパティで、viewModel の項目を反復処理する List を NavigationStack 内に配置します。.task 修飾子を追加して viewModel.load を await で呼び出し、プルして更新するための .refreshable 修飾子も追加します。
スレッド安全性を確保する基本的な Actor:キャッシュ用の private dictionary を持つ actor 型を定義します。キーを検索し、Data をオプショナルで返す get 関数を作成します。キャッシュに保存するため、キーとデータをパラメーターに取る set 関数を作成します。
モジュール一覧
Swift 6 の機能
- 正確なエラー処理のための型付き throws
- 完全な並行処理チェック
- デフォルトでのデータ競合安全性
- Sendable 準拠の要件
SwiftUI のパターン
- @Observable マクロと状態管理
- NavigationStack とナビゲーションのパターン
- View のライフサイクルと .task 修飾子
- Environment と依存関係の注入
Swift Concurrency
- async/await の基礎
- Actor の分離と @MainActor
- 並列実行のための TaskGroup
- カスタムエグゼキューターと構造化並行処理
Combine フレームワーク
- パブリッシャーとサブスクライバー
- オペレーターと変換
- async/await ブリッジのパターン
- SwiftUI との統合
Context7 ライブラリのマッピング
Swift コア
/apple/swift- Swift 言語と標準ライブラリ/apple/swift-evolution- Swift Evolution の提案/apple/swift-package-manager- SwiftPM のドキュメント/apple/swift-async-algorithms- 非同期シーケンスのアルゴリズム
人気のライブラリ
/Alamofire/Alamofire- HTTP 通信/onevcat/Kingfisher- 画像のダウンロードとキャッシュ/realm/realm-swift- モバイルデータベース/pointfreeco/swift-composable-architecture- TCA アーキテクチャ/Quick/Quick- BDD テストフレームワーク/Quick/Nimble- マッチャーフレームワーク
テストのクイックスタート
MainActor を使った非同期テスト:XCTestCase を継承するテストクラスに @MainActor 属性を付けます。async throws を指定したテスト関数を定義します。モック API を作成してモックデータを設定します。モックを使ってテスト対象を初期化します。非同期メソッドを await で呼び出します。件数の検証には XCTAssertEqual を、ブール値の状態確認には XCTAssertFalse を使用します。
相性の良いもの
moai-lang-kotlin- クロスプラットフォームプロジェクト向けの Android 版moai-lang-flutter- クロスプラットフォームのモバイル開発向けの Flutter/Dartmoai-domain-backend- API 統合とバックエンドとの通信moai-foundation-quality- iOS のセキュリティに関するベストプラクティスmoai-workflow-testing- Xcode のデバッグとプロファイリング
リソース
- reference.md - アーキテクチャパターン、ネットワークレイヤー、SwiftData
- examples.md - 本番環境ですぐに使えるコード例