neo-swift-ui について
neo-swift-uiは、iOS 16以降を対象とするSwiftUIプロジェクト向けの開発スキルです。UIコードの作成、デバッグ、リファクタリングを支援し、対象バージョンや状態管理に応じてナビゲーション、レイアウト、データフローを提案します。
主な機能
- 01デプロイ対象と状態管理方式の確認
- 02再利用可能なビュー階層の設計
- 03最新のナビゲーションとレイアウトAPIの活用
- 04状態バインディング、ビュー更新、構成の確認
活用シーン
- 01従来のナビゲーションをNavigationStackに移行
- 02最新の状態管理を使ったSwiftUI画面の構築
- 03複雑なビューの分割とデータフローの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ benknightdark/ neo-skills --skill neo-swift-uiインストール後、Claude Code で/neo-swift-uiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/anti-patterns.mdcoding-style.mdpatterns.md詳細
モダンな SwiftUI(iOS 16 以降)エキスパートスキル
対象となるケース
- ユーザーが SwiftUI コードの作成、デバッグ、リファクタリング、またはレビューを依頼した場合。
- 対象プロジェクトのバージョンが iOS 16 以降の場合(
NavigationStack、Gridなどの機能を活用)。 - 状態管理(
@State、@Observable)、カスタムレイアウト、またはアニメーションを扱う場合。
ワークフロー
- 状況把握(バージョンと環境の確認):
- デプロイメントターゲットが iOS 16 以降かどうかを確認します。
- 現在の状態管理方式(従来の
ObservableObjectとモダンな@Observable)を特定します。 - ナビゲーションコンポーネントの使用状況を評価します(非推奨の
NavigationViewが引き続き使われているか確認します)。
- 検討(計画フェーズ):
- 再利用性を最大化し、冗長な
bodyの計算を最小化するビュー階層を計画します。 - ナビゲーションが必要な場合は、
NavigationStackまたはNavigationSplitViewを使用します。 - データのライフサイクルに応じて、適切なデータフローツール(
State、Binding、Environment)を選択します。
- 再利用性を最大化し、冗長な
- 実行(実装フェーズ):
- SwiftUI の基本原則に従い、簡潔で宣言的な Swift コードを記述します。
- 複雑なレイアウトの実装には、
Grid、ViewThatFits、またはカスタムのLayoutプロトコルを使用します。 - モダンなモディファイア(例:
detentsを指定した.sheet)を活用します。
- 検証(標準的な検証):
- 「God View」(ロジックや
bodyの内容が過剰なビュー)がないか確認し、分割を提案します。 - 不要なビューの更新を避けるため、
@Stateと@Bindingが正しく使われていることを確認します。 - UI がスムーズに動作し、Apple の Human Interface Guidelines(HIG)に準拠していることを検証します。
- 「God View」(ロジックや
機能ロードマップ(SwiftUI の進化)
iOS 13.0 - 15.0(基盤の時代)
- 宣言的な構文:コアとなる
Viewプロトコルとbodyプロパティ。 - 状態管理:
@State、@Binding、@ObservedObject、@EnvironmentObject。 - 基本的なコンテナ:
VStack、HStack、ZStack、List。 - 従来のナビゲーション:
NavigationViewとNavigationLink。
iOS 16.0 - 17.0(モダンな時代)
- NavigationStack:分離されたデータ駆動型のナビゲーションパターン。
- Observation フレームワーク:
ObservableObjectに代わる@Observableマクロ(Swift 5.9 以降)。 - 高度なレイアウト:
Grid、ViewThatFits、Layoutプロトコル。 - Swift Charts:ネイティブのデータ可視化フレームワーク。
iOS 18.0 以降(最新機能)
- SwiftUI アニメーション:フェーズベースおよびキーフレームベースの新しいアニメーション API。
- インタラクションの強化:Scroll View コントロールとジェスチャー処理の改善。
コーディング規約
- 宣言的なスタイル:ビュー階層を明確に保ち、
body内に複雑なロジックを記述しないでください。 - モジュール化:サブビューは計算プロパティではなく、独立した
structに分割します。 - プレビューのガイドライン:迅速な開発と、複数の環境設定(ダークモード、異なるロケール)でのテストには
#Previewマクロを使用します。 - 型安全性:型を明示したナビゲーションパスと環境キーを優先します。
提供内容
- バージョンに最適化されたコード:iOS 16 以降の機能(例:
NavigationStack、presentationDetents)を利用したコードを提供します。 - モジュール化されたビューコンポーネント:大規模なビューを、単一の責務を持つ再利用可能なコンポーネントに分割します。
- モダンな状態管理:Swift 5.9 以降をサポートするプロジェクトでは、
@Observableパターンを優先します。
検証
- 警告なしでコードがコンパイルでき、対象バージョンで利用可能な最適な API を使用していることを確認します。
- ビューの
bodyの実行効率を検証し、副作用が含まれていないことを確認します。 - 可能な限り、データフローが単方向データフローの原則に従っていることを確認します。
ドキュメント
公式リファレンス
内部リファレンス
コメント
Markdown 対応