ios-storyboard について
ios-storyboardは、既存のクリニックプロジェクトでStoryboardベースのiOS画面を保守するためのスキルです。新しいSwiftUI機能向けではなく、Interface Builderでのレイアウト、ナビゲーション、適応性、アクセシビリティ、共同作業を扱います。
主な機能
- 01Storyboardシーンの構成
- 02Auto Layout制約の指針
- 03Segueとナビゲーションのパターン
- 04サイズクラスに応じたレイアウト
- 05アクセシビリティとVoiceOverの規則
- 06Storyboardのレビューとデバッグ
活用シーン
- 01Interface Builderでのシーン変更
- 02適応レイアウトと制約のレビュー
- 03Storyboard差分やマージ競合の解決
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill ios-storyboardインストール後、Claude Code で/ios-storyboardを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdadapt-dynamic-type.mdadapt-readable-content-guide.mdadapt-safe-area-all-devices.mdadapt-size-classes.mdadapt-trait-variations.mdally-dynamic-labels.mdally-grouping.mdally-identifiers.mdally-labels.mdally-traits.mdarch-avoid-hardcoded-identifiers.mdarch-initial-view-controller.mdarch-modular-xibs.mdarch-one-scene-per-flow.mdarch-scene-naming.mdarch-split-storyboards.mdarch-storyboard-references.mddebug-ambiguous-layout.mddebug-constraint-identifier.mddebug-stale-outlets.mddebug-view-hierarchy.mdlayout-avoid-constant-offsets.mdlayout-avoid-fixed-dimensions.mdlayout-constraint-nearest-neighbor.mdlayout-constraint-priorities.mdlayout-content-hugging.mdlayout-inequality-constraints.md詳細
iOS Storyboard のベストプラクティス
クリニックのプロジェクトに現在も残っている、Storyboard を多用したコードのためのレガシー相互運用ガイダンスです。新しい SwiftUI のクリニック機能開発向けではありません。
Xcode Storyboard と Interface Builder を対象に、保守性、適応性、アクセシビリティに優れた iOS インターフェースの構築に焦点を当てた、包括的な UI デザインおよびアーキテクチャガイドです。8 つのカテゴリにわたる 45 のルールを含み、自動リファクタリングとコード生成の指針となるよう、影響度の高い順に優先順位を付けています。
クリニックのアーキテクチャ契約(iOS 26 / Swift 6.2)
このスキルのすべてのガイダンスは、クリニックのモジュール型 MVVM-C アーキテクチャを前提としています。
- 機能モジュールがインポートするのは
DomainとDesignSystemのみです(Dataや兄弟機能はインポートしません) - App ターゲットが集約点となり、
DependencyContainer、具象コーディネーター、Route Shell の配線を所有します Domainは純粋な Swift を保ち、モデルに加え、リポジトリ、*Coordinating、ErrorRouting、AppErrorの各契約を定義しますDataは SwiftData/ネットワーク/同期/再試行/バックグラウンド I/O を所有し、Domain のプロトコルを実装します- 読み取り/書き込みフローのデフォルトは、stale-while-revalidate 方式の読み取りと、楽観的なキューイング書き込みです
- ViewModel はリポジトリのプロトコルを直接呼び出します(デフォルトのユースケース/インタラクター層はありません)
適用する場面
以下の場合に、これらのガイドラインを参照してください。
- Xcode Interface Builder で Storyboard のシーンを作成または変更する
- 適応型レイアウト用に Auto Layout の制約を設定する
- segue と storyboard reference を使ってナビゲーションフローを設計する
- ユニバーサルアプリ向けにサイズクラスと trait のバリエーションを設定する
- Storyboard の XML 差分をレビューし、マージの競合を解決する
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | Storyboard アーキテクチャ | CRITICAL | arch- |
| 2 | Auto Layout 制約 | CRITICAL | layout- |
| 3 | ナビゲーションと segue | HIGH | nav- |
| 4 | 適応型レイアウトとサイズクラス | HIGH | adapt- |
| 5 | ビュー階層と Stack View | MEDIUM-HIGH | view- |
| 6 | アクセシビリティと VoiceOver | MEDIUM | ally- |
| 7 | バージョン管理とコラボレーション | MEDIUM | vcs- |
| 8 | デバッグとインスペクション | LOW-MEDIUM | debug- |
クイックリファレンス
1. Storyboard アーキテクチャ(CRITICAL)
arch-split-storyboards- モノリシックな Storyboard を機能モジュールに分割するarch-storyboard-references- モジュール間のナビゲーションに Storyboard Reference を使用するarch-one-scene-per-flow- 各 Storyboard を単一のユーザーフローに限定するarch-initial-view-controller- すべての Storyboard で初期 View Controller を明示的に設定するarch-avoid-hardcoded-identifiers- Storyboard とセルの識別子をハードコードしないarch-scene-naming- Document Outline で説明的なシーンラベルを使用するarch-modular-xibs- 再利用可能なビューを個別の XIB ファイルに切り出す
2. 自動レイアウトの制約(重大)
layout-avoid-fixed-dimensions- 固定幅と固定高さの制約を避けるlayout-leading-trailing- 左と右ではなく、先頭と末尾を使用するlayout-safe-area- ビューをセーフエリアガイドに制約するlayout-content-hugging- コンテンツの抱き込みと圧縮抵抗の優先度を設定するlayout-constraint-nearest-neighbor- 最も近い隣接ビューに制約するlayout-avoid-constant-offsets- 固定オフセットではなく、レイアウトマージンを使用するlayout-inequality-constraints- 柔軟な最小値と最大値には不等式制約を使用するlayout-constraint-priorities- オプションの制約には異なる優先度を割り当てる
3. ナビゲーションとセグエ(高)
nav-prepare-for-segue- プロパティに直接アクセスするのではなく、prepare(for:sender:)を介してデータを渡すnav-unwind-segues- 戻る操作にはアンワインドセグエを使用するnav-avoid-mixed-navigation- セグエとプログラムによるナビゲーションの併用を避けるnav-adaptive-segues- PushとModalではなく、ShowとShow Detailを使用するnav-perform-segue-validation- shouldPerformSegueでセグエの条件を検証するnav-container-view-controllers- 埋め込みの子ビューコントローラーにはコンテナビューを使用する
4. アダプティブレイアウトとサイズクラス(高)
adapt-size-classes- Vary for Traitsを使用して、サイズクラスごとに制約を設定するadapt-trait-variations- フォントや間隔の調整にはTrait Variationsを使用するadapt-safe-area-all-devices- すべてのデバイスのサイズクラスでアダプティブレイアウトをテストするadapt-readable-content-guide- 大画面のテキストにはReadable Content Guideを使用するadapt-dynamic-type- すべてのテキストラベルでDynamic Typeをサポートする
5. ビュー階層とスタックビュー(中〜高)
view-prefer-stack-views- 線形レイアウトでは、手動の制約ではなくスタックビューを使用するview-avoid-deep-nesting- スタックビューを2階層を超えて深くネストしないview-intrinsic-content-size- 標準のUIKitコントロールでは固有のコンテンツサイズを利用するview-placeholder-intrinsic-size- Storyboardのカスタムビューにはプレースホルダーの固有サイズを使用するview-clip-to-bounds- 角丸のあるビューでは、Clip to Boundsを有効にするview-content-mode- StoryboardのUIImageViewに適切なコンテンツモードを設定する
6. アクセシビリティとVoiceOver(中)
ally-labels- すべてのインタラクティブ要素にアクセシビリティラベルを設定するally-traits- Interface Builderで適切なアクセシビリティ特性を割り当てるally-grouping- VoiceOverのナビゲーション向けに関連する要素をグループ化するally-identifiers- UIテスト用のアクセシビリティ識別子を設定するally-dynamic-labels- 動的コンテンツに合わせてアクセシビリティラベルを更新する
7. バージョン管理とコラボレーション(中)
vcs-one-scene-per-developer- ストーリーボードのシーンを各開発者に割り当てるvcs-open-as-source- コミット前にストーリーボードの差分をソースコードとして確認するvcs-lock-storyboard-files- ストーリーボードを編集中は Git のファイルロックを使用するvcs-gitattributes-merge- ストーリーボードにユニオンマージを使用するよう .gitattributes を設定する
8. デバッグと検査(低〜中)
debug-view-hierarchy- デバッグビュー階層を使用してレイアウトの問題を検査するdebug-ambiguous-layout- hasAmbiguousLayout を使用して実行時に制約の問題を検出するdebug-constraint-identifier- 制約に識別子を割り当て、ログを読みやすくするdebug-stale-outlets- 古い Outlet 接続を削除してクラッシュを防ぐ
使用方法
詳しい説明やコード例については、各リファレンスファイルをお読みください。
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応