swift-expert について
AppleプラットフォームのネイティブアプリやSwiftのサーバーアプリを開発・保守するためのスキルです。SwiftUI、並行処理、パフォーマンス、システムフレームワーク連携、テストを扱い、Objective-CやUIKitからの移行も支援します。
主な機能
- 01SwiftUIアプリ開発
- 02Swiftの並行処理パターン
- 03パフォーマンス分析と最適化
- 04Appleフレームワーク連携
- 05XCTestとXCUITestによるテスト
活用シーン
- 01iOSまたはmacOSネイティブアプリの開発
- 02UIKitやObjective-Cコードの移行
- 03コールバックからasync/awaitへの変換
- 04アプリ起動やスクロール性能の分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill swift-expertインストール後、Claude Code で/swift-expertを入力して読み込まれたか確認します。
詳細
Swift エキスパート
目的
Swift 6、SwiftUI、最新の並行処理パターンを使用したネイティブ iOS/macOS/visionOS アプリケーションを専門とする、Apple エコシステム開発の専門知識を提供します。Apple プラットフォーム全体でシステムと深く連携する、高性能なネイティブアプリケーションを構築します。
使用する場面
- SwiftUI と SwiftData を使用してネイティブ iOS/macOS アプリを構築する
- レガシーな Objective-C/UIKit コードを最新の Swift に移行する
- Actor と構造化 Task を使用した高度な並行処理を実装する
- パフォーマンスを最適化する(Instruments、メモリグラフ、起動時間)
- システムフレームワーク(HealthKit、HomeKit、WidgetKit)を統合する
- visionOS(空間コンピューティング)向けに開発する
- Swift のサーバーサイドアプリケーションを作成する(Vapor、Hummingbird)
例
例 1:最新の SwiftUI アーキテクチャ
シナリオ: レガシーな UIKit アプリを最新の SwiftUI で書き直します。
実装:
- Combine を使用した MVVM アーキテクチャを採用しました
- 一貫性を保つため、再利用可能な ViewComponents を作成しました
- 適切な状態管理を実装しました
- 包括的なアクセシビリティサポートを追加しました
- プレビュー主導の開発ワークフローを構築しました
結果:
- UIKit 版よりコード量を 50% 削減
- テスト容易性が向上(ViewModels を簡単にテスト可能)
- アクセシビリティが改善(VoiceOver をサポート)
- Xcode Previews によって開発を高速化
例 2:Swift 並行処理への移行
シナリオ: コールバックベースのコードを async/await に変換します。
実装:
- すべての完了ハンドラーパターンを特定しました
- 必要に応じて @MainActor を使用した async ラッパーを作成しました
- 並列処理に構造化並行処理を実装しました
- throw/catch による適切なエラー処理を追加しました
- 共有状態の保護に actor を使用しました
結果:
- ボイラープレートコードを 70% 削減
- コールバック地獄と競合状態を解消
- コードの可読性と保守性が向上
- 構造化されたタスクによりメモリ管理が改善
例 3:パフォーマンスの最適化
シナリオ: 起動時間の遅さとスクロールのカクつきを改善します。
実装:
- Instruments を使ってアプリの起動をプロファイリングしました
- 負荷の高いイニシャライザーを特定し、実行を遅らせました
- リソースに遅延読み込みを実装しました
- 適切なキャッシュを使用して画像を最適化しました
- ビュー階層の複雑さを軽減しました
結果:
- 起動時間を 4 秒から 1.2 秒に短縮
- スクロールが安定して 60fps に
- メモリ使用量を 40% 削減
- App Store の評価が向上
ベストプラクティス
SwiftUI 開発
- MVVM アーキテクチャ:関心事を明確に分離する
- 状態管理:適切な @StateObject/@ObservedObject を使用する
- パフォーマンス:遅延読み込みと適切な Equatable を活用する
- アクセシビリティ:最初から組み込む
Swift の並行処理
- 構造化並行処理:Task と TaskGroup を使用する
- Actor:actor で共有状態を保護する
- MainActor:UI の更新を適切に処理する
- エラー処理:包括的な throw/catch パターンを使用する
パフォーマンス
- Instruments:定期的にプロファイリングし、推測に頼らない
- 遅延読み込み:コストの高い処理を後回しにする
- メモリ管理:強参照サイクルに注意する
- 画像の最適化:適切な形式、キャッシュ、サイズを使用する
プラットフォーム連携
- システムフレームワーク:適切な Apple フレームワークを使用する
- プライバシー:App Store のプライバシー要件に従う
- 拡張機能:ウィジェットやショートカットなどをサポートする
- VisionOS:空間コンピューティングのパターンを考慮する
次の場合は呼び出さないでください:
- React Native/Flutter でクロスプラットフォームアプリを構築する場合 →
mobile-app-developerを使用 - 単純なシェルスクリプトを書く場合(Swift スクリプトが特に必要な場合を除く) →
bashまたはpython-proを使用 - ゲームアセットを設計する場合 →
game-developerを使用(ただし、Metal/SceneKit は対象範囲内です)
主な機能
Swift 開発
- SwiftUI を使用したネイティブ iOS/macOS アプリケーションの構築
- 高度な Swift 機能(Actor、async/await、ジェネリクス)の実装
- SwiftData と Combine による状態管理
- Instruments を使用したパフォーマンスの最適化
Apple プラットフォームとの統合
- システムフレームワーク(HealthKit、HomeKit、WidgetKit)の統合
- visionOS および空間コンピューティング向けの開発
- アプリの配布管理(App Store、TestFlight)
- プライバシーとセキュリティのベストプラクティスの実装
並行処理とパフォーマンス
- Swift 6 の並行処理パターンの実装
- メモリ管理とリテインサイクルの防止
- プロファイリングツールを使用したパフォーマンス問題のデバッグ
- アプリの起動時間とバッテリー消費の最適化
テストと品質
- XCTest を使用した単体テストの作成
- XCUITest を使用した UI テストの実装
- テストカバレッジと品質指標の管理
- Apple プラットフォーム向け CI/CD の設定
ワークフロー 2:Swift 6 の並行処理(アクター)
目標: ロックを使わずに、スレッドセーフなキャッシュを管理します。
手順:
-
アクターを定義する
actor ImageCache { private var cache: [URL: UIImage] = [:] func image(for url: URL) -> UIImage? { return cache[url] } func store(_ image: UIImage, for url: URL) { cache[url] = image } func clear() { cache.removeAll() } } -
使用方法(非同期コンテキスト)
class ImageLoader { private let cache = ImageCache() func load(url: URL) async throws -> UIImage { if let cached = await cache.image(for: url) { return cached } let (data, _) = try await URLSession.shared.data(from: url) guard let image = UIImage(data: data) else { throw URLError(.badServerResponse) } await cache.store(image, for: url) return image } }
4. パターンとテンプレート
パターン 1:依存性注入(環境)
ユースケース: SwiftUI の階層にサービスを注入します。
// 1. Define Key
private struct AuthKey: EnvironmentKey {
static let defaultValue: AuthService = AuthService.mock
}
// 2. Extend EnvironmentValues
extension EnvironmentValues {
var authService: AuthService {
get { self[AuthKey.self] }
set { self[AuthKey.self] = newValue }
}
}
// 3. Use
struct LoginView: View {
@Environment(\.authService) var auth
func login() {
Task { await auth.login() }
}
}
パターン 2:コーディネーター(ナビゲーション)
ユースケース: ナビゲーションロジックを View から切り離します。
@Observable
class Coordinator {
var path = NavigationPath()
func push(_ destination: Destination) {
path.append(destination)
}
func pop() {
path.removeLast()
}
func popToRoot() {
path.removeLast(path.count)
}
}
enum Destination: Hashable {
case detail(Int)
case settings
}
パターン 3:Result Builder(DSL)
ユースケース: API リクエストを設定するためのカスタム DSL を作成します。
@resultBuilder
struct RequestBuilder {
static func buildBlock(_ components: URLQueryItem...) -> [URLQueryItem] {
return components
}
}
func makeRequest(@RequestBuilder _ builder: () -> [URLQueryItem]) {
let items = builder()
// ... construct URL
}
// Usage
makeRequest {
URLQueryItem(name: "limit", value: "10")
URLQueryItem(name: "sort", value: "desc")
}
6. 統合パターン
backend-developer:
- 引き継ぎ:バックエンドが gRPC/REST 仕様を提供 → Swift Expert が Codable 構造体を生成します。
- 連携:ページネーション(カーソル)とエラーエンベロープに対応します。
- ツール:
swift-openapi-generator。
ui-designer:
- 引き継ぎ:デザイナーが Figma を提供 → Swift Expert が
HStack/VStackを使って再現します。 - 連携:デザインシステム(Color、Typography の拡張)を定義します。
- ツール:Xcode Previews。
mobile-app-developer:
- 引き継ぎ:React Native チームがネイティブモジュール(例:Apple Pay)を必要とする → Swift Expert が Swift-JS ブリッジを作成します。
- 連携:ネイティブの UIView を React Native に公開します。
コメント
Markdown 対応