mcpField
I
ios-design

ios-design

github.com/pproencaデザイン・UI218425 回インストール11 週間前に更新
リポジトリ

ios-design について

SwiftUI で iOS インターフェースを構築するエンジニア向けの実装ガイドです。Ken Kocienda と John Edson の原則に基づく優先度付きルールで、アーキテクチャの前提、画面構成、アクセシビリティ、状態管理、ナビゲーション、レイアウトを扱います。

主な機能

  1. 018 カテゴリー、計 62 のルール
  2. 02SwiftUI の状態管理とビュー構成
  3. 03ナビゲーションと適応型レイアウト
  4. 04アクセシビリティとダークモードの指針
  5. 05Clinic のモジュール型 MVVM-C 前提

活用シーン

  1. 01SwiftUI の新規画面の構築
  2. 02コンポーネントやナビゲーション方式の選択
  3. 03VoiceOver と視差効果低減への対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pproenca/dot-skills --skill ios-design

インストール後、Claude Code で/ios-designを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

metadata.json
assets/templates/
_template.md
references/
_sections.md
compose-body-some-view.md
compose-custom-properties.md
compose-modifier-order.md
compose-prefer-composition.md
compose-prefer-value-types.md
compose-viewbuilder.md
converse-dismiss.md
converse-hierarchy.md
converse-nav-bar.md
converse-navigationstack.md
converse-search.md
converse-sheet-item.md
converse-tab-bar.md
converse-tabview.md
converse-toolbar.md
craft-avoid-body-state.md
craft-minimize-scope.md
craft-state-bindable.md
craft-state-binding.md
craft-state-environment.md
craft-state-local.md
craft-state-observable.md
empathy-dark-mode.md
empathy-foreground-style.md
empathy-readable-width.md
empathy-reduce-motion.md
empathy-safe-areas.md

詳細

Apple SwiftUI iOS デザインのベストプラクティス

Apple 品質の iOS インターフェイスを SwiftUI で実装するための開発者向けガイドです。2 つの基礎となるデザイン書を土台にしています。

  • Ken Kocienda — Creative Selection(ユーザーへの共感、コーディングの技、最善の解決策を選ぶ審美眼、反復的な改善を重ねるデモ文化)
  • John Edson — Design Like Apple(システム思考、製品そのものがマーケティング、デザインを声に出して考えること、確信を持ってデザインすること)

8 つの原則ベースのカテゴリにわたる 62 のルールを収録しています。各ルールでは、具体的なアンチパターンを示し、名前のある原則に基づいて修正方法を説明したうえで、iOS 26 / Swift 6.2 における適切な SwiftUI の実装を提示します。

適用範囲と関連スキルとの関係

このスキルは構築と実装のガイドです。Apple 品質のパターンを使って、新しい SwiftUI インターフェイスをゼロから構築する方法を解説します。既存の UI をレビュー・リファクタリングする ios-ui-refactor と併用すると、このスキルが新規実装を担当し、後から ios-ui-refactor が監査します。新しい画面の構築にはこのスキルを、既存画面の評価と改善には関連スキルを使用してください。

クリニックのアーキテクチャ契約(iOS 26 / Swift 6.2)

このスキルのすべてのガイダンスは、クリニックのモジュール型 MVVM-C アーキテクチャを前提としています。

  • Feature モジュールがインポートするのは Domain と DesignSystem のみです(Data や兄弟 Feature はインポートしません)
  • App ターゲットが統合点となり、DependencyContainer、具体的なコーディネーター、Route Shell の配線を所有します
  • Domain は純粋な Swift のまま、モデルに加えて、リポジトリ、*Coordinating、ErrorRouting、AppError の契約を定義します
  • Data は SwiftData/ネットワーク/同期/リトライ/バックグラウンド I/O を所有し、Domain のプロトコルを実装します
  • 読み取り/書き込みフローでは、デフォルトで stale-while-revalidate の読み取りと、楽観的なキューイング書き込みを使用します
  • ViewModel はリポジトリのプロトコルを直接呼び出します(デフォルトのユースケース/インタラクター層は設けません)

適用する場面

以下の場合に、これらのガイドラインを参照してください。

  • 新しい SwiftUI ビューや画面をゼロから構築する
  • セマンティックカラー、システムタイポグラフィ、スペーシンググリッドの中から選ぶ(Edson のシステム思考)
  • @State、@Binding、@Observable、@Environment を使って状態を管理する(Kocienda の技)
  • 適切なコンポーネントを選ぶ:List と LazyVStack、Sheet と FullScreenCover(Kocienda の審美眼)
  • @ViewBuilder、カスタムモディファイア、値型を使ってビューを構成する(Kocienda の創造的選択)
  • NavigationStack、TabView、シートを使ってナビゲーションを実装する(Edson の対話)
  • スタック、グリッド、フレーム、アダプティブレイアウトを使ってコンテンツを配置する(Edson のデザインを声に出して考えること)
  • VoiceOver、タッチターゲット、ダークモード、視差効果を減らす設定への対応を確保する(Kocienda の共感)
  • トランジション、読み込み状態、アニメーションの仕上げを追加する(Edson の「製品そのものがマーケティング」)

優先度別ルールカテゴリ

優先度カテゴリ原則影響度プレフィックスルール数
1すべてのピクセルに込める共感Kocienda「共感」· Edson「デザインは人のためにある」CRITICALempathy-8
2ビジュアルシステムEdson「システム思考」· Kocienda「収束」CRITICALsystem-8
3技:基盤としての状態Kocienda「技」CRITICALcraft-7
4創造的な構成Kocienda「創造的選択」HIGHcompose-6
5審美眼:適切な選択Kocienda「審美眼」· Edson「確信を持ってデザインする」HIGHtaste-8
6対話としてのナビゲーションEdson「デザインは対話」· Kocienda「デモ」HIGHconverse-9
7デザインを声に出して考える:レイアウトEdson「デザインを声に出して考える」· Kocienda「交差点」HIGHlayout-8
8製品が語るEdson「製品そのものがマーケティング」· Kocienda「デモ文化」MEDIUMproduct-8

クイックリファレンス

1. すべてのピクセルに共感を込める(CRITICAL)

Kocienda:「共感とは、他者の視点から世界を見ようとすることです。」Edson:デザインは、デバイスを手にする人から始まります。

2. ビジュアルシステム(CRITICAL)

Edson:「オブジェクト間の関係を見るために、ズームアウトしてください。」Kocienda:収束とは、多くの判断を重ね、ひとつの一貫した全体へと絞り込むことです。

  • system-typography - システムのタイポグラフィスタイルを使い、固定サイズは使わないでください
  • system-visual-hierarchy - サイズ、ウェイト、色を使って明確な視覚的階層を確立してください
  • system-spacing-grid - すべての間隔に4ptを基本単位として使ってください
  • system-material-backgrounds - 奥行きとレイヤー感を出すために、マテリアル背景を使ってください
  • system-sf-symbols - 一貫したアイコン表現のためにSF Symbolsを使ってください
  • system-gradients - 装飾ではなく、視覚的な奥行きを出すためにグラデーションを適用してください
  • system-standard-margins - システム標準のマージンを一貫して使ってください
  • system-stack-config - スタックの配置と間隔を明示的に設定してください
3. クラフト:基盤としての状態管理(CRITICAL)

Kocienda:「クラフトとは、高品質な結果を実現するために技術を活かすことです。」

4. 創造的な構成(HIGH)

Kocienda:「創造的な選択とは、優れたソフトウェアを構成と再構成によって作り上げることです。」

5. センス:正しい選択(高)

Kocienda:「センスとは、磨かれた判断力であり、唯一の正しい解決策を選ぶ能力です。」Edson:1つのアプローチに決めて、それを完璧に仕上げます。

  • taste-list-vs-lazyvstack - システム機能には List、カスタムレイアウトには LazyVStack を選びます
  • taste-sheet-vs-fullscreen - タスクには sheet、没入感を重視する場合には fullScreenCover を選びます
  • taste-picker - データ型に適したピッカースタイルを選びます
  • taste-grid-vs-lazygrid - 整列したデータには Grid、スクロール可能なコレクションには LazyVGrid を選びます
  • taste-button - アクションの重要度に合ったボタンスタイルを使います
  • taste-textfield - 適切なキーボードとコンテンツタイプを指定してテキスト入力を設定します
  • taste-alerts - アラートは、重要で対応を妨げる情報にのみ使います
  • taste-action-sheets - 文脈に応じた複数選択のアクションには確認ダイアログを使います
6. 会話としてのナビゲーション(高)

Edson:「デザインとは、製品と人との対話です。」Kocienda:デモとは、インターフェイスが明確に語りかけているかを確かめる対話です。

  • converse-navigationstack - プログラムから制御でき、型安全なナビゲーションには NavigationStack を使います
  • converse-tabview - 並列的なナビゲーションには TabView でアプリのセクションを整理します
  • converse-sheet-item - データに応じてシートを表示するには item バインディングを使います
  • converse-dismiss - モーダルを閉じるには環境の dismiss を使います
  • converse-toolbar - ツールバー項目を適切な意味上の位置に配置します
  • converse-tab-bar - 最上位のセクション間を移動するにはタブバーを使います
  • converse-nav-bar - コンテキストが伝わるようにナビゲーションバーを設定します
  • converse-hierarchy - コードを書く前に、明確なナビゲーション階層を設計します
  • converse-search - searchable モディファイアを使って検索を組み込みます
7. デザインを声に出す:レイアウト(高)

Edson:「デザインを声に出す――レイアウトが必然に感じられるまで、何度もプロトタイプを作ります。」Kocienda:テクノロジーとリベラルアーツの交差点です。

  • layout-stacks - 手動で配置する代わりにスタックを使います
  • layout-spacer - 柔軟にスペースを配分するには Spacer を使います
  • layout-frame-sizing - 明示的なサイズ制約には frame() を使います
  • layout-zstack - 意図的にレイヤーを重ねる構成には ZStack を使います
  • layout-grid - スクロールしない、整列した表形式のコンテンツには Grid を使います
  • layout-lazy-grids - スクロール可能な複数列レイアウトには LazyVGrid を使います
  • layout-adaptive - 異なるサイズクラスにはアダプティブレイアウトを使います
  • layout-scroll-indicators - スクロール可能なコンテンツが長い場合はスクロールインジケーターを表示します
8. プロダクトが語る(中)

Edson:「プロダクトそのものがマーケティングです。」Kocienda:Steve Jobs の厳しい目に耐えられるよう、すべてのアニメーションとローディング状態を作り込みます。

  • product-transitions - 表示されるビューには意味のあるトランジションを使用します
  • product-loading-states - 終わりのないスピナーではなく、誠実なローディング状態を表示します
  • product-with-animation - 明示的な状態駆動型アニメーションには withAnimation を使用します
  • product-matched-geometry - コンテキストに沿った起点からのトランジションには matchedGeometryEffect を使用します
  • product-list-cells - 標準的なレイアウトでリストセルをデザインします
  • product-content-unavailable - 空の状態やエラー状態には ContentUnavailableView を使用します
  • product-segmented - 視認性が高く、相互排他的なオプションにはセグメントコントロールを使用します
  • product-menus - インターフェースを煩雑にせず、副次的なアクションにはメニューを使用します

使用方法

詳しい説明とコード例については、各リファレンスファイルをお読みください。

リファレンスファイル

ファイル説明
references/_sections.mdカテゴリーの定義と原則の根拠
assets/templates/_template.md新しいルールのテンプレート
metadata.jsonバージョンとリファレンス情報

コメント