swift-core について
Appleプラットフォーム向けSwift 6開発の基礎を扱うスキルです。並行処理、アーキテクチャ、テスト、ローカライズ、性能分析を参考資料とともにまとめています。
主な機能
- 01Swift 6の並行処理と安全な型
- 02MVVMとClean Architecture
- 03async/await対応のXCTest
- 04String Catalogによるローカライズ
- 05Instrumentsでの性能分析
活用シーン
- 01async/awaitとactorの実装
- 02Swiftアプリの設計
- 03非同期XCTestの作成
- 04UIのローカライズと性能分析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fusengine/ agents --skill swift-coreインストール後、Claude Code で/swift-coreを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/architecture.mdconcurrency.mdi18n.mdperformance.mdtesting.md詳細
リファレンスでは各領域を詳細に扱います。並行性、アーキテクチャ/DI、テスト、i18n、パフォーマンスです。
ベストプラクティス: 共有状態にはロック付きクラスよりもアクターを優先する、ObservableObject よりも @Observable を使う、コールバックハンドラーよりも構造化並行性を使う、すべてのユーザー向けテキストに String Catalog を使う、Release (-O) ビルドでプロファイリングする、可能な場合はクラスよりも値型(構造体)を使う。
Swift Core
すべての Apple プラットフォームで共通する Swift 6 の基礎です。
エージェントワークフロー(必須)
いかなる実装の前にも、3 つのエージェントを並行して起動します。それぞれ name を指定した Agent 呼び出し 1 回ずつです。
- fuse-ai-pilot:explore-codebase - 既存の Swift パターンを分析する
- fuse-ai-pilot:research-expert - Context7/Exa 経由で最新の Swift 6 ドキュメントを検証する
- mcp__apple-docs__search_apple_docs - Swift の並行性パターンを確認する
実装後は、検証のために fuse-ai-pilot:sniper を実行します。
概要
使用する場面
- async/await、アクター、Sendable を実装するとき
- アプリのアーキテクチャ(MVVM、クリーンアーキテクチャ)を設計するとき
- XCTest で非同期テストを書くとき
- String Catalog でローカライズするとき
- Instruments でプロファイリングするとき
Swift Core を使う理由
| 機能 | 利点 |
|---|---|
| アクター | ロックなしでスレッドセーフな共有状態を実現する |
| @Observable | シンプルなリアクティブ状態(ObservableObject を置き換える) |
| String Catalog | Xcode 15 以降で自動ローカライズ |
| Instruments | 組み込みのパフォーマンスプロファイリング |
主要な概念
並行性(Swift 6)
厳格な並行性チェックを伴う最新の async/await です。アクターはスレッドセーフな状態を提供し、Sendable は安全な型をマークします。
アーキテクチャ
@Observable を用いた MVVM が推奨されるパターンです。複雑なアプリでは、ドメインを分離したクリーンアーキテクチャを使用します。
テスト
ネイティブな async/await サポートを備えた XCTest です。非同期テストではエクスペクテーションは不要です。
国際化
String Catalog は必須です。すべてのユーザー向けテキストをローカライズする必要があります。
パフォーマンス
Instruments でプロファイリングします。遅延読み込みを使用し、ビューの body で重い処理を避けます。
リファレンスガイド
| 必要なもの | リファレンス |
|---|---|
| async/await、アクター、Sendable | concurrency.md |
| MVVM、クリーンアーキテクチャ、DI | architecture.md |
| XCTest、非同期テスト、モック | testing.md |
| String Catalog、ローカライズ | i18n.md |
| Instruments、最適化 | performance.md |
ベストプラクティス
- 共有状態にはアクター - ロック付きクラスよりもアクターを優先する
- ObservableObject よりも @Observable - よりシンプルで、パフォーマンスも良い
- 構造化並行性 - async/await を使い、コールバックハンドラーは使わない
- String Catalog - すべてのユーザー向けテキストをローカライズする必要がある
- Release でプロファイリング - 常に
-O最適化でプロファイリングする - 値型 - クラスよりも構造体を優先する