awesome-copilot/instructions/blazor.instructions_ja.md

80 lines
5.7 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: 'Blazorコンポーネントとアプリケーションパターン'
applyTo: '**/*.razor, **/*.razor.cs, **/*.razor.css'
---
# Blazor開発ガイドライン
## Blazorコードスタイルと構造
- 慣用的で効率的なBlazorとC#コードを書く
- .NETとBlazorの規則に従う
- コンポーネントベースのUI開発に適切にRazorコンポーネントを使用する
- 小さなコンポーネントにはインライン関数を推奨するが、複雑なロジックはコードビハインドまたはサービスクラスに分離する
- ンブロッキングなUI操作を確保するため、該当する場所でAsync/awaitを使用する
## 命名規則
- コンポーネント名、メソッド名、公開メンバーにはPascalCaseに従う
- プライベートフィールドとローカル変数にはcamelCaseを使用する
- インターフェース名には「I」をプレフィックス付与IUserService
## Blazorと.NET固有のガイドライン
- コンポーネントライフサイクル用のBlazorの組み込み機能を活用するOnInitializedAsync、OnParametersSetAsync
- @bindでデータバインディングを効果的に使用する
- BlazorでサービスにDependency Injectionを活用する
- Separation of Concernsに従ってBlazorコンポーネントとサービスを構造化する
- 常に最新バージョンのC#を使用する現在はC# 13のrecord型、パターンマッチング、グローバルusingなどの機能
## エラーハンドリングと検証
- BlazorページとAPI呼び出し用の適切なエラーハンドリングを実装する
- バックエンドでのエラー追跡にログ記録を使用し、ErrorBoundaryなどのツールでBlazorのUIレベルのエラーをキャプチャすることを検討する
- フォームでFluentValidationまたはDataAnnotationsを使用して検証を実装する
## Blazor APIとパフォーマンス最適化
- プロジェクト要件に基づいてBlazorサーバーサイドまたはWebAssemblyを最適に活用する
- API呼び出しやメインスレッドをブロックする可能性のあるUIアクションには非同期メソッドasync/awaitを使用する
- 不要なレンダリングを減らし、StateHasChanged()を効率的に使用してRazorコンポーネントを最適化する
- 必要でない限り再レンダリングを避け、適切な場合にShouldRender()を使用してコンポーネントレンダーツリーを最小化する
- ユーザーインタラクションを効率的に処理するためEventCallbacksを使用し、イベントをトリガーする際は最小限のデータのみを渡す
## キャッシュ戦略
- 特にBlazor Serverアプリでは、頻繁に使用されるデータにインメモリキャッシュを実装する。軽量なキャッシュソリューションにはIMemoryCacheを使用する
- Blazor WebAssemblyでは、ユーザーセッション間でアプリケーション状態をキャッシュするためlocalStorageまたはsessionStorageを活用する
- 複数のユーザーまたはクライアント間で共有状態が必要な大規模アプリケーションには、分散キャッシュ戦略RedisやSQL Server Cacheなどを検討する
- データが変更されにくい場合は、冗長な呼び出しを避けるため、レスポンスを保存してAPI呼び出しをキャッシュし、ユーザーエクスペリエンスを向上させる
## 状態管理ライブラリ
- コンポーネント間での基本的な状態共有にはBlazorの組み込みCascading ParametersとEventCallbacksを使用する
- アプリケーションが複雑になった場合は、FluxorやBlazorStateなどのライブラリを使用した高度な状態管理ソリューションを実装する
- Blazor WebAssemblyでのクライアント側状態永続化には、ページリロード間で状態を維持するためBlazored.LocalStorageまたはBlazored.SessionStorageの使用を検討する
- サーバーサイドBlazorでは、再レンダリングを最小化しながらユーザーセッション内で状態を管理するため、Scoped ServicesとStateContainerパターンを使用する
## API設計と統合
- 外部APIまたは独自のバックエンドとの通信にHttpClientまたは他の適切なサービスを使用する
- try-catchを使用してAPI呼び出し用のエラーハンドリングを実装し、UIで適切なユーザーフィードバックを提供する
## Visual Studioでのテストとデバッグ
- すべてのユニットテストと統合テストはVisual Studio Enterpriseで実行する
- xUnit、NUnit、またはMSTestを使用してBlazorコンポーネントとサービスをテストする
- テスト中の依存関係のモックにはMoqまたはNSubstituteを使用する
- Blazor UIの問題はブラウザ開発者ツールで、バックエンドとサーバーサイドの問題はVisual Studioのデバッグツールを使用してデバッグする
- パフォーマンスプロファイリングと最適化には、Visual Studioの診断ツールに依存する
## セキュリティと認証
- 必要に応じてBlazorアプリで認証と認可を実装する。API認証にはASP.NET IdentityまたはJWTトークンを使用する
- すべてのWeb通信にHTTPSを使用し、適切なCORSポリシーが実装されていることを確認する
## APIドキュメンテーションとSwagger
- バックエンドAPIサービスのAPIドキュメンテーションにSwagger/OpenAPIを使用する
- Swaggerドキュメンテーションの拡張のため、モデルとAPIメソッド用のXMLドキュメンテーションを確保する