awesome-copilot/instructions/vuejs3.instructions_ja.md

154 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
description: 'VueJS 3開発標準とComposition API及びTypeScriptでのベストプラクティス'
applyTo: '**/*.vue, **/*.ts, **/*.js, **/*.scss'
---
# VueJS 3 開発指示書
Composition API、TypeScript、モダンベストプラクティスを使用した高品質VueJS 3アプリケーション構築のための指示書。
## プロジェクトコンテキスト
- Vue 3.xとComposition APIをデフォルトとして使用
- 型安全性のためのTypeScript
- `<script setup>`構文を使用した単一ファイルコンポーネント(`.vue`
- モダンビルドツールVite推奨
- アプリケーション状態管理のためのPinia
- 公式Vueスタイルガイドとベストプラクティス
## 開発標準
### アーキテクチャ
- Options APIよりもComposition API`setup`関数とcomposablesを優先
- スケーラビリティのためにコンポーネントとcomposablesを機能またはドメインで整理
- UI重視コンポーネントプレゼンテーションとロジック重視コンポーネントコンテナを分離
- 再利用可能なロジックを`composables/`ディレクトリのcomposable関数に抽出
- 明確に定義されたアクション、状態、ゲッターでドメイン別にストアモジュールPiniaを構造化
### TypeScript統合
- 最大型安全性のために`tsconfig.json``strict`モードを有効化
- `defineComponent`または`defineProps``defineEmits`を使った`<script setup lang="ts">`を使用
- 型付きpropsとデフォルト値に`PropType<T>`を活用
- 複雑なpropと状態の形にはインターフェースまたは型エイリアスを使用
- イベントハンドラー、refs、`useRoute`/`useRouter`フックの型を定義
- 適用可能な場所でジェネリックコンポーネントとcomposablesを実装
### コンポーネント設計
- コンポーネントに対して単一責任原則を遵守
- コンポーネント名にはPascalCase、ファイル名にはkebab-caseを使用
- コンポーネントを小さく、一つの関心事に焦点を当てる
- 簡潔性とパフォーマンスのために`<script setup>`構文を使用
- TypeScriptでpropsを検証必要な場合のみランタイムチェックを使用
- 柔軟な構成のためにslotsとscoped slotsを優先
### 状態管理
- グローバル状態にはPiniaを使用`defineStore`でストアを定義
- 単純なローカル状態には`setup`内で`ref``reactive`を使用
- 派生状態には`computed`を使用
- 複雑な構造のために状態を正規化
- 非同期ロジックにはPiniaストアのアクションを使用
- 永続化やデバッグのためにストアプラグインを活用
### Composition APIパターン
- 共有ロジック(例:`useFetch``useAuth`のために再利用可能なcomposablesを作成
- 精密な依存関係リストで`watch``watchEffect`を使用
- `onUnmounted`または`watch`クリーンアップコールバックでサイドエフェクトをクリーンアップ
- 深い依存関係注入には`provide`/`inject`を控えめに使用
- `useAsyncData`またはサードパーティデータユーティリティVue Queryを使用
### スタイリング
- コンポーネントレベルスタイルまたはCSSモジュールには`<style scoped>`を使用
- 高速スタイリングのためにユーティリティファーストフレームワークTailwind CSSを検討
- クラス命名にはBEMまたは機能的CSS規約に従う
- テーマとデザイントークンにはCSSカスタムプロパティを活用
- CSS GridとFlexboxでモバイルファースト、レスポンシブデザインを実装
- スタイルがアクセシブル(コントラスト、フォーカス状態)であることを確保
### パフォーマンス最適化
- 動的インポートと`defineAsyncComponent`でコンポーネントを遅延ロード
- 非同期コンポーネント読み込みフォールバックに`<Suspense>`を使用
- 静的または変更頻度の低い要素に`v-once``v-memo`を適用
- Vue DevToolsパフォーマンスタブでプロファイル
- 不要なウォッチャーを避ける;可能な場合は`computed`を優先
- 未使用コードをツリーシェイクし、Viteの最適化機能を活用
### データフェッチング
- `useFetch`NuxtまたはVue Queryのようなライブラリのcomposablesを使用
- ローディング、エラー、成功状態を明示的に処理
- コンポーネントアンマウントまたはパラメータ変更時に古いリクエストをキャンセル
- 失敗時のロールバックでオプティミスティック更新を実装
- レスポンスをキャッシュし、バックグラウンド再検証を使用
### エラーハンドリング
- キャッチされていないエラーにはグローバルエラーハンドラー(`app.config.errorHandler`)を使用
- リスキーなロジックを`try/catch`でラップ;ユーザーフレンドリーなメッセージを提供
- ローカル境界のためにコンポーネントで`errorCaptured`フックを使用
- フォールバックUIまたはエラーアラートを優雅に表示
- 外部サービスSentry、LogRocketにエラーをログ記録
### フォームと検証
- 宣言的検証にはVeeValidateや@vueuse/formのようなライブラリを使用
- 制御された`v-model`バインディングでフォームを構築
- パフォーマンスのためにデバウンシングでblurまたはinput時に検証
- composablesでファイルアップロードと複雑な多段階フォームを処理
- アクセシブルなラベリング、エラー告知、フォーカス管理を確保
### ルーティング
- `createRouter``createWebHistory`でVue Router 4を使用
- ネストされたルートとルートレベルコード分割を実装
- ナビゲーションガード(`beforeEnter``beforeEach`)でルートを保護
- プログラム的ナビゲーションのために`setup``useRoute``useRouter`を使用
- クエリパラメータと動的セグメントを適切に管理
- ルートメタフィールドを通じてブレッドクラムデータを実装
### テスト
- Vue Test UtilsとJestで単体テストを記述
- 実装詳細ではなく動作に焦点を当てる
- コンポーネント分離のために`mount``shallowMount`を使用
- 必要に応じてグローバルプラグインrouter、Piniaをモック
- CypressまたはPlaywrightでエンドツーエンドテストを追加
- axe-core統合を使用してアクセシビリティをテスト
### セキュリティ
- `v-html`の使用を避けるHTMLインプットを厳格に無害化
- XSSとインジェクション攻撃を軽減するためにCSPヘッダーを使用
- テンプレートとディレクティブでデータを検証・エスケープ
- すべてのAPIリクエストにHTTPSを使用
- `localStorage`ではなくHTTP専用クッキーに機密トークンを保存
### アクセシビリティ
- セマンティックHTML要素とARIA属性を使用
- モーダルと動的コンテンツのフォーカス管理
- インタラクティブコンポーネントにキーボードナビゲーションを提供
- 画像とアイコンに意味のある`alt`テキストを追加
- カラーコントラストがWCAG AA標準を満たすことを確保
## 実装プロセス
1. コンポーネントとcomposableアーキテクチャを計画
2. Vue 3とTypeScriptでViteプロジェクトを初期化
3. Piniaストアとcomposablesを定義
4. コアUIコンポーネントとレイアウトを作成
5. ルーティングとナビゲーションを統合
6. データフェッチングと状態ロジックを実装
7. 検証とエラー状態を持つフォームを構築
8. グローバルエラーハンドリングとフォールバックUIを追加
9. 単体テストとE2Eテストを追加
10. パフォーマンスとバンドルサイズを最適化
11. アクセシビリティコンプライアンスを確保
12. コンポーネント、composables、ストアを文書化
## 追加ガイドライン
- Vueの公式スタイルガイドvuejs.org/style-guideに従う
- コード一貫性のためにESLint`plugin:vue/vue3-recommended`とPrettierを使用
- 意味のあるコミットメッセージを書き、クリーンなgit履歴を維持
- 依存関係を最新に保ち、脆弱性を監査
- JSDoc/TSDocで複雑なロジックを文書化
- デバッグとプロファイリングにVue DevToolsを使用
## 共通パターン
- 柔軟なUIのためのレンダーレスコンポーネントとscoped slots
- provide/injectを使用したコンパウンドコンポーネント
- 横断的関心事のためのカスタムディレクティブ
- モーダルとオーバーレイのためのTeleport
- グローバルユーティリティi18n、アナリティクスのためのプラグインシステム
- パラメータ化されたロジックのためのComposableファクトリー