axiom-swiftui について
ビュー、状態、ナビゲーション、レイアウト、アニメーション、デバッグを扱う、SwiftUI 開発向けの Axiom スキルルーターです。分野別ガイドと監査エージェントにより、開発者が課題に応じた手順を選べます。
主な機能
- 01SwiftUI 開発トピックの案内
- 02ビューと状態のデバッグガイド
- 03ナビゲーション、レイアウト、アニメーションのリファレンス
- 04パフォーマンスとアーキテクチャのガイダンス
- 05専門監査エージェントの起動
活用シーン
- 01ビューが更新されない問題の診断
- 02ナビゲーションやレイアウトの問題調査
- 03スクロールや性能問題の分析
- 04SwiftUI の構成とテスト容易性の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-swiftuiインストール後、Claude Code で/axiom-swiftuiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skills/26-ref.mdanimation-ref.mdarchitecture.mdcontainers-ref.mddebugging-diag.mddebugging.mdgestures.mdhot-reload.mdiphone-duo.mdlayout-ref.mdlayout.mdnav-diag.mdnav-ref.mdnav.mdpresentations.mdpreviews-ref.mdpreviews.mdsearch-ref.mdswiftui-architecture-auditor.mdswiftui-layout-auditor.mdswiftui-nav-auditor.mdswiftui-performance-analyzer.mdswiftui-performance.mdtextkit-auditor.mdtoolbars.mdux-flow-auditor.md詳細
SwiftUI
ビュー、状態、ナビゲーション、レイアウト、アニメーション、アーキテクチャ、ジェスチャー、デバッグなど、SwiftUI に関する作業では必ずこのスキルを使用してください。
Claude Code に同梱されているツール: フックが無効、または --bare のために command -v <tool> で何も見つからない場合は、ツール名の代わりに <plugin-root>/tools/<tool> を使用してください。<plugin-root> は、このスキルの Base directory for this skill: パスの 2 つ上の階層にあります。
Axiom エージェントを起動できませんか? このルーターからエージェントに案内された場合は、その手順をその場で実行してください。MCP 経由の場合は、
axiom_get_agentがその手順を返します。それ以外の場合は、以下のファイルを読み取ってください。必要なのはファイルの検索と読み取りだけです。ここで利用可能なもの:
skills/swiftui-architecture-auditor.md、skills/swiftui-layout-auditor.md、skills/swiftui-nav-auditor.md、skills/swiftui-performance-analyzer.md、skills/textkit-auditor.md、skills/ux-flow-auditor.md。 別のスイートにあるもの:axiom-design/skills/liquid-glass-auditor.md。その他のエージェントも、MCP 経由であれば
axiom_get_agentから手順を取得できます。そのエージェントの xclog、xcsym、xcprof の各手順を、axiom_xclog_*、axiom_xcsym_*、axiom_xcprof_*ツールで実行してください。それ以外の場合は、Axiom のスキル内でskills/<agent>.mdを検索してください。見つからなければ、このスイートのスキルを使い、PATH上の Axiom ツールを利用して、自分で作業を行ってください。
クイックリファレンス
| 症状/タスク | 参照先 |
|---|---|
| ビューが更新されない | skills/debugging.md を参照してください |
| デバッグ後もビューの更新が直らない | skills/debugging-diag.md を参照してください |
プレビューが遅い/質の高いプレビューを作る/@Previewable/PreviewModifier/バリアントの組み合わせ | skills/previews.md を参照してください |
プレビュー API リファレンス(#Preview、トレイト、モード、Development Assets) | skills/previews-ref.md を参照してください |
| プレビューがクラッシュする/読み込まれない | skills/debugging.md(Preview Crashes セクション)を参照してください |
| ホットリロード/ライブ編集/デバイス上で実行中のアプリを編集する | skills/hot-reload.md を参照してください |
| ナビゲーションの問題 | skills/nav.md を参照してください |
| デバッグ後もナビゲーションが直らない | skills/nav-diag.md を参照してください |
| ナビゲーション API リファレンス | skills/nav-ref.md を参照してください |
| iPad/回転時にレイアウトが崩れる | skills/layout.md を参照してください |
| サイズ変更/回転で状態が失われる(スクロール、選択、フォーカス、下書き) | skills/layout.md(State Survives the Transition)を参照してください |
| レイアウト API リファレンス | skills/layout-ref.md を参照してください |
| パフォーマンス/遅延/スクロールが遅い | skills/swiftui-performance.md を参照してください |
| アーキテクチャ/テスト容易性 | skills/architecture.md を参照してください |
ビューの初期化のたびに @State オブジェクトが再生成される、または init での代入が実行時に無視される | skills/architecture.md(@State は現在マクロです)を参照してください |
| アニメーションの問題 | skills/animation-ref.md を参照してください |
| スタック/グリッド/アウトライン | skills/containers-ref.md を参照してください |
| カスタムコンテナ/List の置き換え(iOS 18 以降) | skills/containers-ref.md の Part 7 を参照してください |
| 検索の実装 | skills/search-ref.md を参照してください |
| ツールバー、ToolbarItem、シートボタンの配置、カスタマイズ | skills/toolbars.md を参照してください |
ナビゲーションのサブタイトル:navigationSubtitle、.title/.subtitle/.largeTitle/.largeSubtitle の配置(iOS 26) | skills/toolbars.md(Pattern 14)を参照してください |
| シート、デテント、ポップオーバー、fullScreenCover、プレゼンテーションの適応 | skills/presentations.md を参照してください |
| 複数列の Table、並べ替え/サイズ変更可能な列(iPad/Mac。コンパクト幅では先頭列に折りたたまれます) | axiom-macos(skills/swiftui-differences.md)を参照してください |
インスペクターパネル(.inspector — レギュラー幅では末尾列、コンパクト幅ではシート) | axiom-macos(skills/swiftui-differences.md)を参照してください |
| ジェスチャーの競合 | skills/gestures.md を参照してください |
| セクションインデックス — リストの末尾に表示される縦型の A–Z インデックス/アルファベットスクラバー、セクションへのジャンプ | skills/26-ref.md(Section Index)を参照してください |
リストのセクションマージン/Section の周囲のインセット | skills/26-ref.md(Section Margins)を参照してください |
Web コンテンツ — WebView/WebPage、スクロール修飾子、NavigationStack 内の WebView | skills/26-ref.md(WebView & WebPage)を参照してください |
| iPhone Duo/折りたたみ式 iPhone:ポーズ、縦のバー、折り目、配置、ヒンジ、シーンアクセサリ(SwiftUI と UIKit) | skills/iphone-duo.md を参照してください |
| iOS 26 の機能 | skills/26-ref.md を参照してください |
SwiftUI 以外の UI の参照先
これらのトピックは iOS UI 全般に含まれますが、別のスイートにあります。
UIKit の問題
- Auto Layout の競合 → axiom-uikit(skills/auto-layout-debugging.md)を参照してください
- アニメーションのタイミング → axiom-uikit(skills/uikit-animation-debugging.md)を参照してください
- SwiftUI ↔ UIKit のブリッジング → axiom-uikit(skills/uikit-bridging.md)を参照してください
デザインとガイドライン
- Liquid Glass の採用 → axiom-design(skills/liquid-glass.md)を参照してください
- SF Symbols → axiom-design(skills/sf-symbols.md)を参照してください
- HIG への準拠 → axiom-design(skills/hig.md)を参照してください
- タイポグラフィ → axiom-design(skills/typography-ref.md)を参照してください
- TextKit/リッチテキスト → axiom-uikit(skills/textkit-ref.md)を参照してください
その他
- tvOS(フォーカス、リモコン、テキスト入力)→ axiom-swift(skills/tvos.md)を参照してください
- アプリレベルの構成(ルート、認証、シーン)→ axiom-design(skills/app-composition.md)を参照してください
- ドラッグ&ドロップ、共有、コピー/ペースト → axiom-swift(skills/transferable-ref.md)を参照してください
- VoiceOver、Dynamic Type →
/skill axiom-accessibility - UI テストの不安定さ →
/skill axiom-testing - UX の行き止まり、閉じられない画面 →
ux-flow-auditorエージェントを起動してください
watchOS 固有のパターン
- ひと目で確認できる UI、ウォッチのナビゲーション、Smart Stack ウィジェット → axiom-watchos を参照してください
競合の解決
axiom-swiftui と axiom-performance:UI の動作が遅い場合(例:「SwiftUI List slow」):
- まず axiom-swiftui を試してください — ドメイン固有の修正(LazyVStack、ビューの ID、@State の最適化)で、5 分以内に UI パフォーマンスの問題が解決することがよくあります
- ドメイン固有の修正で改善しない場合に限り、axiom-performance を使用してください — プロファイリングには時間がかかり、ドメインの知識ですでに分かっていることを確認するだけになる場合があります
判断ツリー
digraph swiftui {
start [label="SwiftUI issue" shape=ellipse];
what [label="What's wrong?" shape=diamond];
start -> what;
what -> "skills/debugging.md" [label="view not updating"];
what -> "skills/nav.md" [label="navigation"];
what -> "skills/swiftui-performance.md" [label="slow/lag"];
what -> "skills/layout.md" [label="adaptive layout"];
what -> "skills/containers-ref.md" [label="stacks/grids/outlines"];
what -> "skills/architecture.md" [label="feature architecture"];
what -> "skills/animation-ref.md" [label="animations"];
what -> "skills/gestures.md" [label="gestures"];
what -> "skills/search-ref.md" [label="search"];
what -> "skills/toolbars.md" [label="toolbars / sheet buttons"];
what -> "skills/presentations.md" [label="sheets/detents/popovers"];
what -> "skills/26-ref.md" [label="iOS 26 features"];
what -> "skills/iphone-duo.md" [label="iPhone Duo / foldable"];
what -> "skills/previews.md" [label="slow previews / building good previews"];
what -> "skills/previews-ref.md" [label="preview API reference"];
what -> "skills/debugging.md" [label="preview crashes / won't load"];
what -> "skills/hot-reload.md" [label="hot reload / live editing"];
what -> "axiom-macos (skills/swiftui-differences.md)" [label="Table / .inspector\n(large-window density)"];
what -> "axiom-uikit (skills/uikit-bridging.md)" [label="UIKit interop"];
what -> "axiom-design (skills/app-composition.md)" [label="app-level (root, auth)"];
what -> "axiom-swift (skills/transferable-ref.md)" [label="drag/drop, sharing"];
}
自動スキャン
- アーキテクチャ監査 →
swiftui-architecture-auditorエージェントを起動 - パフォーマンススキャン →
swiftui-performance-analyzerエージェントまたは/axiom:audit swiftui-performanceを実行 - ナビゲーション監査 →
swiftui-nav-auditorエージェントまたは/axiom:audit swiftui-navを実行 - レイアウト監査 →
swiftui-layout-auditorエージェントまたは/axiom:audit swiftui-layoutを実行 - UX フロー監査 →
ux-flow-auditorエージェントまたは/axiom:audit ux-flowを実行 - Liquid Glass スキャン →
liquid-glass-auditorエージェントまたは/axiom:audit liquid-glassを実行(移行の機会と導入の不完全な箇所の両方を検出します:メディアサーフェスのバリアント適用方針、ガラスの重ね合わせ、スタイル未設定の pre-26 フォールバック、セマンティックなツールバーの配置、Tab(role: .search)、UIDesignRequiresCompatibilityによるオプトアウトを確認し、ADOPTED/PARTIAL/NOT ADOPTED で評価します) - TextKit スキャン →
textkit-auditorエージェントまたは/axiom:audit textkitを実行(フォールバックの発生条件、複雑なスクリプトを破損させるグリフ API、Writing Tools の接続漏れに加え、フォールバックの監視漏れ、TextKit 2 のプロパティを引き継がない SwiftUI ラッパー、isWritingToolsActiveのガード不足など、アーキテクチャ上の問題も検出し、MODERN/MIXED/LEGACY で評価します)
正当化を避ける
| 考え | 実際 |
|---|---|
| 「シンプルなSwiftUIのレイアウトだから、必要ありません」 | SwiftUIのレイアウトには12個の落とし穴があります。skills/layout.mdですべて解説しています。 |
| 「NavigationStackの仕組みは分かっています」 | ナビゲーションには、状態の復元、ディープリンク、識別性に関する落とし穴があります。skills/nav.mdを読めば、2時間に及ぶデバッグを防げます。 |
| 「ビューが更新されないだけです」 | ビューの更新に失敗する原因は4つあります。skills/debugging.mdなら5分で原因を特定できます。 |
| 「とりあえず.animation()を追加します」 | アニメーションの問題は積み重なります。skills/animation-ref.mdに正しいパターンをまとめています。 |
| 「アーキテクチャは必要ありません」 | 小さな機能でも、分離するメリットがあります。skills/architecture.mdでリファクタリングの負債を防げます。 |
| 「.searchableのことは分かっています」 | 検索には6つの落とし穴があります。skills/search-ref.mdですべて解説しています。 |
| 「とりあえずDoneボタンを追加します」 | キャンセルのないシートはHIGに違反します(2026-03-24更新)。.cancellationAction/.confirmationActionを使うと、HIGに準拠した位置に自動的に配置されます。ルールはskills/toolbars.mdのパターン2を参照してください。 |
| 「シートはどれも同じなので、設定は必要ありません」 | デテント、コンパクト時の適応、背景とのインタラクション、iOS 18のサイズ設定によって、さまざまなウィンドウ形状での動作が決まります。skills/presentations.mdでは適応に関する落とし穴を解説しています(横向きのシートが気づかないうちにフルスクリーンカバーになります)。 |
| 「プレビューはずっと遅いので、シミュレーターを使います」 | skills/previews.mdには具体的な対策が5つあります。ルール4(自動更新をオフにする)は30秒で設定でき、体感速度が半分になることもよくあります。 |
「Xcode 27では@Stateが遅延評価されるとリリースノートで読みました」 | そのプロパティがprivate/fileprivateで、かつデプロイメントターゲットがiOS 17以降の場合に限られます。17未満では、privateの場合も従来どおり即時評価される動作がそのまま維持されます。skills/architecture.mdでは、適用条件、TN3211で示された3つの破綻ケース、コンパイルは通るものの実行時に誤動作するケースを解説しています。 |
「このプレビュー用に@Stateをラップするビューを書きます」 | @Previewable @State(Xcode 16以降)を使えば、その定型コードは不要です。マクロのシグネチャはskills/previews-ref.mdを参照してください。 |
| 「毎回ビルドし直して再起動します」 | ホットリロードを使うと、状態を保ったまま、実行中のアプリをその場で編集できます。skills/hot-reload.mdでは、InjectionNextとInjectのセットアップ、およびxclogで確認する手順を解説しています。 |
| 「Duoは大きくなっただけのiPhoneです。レイアウトはすでにサイズ変更に対応しています」 | バーは側面に移動し、折り目で画面が分割され、外側のディスプレイではウィンドウを開けません。skills/iphone-duo.mdでは、単なるサイズ変更では見落とす点を解説しています。 |