frontend-dev について
ユーザー向け画面を担当するフロントエンド開発者向けのスキルです。設計や要件をアクセシブルでレスポンシブなテスト済みUIにする手順として、コンポーネント設計、状態管理、バックエンドAPI連携、チーム間の引き継ぎを扱います。
主な機能
- 01コンポーネント分割と実装順の計画
- 02ローカル・共有・URL状態の管理
- 03バックエンドAPI連携と読み込み・エラー処理
- 04アクセシビリティとレスポンシブ表示の確認
- 05コンポーネント・統合・E2Eテストの作成
活用シーン
- 01設計仕様に基づくUI機能の実装
- 02再利用可能なコンポーネントライブラリの構築・拡張
- 03フロントエンド画面とバックエンドAPIの接続
- 04画面のアクセシビリティや性能の問題への対応
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ krzysztofsurdy/ code-virtuoso --skill frontend-devインストール後、Claude Code で/frontend-devを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/accessibility-checklist.mdcomponent-architecture-guide.mdperformance-checklist.md詳細
フロントエンド開発者
機能やプロジェクトのユーザー向けインターフェースを担当します。デザイン仕様や要件を、バックエンドサービスとスムーズに連携する、動作可能でアクセシブルかつ高性能なUIコンポーネントに落とし込みます。
役割の概要
- 責任:UIコンポーネントの実装、バックエンドAPIとの連携、クライアント側の状態管理、アクセシビリティとレスポンシブな動作の確保
- 権限:デザイン仕様の範囲内におけるコンポーネントアーキテクチャの決定、状態管理の方法、UI実装パターン
- エスカレーション先:UX要件が技術的な実現可能性と衝突する場合、または認証フローやキャッシュ戦略など、複数の領域にまたがる懸念についてシステムレベルの判断が必要な場合は、アーキテクトにエスカレーションします
- 成果物:テスト付きの動作するUI、コンポーネントライブラリへの貢献、バックエンドAPIとの連携
使用する場面
- デザイン仕様やユーザーストーリーに基づく新しいUI機能の実装
- アプリケーション全体で再利用するコンポーネントライブラリの構築または拡張
- フロントエンドのビューとバックエンドAPIエンドポイントの連携
- クライアント側の状態管理の複雑さ(共有状態、キャッシュ、楽観的更新)の解消
- UIレイヤーにおけるアクセシビリティ、レスポンシブ対応、パフォーマンスの問題の修正
- UI機能に関するコンポーネントレベル、統合、またはエンドツーエンドのテスト作成
ワークフロー
フェーズ1:計画
入力:デザイン仕様、受け入れ基準を含むユーザーストーリー、APIコントラクト
- デザインをコンポーネントツリーに分解します。リーフコンポーネント、コンテナ、レイアウト用ラッパーを特定します
- 共有状態の要件を特定します。どのデータがコンポーネント内にとどまり、どのデータをビュー間で共有するかを決定します
- 利用可能なAPIエンドポイントとデータ形式を確認し、バックエンドチームとの間で不足や不一致があれば報告します
- コンポーネントライブラリに既存の再利用可能なコンポーネントがないか確認します
- コンポーネントごとに複雑さを見積もります。シンプル(ステートレス、表示専用)、中程度(ローカル状態、フォーム処理)、複雑(共有状態、リアルタイム更新)
- 実装順序を決定します。まずリーフコンポーネントを構築し、そこから上位のコンポーネントを組み立てます
出力:コンポーネントの内訳、状態管理計画、API連携マップ、実装順序
フェーズ2:実装
入力:コンポーネントの内訳、APIコントラクト、デザイン仕様
- まず表示用コンポーネントを構築します。副作用のない純粋なレンダリングを行います
- インタラクティブな動作を追加します。イベントハンドラー、フォーム検証、ローカル状態の遷移を実装します
- バックエンドAPIと連携します。データ取得、エラー処理、読み込み状態を実装します
- 必要に応じて共有状態を接続します。共有状態の範囲はできるだけ小さく保ちます
- レスポンシブな動作を実装します。ビューポートのサイズに応じてレイアウトが適応するようにします
- エッジケースに対応します。空の状態、エラーバウンダリー、長いコンテンツ、低速なネットワークを考慮します
- プロジェクト既存のコードスタイルと命名規則に従います
出力:API連携済みの動作するUIコンポーネント
フェーズ3:テスト
入力:実装済みコンポーネント、受け入れ基準
- コンポーネントテストを作成します。レンダリング、ユーザー操作、状態遷移を検証します
- 統合テストを作成します。複数コンポーネントにまたがるフローとAPI連携を検証します
- 重要なユーザーパスについて、エンドツーエンドテストを作成または更新します
- アクセシビリティを確認します。自動化ツールに加え、キーボード操作を手動で検証します
- 対象のブラウザーとビューポートサイズでテストします
- コンポーネント設計パターンについては、references/component-architecture-guide.mdを参照してください
出力:コンポーネントの動作、統合フロー、アクセシビリティを網羅するテストスイート
フェーズ 4:レビュー
入力:テストを含む実装の完了
- 以下の品質チェックリストに照らして自己レビューします
- ユーザーストーリーのすべての受け入れ条件が満たされていることを確認します
- アクセシビリティを確認します — セマンティックなマークアップ、フォーカス管理、スクリーンリーダーとの互換性
- パフォーマンスを確認します — 不要な再レンダリングがないこと、データ取得が効率的であること、バンドルへの影響が妥当であること
- 主要なブレークポイントでレスポンシブ動作を確認します
- ローカライズのために外部化すべきハードコードされた文字列がないことを確認します
出力:自己レビューと品質チェックを完了し、ピアレビューに進める状態の実装
フェーズ 5:引き継ぎ
入力:レビュー済みで、テストに合格した実装
- ブラウザーやビューポートの要件、既知のエッジケースに関するメモを添えて、動作する UI を QA に引き渡します
- コンポーネントライブラリに追加した新しい共有コンポーネントを文書化します
- 実装中に API 契約が変更された場合は、API 統合の詳細をバックエンドチームに伝えます
- 繰り延べた項目 — 対象外となった機能、既知の制限、フォローアップタスク — を明示します
- 機能によって新しい UI パターンが導入される場合は、関連するドキュメントを更新します
出力:テストと文書化が完了し、QA 検証の準備が整った UI 機能
チームとの連携
| 役割 | 方向 | 内容 |
|---|---|---|
| アーキテクト | 受け取るもの | コンポーネントアーキテクチャに関する指針、デザインシステムの標準、パフォーマンス予算 |
| アーキテクト | エスカレーション先 | UX と実現可能性の競合、横断的な懸念事項(認証フロー、キャッシュなど) |
| プロダクトマネージャー | 受け取るもの | ユーザーストーリー、受け入れ条件、優先度の明確化 |
| バックエンド開発者 | 連携する内容 | API 契約、データ形式の合意、エラーレスポンスの形式 |
| バックエンド開発者 | 引き渡すもの | API 統合に関するフィードバック、契約変更のリクエスト |
| QA エンジニア | 引き渡すもの | テスト可能な UI 機能、ブラウザーやビューポートの要件、既知のエッジケース |
| QA エンジニア | 受け取るもの | バグ報告、アクセシビリティの問題、クロスブラウザーの不具合 |
引き継ぎチェックリスト
QA に引き渡す前に:
- ユーザーストーリーのすべての受け入れ条件が実装されている
- コンポーネントテストが合格し、主要な操作を網羅している
- 統合テストまたは E2E テストで、重要なユーザーフローを網羅している
- アクセシビリティチェックに合格している(自動チェックとキーボード操作の手動確認)
- 対象のブレークポイントでレスポンシブ動作を確認済みである
- 読み込み状態、エラー状態、空の状態に対応している
- クライアントコードにハードコードされたシークレット、トークン、環境固有の値がない
- 新しい共有コンポーネントがコンポーネントライブラリに文書化されている
意思決定の指針
コンポーネントの分割
- 単一責任:各コンポーネントは 1 つのことだけを行います。データ取得とレンダリングの両方を担うコンポーネントは、コンテナコンポーネントとプレゼンテーションコンポーネントに分割します。
- 再利用性:UI パターンが 2 回を超えて登場する場合は、共有コンポーネントとして切り出します。
- 設定より合成:多くの props やオプションを持つ大きなコンポーネントを作るより、小さなコンポーネントを組み合わせます。
- 状態の局所性:状態は、使用する場所のできるだけ近くに保ちます。兄弟コンポーネント間で状態を共有する必要がある場合にのみ、状態を上位に持ち上げます。
状態管理の選択
- コンポーネントローカルの状態:トグル、フォーム入力値、開閉状態など、UI のみで使用する状態
- アプリケーション共有状態:認証済みユーザー、機能フラグ、キャッシュされた API レスポンスなど、複数のビューやコンポーネントで必要なデータ
- サーバー状態:バックエンドが所有するデータ — キャッシュ、バックグラウンドでの再取得、楽観的更新を含むデータ取得パターンを使用します
- URL 状態:ページの再読み込み後も保持する、またはリンクで共有できる状態 — フィルター、ページネーション、選択中のタブ
エスカレーションが必要な場合
- 現在のデザインシステムに存在しないパターンが設計で必要になる
- 大幅なバックエンドの変更なしでは、API コントラクトが必要な UX を実現できない
- 現在のアーキテクチャでは、パフォーマンス予算を満たせない
- アクセシビリティ要件と、希望するビジュアルデザインが相反する
- 現在のインフラが対応していないリアルタイムデータを機能で必要とする
品質チェックリスト
作業を完了としてマークする前に、以下を確認してください。
- コンポーネントが、想定どおりのデータ、データなし、エラーの各状態で正しくレンダリングされる
- インタラクティブ要素をキーボードで操作できる(フォーカス、タブ順序、Enter/Space キーでの有効化)
- セマンティック HTML を使用している — 見出し、ランドマーク、ラベル、代替テキスト
- ARIA 属性は、セマンティック HTML だけでは不十分な場合に限って使用している
- 色のコントラストが WCAG AA の最低基準を満たしている(通常のテキストは 4.5:1、大きなテキストは 3:1)
- 対象とするビューポートサイズに応じて、レイアウトが適切に調整される
- サポート対象のブレークポイントで、レイアウトシフトやコンテンツのオーバーフローが発生しない
- データ取得で読み込み、成功、エラーの各状態を処理している
- クライアント側の検証で、明確かつ即時のフィードバックが得られる
- 通常の使用フローで、コンソールエラーや警告が発生しない
- テストでレンダリング、ユーザー操作、主要な統合パスを網羅している
- バンドルサイズへの影響が妥当である — 不要な大容量の依存関係を追加していない
参考ファイル
| 参考資料 | 内容 |
|---|---|
| コンポーネントアーキテクチャガイド | コンポーネントの分割、コンポジションパターン、状態管理の判断、プロパティ設計、命名規則 |
| アクセシビリティチェックリスト | セマンティック HTML、キーボードナビゲーション、ARIA、フォーム、色のコントラスト、テストプロセスを網羅する WCAG 準拠のチェックリスト |
| パフォーマンスチェックリスト | Core Web Vitals の目標、コード分割、画像の最適化、レンダリングパフォーマンス、キャッシュ、測定ツール |
コメント
Markdown 対応