swiftui-pro について
swiftui-proは、SwiftとSwiftUIの正確性、最新APIの使用、プロジェクト規約を確認するコードレビュー用スキルです。分野別の参照資料に沿って問題を調べ、実際の問題のみをファイル単位の修正案とともに報告します。
主な機能
- 01非推奨APIと最新の用法を確認
- 02データフローとナビゲーションをレビュー
- 03アクセシビリティと性能を確認
- 04ファイル別に問題と修正コードを提示
- 05実際の問題のみを報告
活用シーン
- 01SwiftUIのコード変更をレビュー
- 02VoiceOverとDynamic Typeの対応確認
- 03ナビゲーションやデータフローの問題特定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mengto/ skills --skill swiftui-proインストール後、Claude Code で/swiftui-proを入力して読み込まれたか確認します。
詳細
Swift および SwiftUI のコードについて、正確性、最新 API の使用状況、プロジェクトの規約への準拠をレビューします。実際に問題がある場合のみ報告し、細かな指摘や根拠のない問題の指摘はしないでください。
レビューの手順:
references/api.mdを使って、非推奨 API がないか確認します。references/views.mdを使って、ビュー、モディファイア、アニメーションが最適に記述されているか確認します。references/data.mdを使って、データフローが正しく設定されているか検証します。references/navigation.mdを使って、ナビゲーションが最新の状態で、パフォーマンスに優れているか確認します。references/design.mdを使って、Apple のヒューマンインターフェイスガイドラインに準拠した、アクセシブルなデザインが使われているか確認します。references/accessibility.mdを使って、Dynamic Type、VoiceOver、Reduce Motion を含むアクセシビリティへの準拠を検証します。references/performance.mdを使って、コードが効率的に実行できるか確認します。references/swift.mdを使って、Swift コードを簡易検証します。references/hygiene.mdを使って、最後にコードの健全性を確認します。
部分的なレビューを行う場合は、該当するリファレンスファイルのみを読み込みます。
基本方針
- iOS 26 は存在し、新規アプリのデプロイターゲットとしてデフォルトになっています。
- モダンな Swift Concurrency を使用し、Swift 6.2 以降を対象にしてください。
- SwiftUI 開発者は、依頼がない限り UIKit の使用を避けることを望んでいます。
- 事前に確認せず、サードパーティのフレームワークを導入しないでください。
- 複数の構造体、クラス、列挙型を 1 つのファイルにまとめず、型ごとに別の Swift ファイルに分けてください。
- 一貫性のあるプロジェクト構成を使用し、フォルダー構成はアプリの機能に基づいて決定してください。
出力形式
ファイルごとに指摘をまとめます。各問題について:
- ファイル名と該当する行を示します。
- 違反しているルールを明記します(例:「
foregroundColor()の代わりにforegroundStyle()を使用する」)。 - 修正前と修正後のコードを簡潔に示します。
問題のないファイルは省略します。最後に、影響の大きい変更から優先順位を付けてまとめます。
出力例:
ContentView.swift
12 行目:foregroundColor() の代わりに foregroundStyle() を使用します。
// Before
Text("Hello").foregroundColor(.red)
// After
Text("Hello").foregroundStyle(.red)
24 行目:アイコンのみのボタンは VoiceOver に不適切です。テキストラベルを追加します。
// Before
Button(action: addUser) {
Image(systemName: "plus")
}
// After
Button("Add User", systemImage: "plus", action: addUser)
31 行目:ビュー本体で Binding(get:set:) を使用しないでください。代わりに @State と onChange() を使用します。
// Before
TextField("Username", text: Binding(
get: { model.username },
set: { model.username = $0; model.save() }
))
// After
TextField("Username", text: $model.username)
.onChange(of: model.username) {
model.save()
}
まとめ
- アクセシビリティ(高): 24 行目の追加ボタンは VoiceOver から認識できません。
- 非推奨 API(中): 12 行目の
foregroundColor()はforegroundStyle()に置き換える必要があります。 - データフロー(中): 手動のバインディングは不安定で、保守が困難です。
出力例ここまで。
リファレンス
references/accessibility.md- Dynamic Type、VoiceOver、Reduce Motion、およびその他のアクセシビリティ要件。references/api.md- 最新 API へのコード更新と、置き換え対象の非推奨コード。references/design.md- Apple のヒューマンインターフェイスガイドラインに準拠した、アクセシブルなアプリを構築するための指針。references/hygiene.md- コードを問題なくコンパイルし、長期的に保守しやすくする方法。references/navigation.md-NavigationStack/NavigationSplitViewを使用したナビゲーションと、アラート、確認ダイアログ、シート。references/performance.md- SwiftUI コードを最適化し、パフォーマンスを最大限に高める方法。references/data.md- データフロー、共有状態、プロパティラッパー。references/swift.md- Swift Concurrency の効果的な使用など、モダンな Swift コードの記述に関するヒント。references/views.md- ビューの構造、構成、アニメーション。
コメント
Markdown 対応