ガイド
APG パターン実装例を使って、アクセシブルなコンポーネントを構築する方法を紹介します。
AI コーディングアシスタントとの連携
各パターンには AI 向けの定義ファイル({pattern}.ja.md)が含まれており、Claude、Cursor、GitHub Copilot などの AI コーディングアシスタントで類似コンポーネントを実装する際のコンテキストとして利用できます。
定義ファイルに含まれる内容
- ARIA role、property、state の要件
- キーボード操作の仕様
- フォーカス管理のルール
- 検証用のテストチェックリスト
- テストコードのサンプル
使い方
1. プロンプトにコピー&ペースト
内容をコピーして、AI にコンポーネント実装を依頼する際のプロンプトに含めます。
以下の仕様に従って Angular で Tabs コンポーネントを実装してください:
[定義ファイルの内容をここにペースト]
2. プロジェクトコンテキストに追加
Claude Code や Cursor では、定義ファイルをプロジェクトに配置することで自動的にコンテキストとして参照されます。
my-project/
├── .ai/
│ └── apg-patterns/
│ ├── tabs.md
│ ├── dialog.md
│ └── accordion.md
└── src/
3. テスト生成に活用
テストチェックリストを使って、AI に包括的なアクセシビリティテストを生成させることができます。
以下のチェックリストに基づいて Tabs コンポーネントの Jest テストを生成してください:
## Test Checklist
- [ ] ArrowRight で次のタブに移動する
- [ ] 選択中のタブは aria-selected="true" を持つ
- [ ] 選択中のタブのみ tabIndex="0" を持つ
利用可能なパターン
全 32 パターンに AI 向け定義ファイルが用意されています:
Accordion
垂直に積み重ねられたインタラクティブな見出しのセット。各見出しをクリックするとコンテンツセクションが展開されます。
Alert
ユーザーのタスクを中断せずに、重要なメッセージを目立つ形で表示する要素。
Alert Dialog
ユーザーのワークフローを中断し、重要なメッセージを伝えて応答を求めるモーダルダイアログ。
Breadcrumb
現在のページから親ページへの階層的なリンクのリスト。
Button
role="button" を持つ要素で、アクションをトリガーするウィジェット。ネイティブ <button> を推奨する理由を示します。
Toggle Button
押された状態と押されていない状態の2状態を持つボタン。aria-pressed で状態を伝えます。
Carousel
スライドと呼ばれるアイテムのセットを、1つまたは複数のスライドのサブセットを順次表示することで提示します。
Checkbox
2状態(チェック済み/未チェック)および3状態(チェック済み/未チェック/部分的にチェック)をサポートします。
Combobox
ユーザーがコレクションから値を選択できるポップアップを持つ入力ウィジェット。
Dialog (Modal)
プライマリウィンドウの上に重なるウィンドウで、背後のコンテンツを不活性にします。
Disclosure
コンテンツセクションの表示/非表示を制御するボタン。
Feed
ユーザーがスクロールすると新しいコンテンツセクションを自動的に読み込むページの領域。
Grid
ユーザーが方向キーを使用して情報やインタラクティブ要素をナビゲートできるコンテナ。
Landmarks
ページの主要なセクションを識別する8つのロールのセット。
Link
リソースへのインタラクティブな参照を提供するウィジェット。
Listbox
ユーザーが選択肢のリストから1つまたは複数のアイテムを選択できるウィジェット。
Menubar
ドロップダウンメニュー、サブメニュー、チェックボックス項目、ラジオグループを備えた水平メニューバー。アプリケーションスタイルのナビゲーションに使用します。
Menu Button
アクションやオプションのメニューを開くボタン。
Meter
定義された範囲内で変化する数値のグラフィカル表示。
Radio Group
ラジオボタンと呼ばれるチェック可能なボタンのセットで、一度に1つだけチェックできます。
Slider
指定された範囲内から値を選択する入力。
Slider (Multi-Thumb)
2つのサムを持つスライダーで、ユーザーが指定された範囲内から値の範囲を選択できます。
Spinbutton
離散値の範囲から選択するための入力ウィジェット。通常、増減ボタンを持ちます。
Switch
チェック済み/未チェックではなく、オン/オフの値を表すチェックボックスの一種。
Table
1つ以上の行を含む静的な表形式の構造で、各行は1つ以上のセルを含みます。
Tabs
タブパネルと呼ばれるコンテンツの層状セクションのセットで、一度に1つのパネルを表示します。
Toolbar
ボタン、トグルボタン、チェックボックスなどのコントロールセットをグループ化するコンテナ。
Tooltip
要素がキーボードフォーカスを受けたとき、またはマウスがホバーしたときに、要素に関連する情報を表示するポップアップ。
Tree View
折りたたみや展開が可能なネストされたグループを持つ階層的なリストを表示するウィジェット。
Treegrid
編集可能またはインタラクティブな表形式の情報で構成される階層的なデータグリッドを表示するウィジェット。
Data Grid
ソート、フィルタリング、行選択機能を備えた表形式データの表示・操作のための高度なグリッド。
Window Splitter
2つのセクションまたはペイン間の移動可能なセパレーターで、ユーザーがペインの相対サイズを変更できます。
パターン定義への直接リンク
これらの URL を直接コピーするか、AI ツールでフェッチできます:
- /ja/patterns/accordion/accordion.ja.md
- /ja/patterns/alert/alert.ja.md
- /ja/patterns/alert-dialog/alert-dialog.ja.md
- /ja/patterns/breadcrumb/breadcrumb.ja.md
- /ja/patterns/button/button.ja.md
- /ja/patterns/toggle-button/toggle-button.ja.md
- /ja/patterns/carousel/carousel.ja.md
- /ja/patterns/checkbox/checkbox.ja.md
- /ja/patterns/combobox/combobox.ja.md
- /ja/patterns/dialog/dialog.ja.md
- /ja/patterns/disclosure/disclosure.ja.md
- /ja/patterns/feed/feed.ja.md
- /ja/patterns/grid/grid.ja.md
- /ja/patterns/landmarks/landmarks.ja.md
- /ja/patterns/link/link.ja.md
- /ja/patterns/listbox/listbox.ja.md
- /ja/patterns/menubar/menubar.ja.md
- /ja/patterns/menu-button/menu-button.ja.md
- /ja/patterns/meter/meter.ja.md
- /ja/patterns/radio/radio.ja.md
- /ja/patterns/slider/slider.ja.md
- /ja/patterns/slider-multithumb/slider-multithumb.ja.md
- /ja/patterns/spinbutton/spinbutton.ja.md
- /ja/patterns/switch/switch.ja.md
- /ja/patterns/table/table.ja.md
- /ja/patterns/tabs/tabs.ja.md
- /ja/patterns/toolbar/toolbar.ja.md
- /ja/patterns/tooltip/tooltip.ja.md
- /ja/patterns/treeview/treeview.ja.md
- /ja/patterns/treegrid/treegrid.ja.md
- /ja/patterns/data-grid/data-grid.ja.md
- /ja/patterns/windowsplitter/windowsplitter.ja.md
コントリビューション
AI 向け定義ファイルの追加にご協力ください! GitHub リポジトリ からコントリビューションできます。