axiom-accessibility について
axiom-accessibilityは、Appleアプリのアクセシビリティとユーザーフローを監査するためのルーティングスキルです。VoiceOver、Dynamic Type、コントラスト、UX上の行き止まりなどに応じた資料と監査手順を案内します。
主な機能
- 01VoiceOverとDynamic Typeのガイド
- 02コントラスト、タッチ領域、WCAGの確認
- 03UXの行き止まりや不足状態の診断案内
- 04アクセシビリティとUXの監査手順
- 05watchOS固有のアクセシビリティ資料
活用シーン
- 01VoiceOverラベルの不足を診断する
- 02Dynamic Typeや色のコントラストを確認する
- 03閉じられない画面や不足するエラー状態を見つける
- 04watchOSのアクセシビリティ動作を確認する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-accessibilityインストール後、Claude Code で/axiom-accessibilityを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skills/accessibility-auditor.mdaccessibility-diag.mdux-flow-audit.mdwatchos-a11y.md詳細
アクセシビリティ
VoiceOver、Dynamic Type、色のコントラスト、WCAG 準拠、UX フローの監査など、アクセシビリティに関する作業では必ずこのスキルを使用してください。
Axiom エージェントを起動できませんか? このルーターからエージェントに案内された場合は、その手順をここで直接実行してください。MCP 経由では、
axiom_get_agentがそのエージェントを返します。それ以外の場合は、以下のファイルを読み込んでください。必要なのはファイルの検索と読み取りだけです。ここで利用可能:
skills/accessibility-auditor.md。 別のスイートに配置:axiom-concurrency/skills/concurrency-auditor.md、axiom-data/skills/swiftdata-auditor.md、axiom-swiftui/skills/swiftui-nav-auditor.md、axiom-swiftui/skills/ux-flow-auditor.md。ほかのエージェントについても、MCP 経由では
axiom_get_agentが取得できます。そのエージェントの xclog、xcsym、xcprof の手順を、axiom_xclog_*、axiom_xcsym_*、axiom_xcprof_*ツールで実行してください。それ以外の場合は、Axiom のスキルからskills/<agent>.mdを検索してください。見つからない場合は、このスイートのスキルと、PATH上にある Axiom ツールを使って、自分で作業してください。
クイックリファレンス
| 症状/タスク | 参照先 |
|---|---|
| VoiceOver のラベル、ヒント、ナビゲーション | skills/accessibility-diag.md を参照 |
| Dynamic Type の拡大に関する違反 | skills/accessibility-diag.md を参照 |
| tvOS での Dynamic Type(大きな文字、tvOS 27) | skills/accessibility-diag.md を参照 |
| 長文読書アプリ(連続読み上げ、画面の読み上げ、テキストナビゲーション) | skills/accessibility-diag.md を参照 |
| ビデオプレーヤーの字幕スタイル(自動生成字幕、スタイルのプレビュー) | skills/accessibility-diag.md を参照 |
| カスタムコントロールの手法の選択(調整可能、パススルー、ダイレクトタッチ) | skills/accessibility-diag.md を参照 |
| アクセシビリティ栄養表示ラベル | skills/accessibility-diag.md を参照 |
| 色のコントラスト(WCAG AA/AAA) | skills/accessibility-diag.md を参照 |
| タッチターゲットのサイズ(< 44x44pt) | skills/accessibility-diag.md を参照 |
| キーボードナビゲーション(iPadOS/macOS) | skills/accessibility-diag.md を参照 |
| ボタンの形状、大きなコンテンツビューア、フルキーボードアクセス、スイッチコントロール | skills/accessibility-diag.md を参照 |
| サイズ変更/列の折りたたみ後に VoiceOver の読み上げ順序が崩れる問題、テーブルとグリッドのセマンティクス | skills/accessibility-diag.md を参照 |
| 視差効果を減らす設定への対応 | skills/accessibility-diag.md を参照 |
| Assistive Access(認知面、iOS 17 以降) | skills/accessibility-diag.md を参照 |
| Accessibility Inspector のワークフロー | skills/accessibility-diag.md を参照 |
| UX の行き止まり、閉じる操作の罠 | skills/ux-flow-audit.md を参照 |
| 見つけにくい CTA、空の状態の欠落 | skills/ux-flow-audit.md を参照 |
| 読み込み/エラー状態の欠落 | skills/ux-flow-audit.md を参照 |
| ディープリンクの行き止まり | skills/ux-flow-audit.md を参照 |
| アクセシビリティ上の行き止まり(ジェスチャーのみ) | skills/ux-flow-audit.md を参照 |
| watchOS 固有(Digital Crown の VoiceOver ローター、AssistiveTouch、ダブルタップ) | skills/watchos-a11y.md を参照 |
スイート間のルート
- watchOS 開発の完全なコンテキスト → axiom-watchos を参照
- シミュレーターでのアクセシビリティのライブ検証(切り替えを設定し、読み上げを確認) →
simulator-testerエージェント +xcui— axiom-tools のskills/xcui-ref.mdを参照 - XCUITest での VoiceOver の読み上げ確認(
XCUIDevice.shared.voiceOverService、OS27) → axiom-testing のskills/ui-testing.mdパターン 7
判断ツリー
digraph accessibility {
start [label="Accessibility issue" shape=ellipse];
what [label="What type?" shape=diamond];
start -> what;
what -> "skills/accessibility-diag.md" [label="VoiceOver/labels/hints"];
what -> "skills/accessibility-diag.md" [label="Dynamic Type"];
what -> "skills/accessibility-diag.md" [label="color contrast"];
what -> "skills/accessibility-diag.md" [label="touch targets"];
what -> "skills/accessibility-diag.md" [label="keyboard nav"];
what -> "skills/accessibility-diag.md" [label="resizable window / desktop-class"];
what -> "skills/accessibility-diag.md" [label="Reduce Motion"];
what -> "skills/accessibility-diag.md" [label="Assistive Access"];
what -> "skills/accessibility-diag.md" [label="custom control techniques"];
what -> "skills/accessibility-diag.md" [label="continuous reading / text navigation"];
what -> "skills/accessibility-diag.md" [label="captions / subtitle styling"];
what -> "skills/accessibility-diag.md" [label="App Store prep / Nutrition Labels"];
what -> "skills/ux-flow-audit.md" [label="UX dead end/dismiss trap"];
what -> "skills/ux-flow-audit.md" [label="missing states"];
what -> "skills/watchos-a11y.md" [label="watchOS VoiceOver / AssistiveTouch / Double Tap"];
what -> "accessibility-auditor" [label="automated scan" shape=box];
}
- VoiceOver、Dynamic Type(tvOS の大きな文字を含む)、コントラスト、タッチターゲット、WCAG に関する問題 →
skills/accessibility-diag.md - Assistive Access(認知障害、iOS 17 以降) →
skills/accessibility-diag.md - アクセシビリティ栄養表示ラベル、またはアクセシビリティに関する App Review の指摘 →
skills/accessibility-diag.md - 読書アプリ:VoiceOver が段落/ページで停止する、画面の読み上げが途中で止まる →
skills/accessibility-diag.md - UX の行き止まり、閉じる操作の罠、見つけにくい CTA、状態の欠落 →
skills/ux-flow-audit.md - watchOS 固有のアクセシビリティ(Digital Crown のローター、AssistiveTouch、ダブルタップ) →
skills/watchos-a11y.md - アクセシビリティの自動スキャンを実行したい →
accessibility-auditorエージェント、または/axiom:audit accessibility
自動スキャン
アクセシビリティ監査 → accessibility-auditor エージェントを起動するか、/axiom:audit accessibility を実行します
- VoiceOver のラベルとヒント
- Dynamic Type の違反
- 色のコントラストの不備
- WCAG 準拠のスキャン
UX フロー監査 → ux-flow-auditor エージェントを起動します
- 行き止まりになるビュー、閉じる操作ができない状態
- 見つけにくい CTA、空状態/読み込み状態/エラー状態の欠落
- ディープリンクの行き止まり、アクセシビリティ上の行き止まり
重要なパターン
画像のアクセシビリティ
- 純粋に装飾目的の画像には
Image(decorative: "photo")を使用します。VoiceOver から自動的に隠されます(accessibilityHidden(true)と同等ですが、意味がより明確です)。 - 複雑なラベルや変化するラベルを持つボタンには
accessibilityInputLabels()を使用します。代替ラベルを指定することで、音声コントロールの精度が向上します。 accessibilityDifferentiateWithoutColor環境値を尊重します。有効な場合は、色による表示に加えて、色以外の手がかり(アイコン、パターン、ラベル)を提示します。
正当化を避ける
| 考え | 実際 |
|---|---|
| 「実装が終わってから VoiceOver のラベルを追加します」 | アクセシビリティは仕上げではなく、基盤です。完成したアプリに後からラベルを追加するには、はるかに時間がかかります。また、追加が完了するまでは VoiceOver に対応しているとは言えません。 |
| 「私のアプリにアクセシビリティは必要ありません」 | すべてのアプリにアクセシビリティが必要です。App Store の規則ではありませんが、VoiceOver や文字をさらに大きくする機能を頼りにする人は、対応がなければアプリを使えません。また、ダウンロード前にアクセシビリティの栄養ラベルでその状況が示されます。 |
「Dynamic Type には .scaledFont だけで十分です」 | Dynamic Type にはよくある違反が7種類あります。accessibility-diag ですべて検出できます。 |
| 「色のコントラストは問題なさそうです」 | 見た目だけでの判断は信頼できません。WCAG の比率は測定が必要です。accessibility-diag で検証できます。 |
| 「UX の問題は仕上げにすぎません」 | UX の行き止まりは星1つのレビューにつながります。改善項目ではなく、不具合です。 |
| 「閉じるジェスチャで対応できます」 | fullScreenCover には閉じるジェスチャがありません。それが落とし穴です。 |
呼び出し例
ユーザー:「ボタンが VoiceOver に読み上げられません」
→ skills/accessibility-diag.md を参照
ユーザー:「Dynamic Type に対応するにはどうすればよいですか?」
→ skills/accessibility-diag.md を参照
ユーザー:「アプリにアクセシビリティ上の問題がないか確認してください」
→ skills/accessibility-diag.md を参照
ユーザー:「App Store のアクセシビリティ審査に備えてください」
→ skills/accessibility-diag.md を参照
ユーザー:「アプリのアクセシビリティ上の問題を自動でスキャンしてください」
→ accessibility-auditor エージェントを起動
ユーザー:「Assistive Access に対応するにはどうすればよいですか?」
→ skills/accessibility-diag.md を参照
ユーザー:「tvOS アプリを大きな文字に対応させるにはどうすればよいですか?」
→ skills/accessibility-diag.md を参照
ユーザー:「ウィンドウのサイズ変更後、VoiceOver が画面を誤った順序で読み上げます」
→ skills/accessibility-diag.md を参照
ユーザー:「カスタムコントロールでボタンの形状や大きなコンテンツビューアに対応するにはどうすればよいですか?」
→ skills/accessibility-diag.md を参照
ユーザー:「書籍アプリで、各ページの最後まで読むと VoiceOver の読み上げが止まります」
→ skills/accessibility-diag.md を参照
ユーザー:「動画プレーヤーで、字幕のスタイルをユーザーが変更したり、自動生成キャプションを取得したりできるようにするにはどうすればよいですか?」
→ skills/accessibility-diag.md を参照
ユーザー:「UX の行き止まりや、閉じる操作ができない状態がないか確認してください」
→ skills/ux-flow-audit.md を参照
ユーザー:「fullScreenCover を閉じる方法がありません」
→ skills/ux-flow-audit.md を参照
ユーザー:「アプリに空状態が欠けていませんか?」
→ skills/ux-flow-audit.md を参照