--- description: '.NET MAUIコンポーネントとアプリケーションパターン' applyTo: '**/*.xaml, **/*.cs' --- # .NET MAUI ## .NET MAUIコードスタイルと構造 - 慣用的で効率的な.NET MAUIとC#コードを書く。 - .NETと.NET MAUI規約に従う。 - 小さなコンポーネントにはインライン関数を好むが、複雑なロジックはコードビハインドやサービスクラスに分離する。 - ノンブロッキングUI操作を保証するため、該当する場所でAsync/awaitを使用する。 ## 命名規則 - コンポーネント名、メソッド名、パブリックメンバーにはPascalCaseに従う。 - プライベートフィールドとローカル変数にはcamelCaseを使用する。 - インターフェース名に"I"のプレフィックスを付ける(例:IUserService)。 ## .NET MAUIと.NET固有のガイドライン - コンポーネントライフサイクル(OnAppearing、OnDisappearingなど)には.NET MAUIの組み込み機能を利用する。 - {Binding}でデータバインディングを効果的に使用する。 - 関心の分離に従って.NET MAUIコンポーネントとサービスを構造化する。 - レコードタイプ、パターンマッチング、グローバルusingなど、現在のC# 13機能を含む最新バージョンのC#を常に使用する。 ## エラーハンドリングと検証 - .NET MAUIページとAPI呼び出しに適切なエラーハンドリングを実装する。 - バックエンドでエラー追跡にはログ機能を使用し、MAUI Community ToolkitのLoggerなどのツールでMAUIのUIレベルエラーをキャプチャすることを検討する。 - フォームでFluentValidationまたはDataAnnotationsを使用して検証を実装する。 ## MAUI APIとパフォーマンス最適化 - コンポーネントライフサイクル(OnAppearing、OnDisappearingなど)にはMAUIの組み込み機能を利用する。 - メインスレッドをブロックする可能性のあるAPI呼び出しやUIアクションには非同期メソッド(async/await)を使用する。 - 不要なレンダリングを減らし、OnPropertyChanged()を効率的に使用してMAUIコンポーネントを最適化する。 - 必要でない限り再レンダリングを避け、適切な場所でBatchBegin()とBatchCommit()を使用してコンポーネントレンダツリーを最小化する。 ## キャッシュ戦略 - 特にMAUIアプリで、頻繁に使用されるデータにインメモリキャッシュを実装する。軽量キャッシュソリューションにはIMemoryCacheを使用する。 - 複数のユーザーやクライアント間で共有状態が必要な大規模アプリケーションには、分散キャッシュ戦略(RedisやSQL Server Cacheなど)を検討する。 - データが変更されにくい場合は応答を保存してAPI呼び出しをキャッシュし、冗長な呼び出しを避けることでユーザーエクスペリエンスを向上させる。 ## 状態管理ライブラリ - コンポーネント間での状態共有には依存性注入と.NET MAUI Community Toolkitを使用する。 ## API設計と統合 - 外部APIや独自のバックエンドとの通信にはHttpClientやその他の適切なサービスを使用する。 - try-catchを使用してAPI呼び出しにエラーハンドリングを実装し、UIで適切なユーザーフィードバックを提供する。 ## テストとデバッグ - xUnit、NUnit、またはMSTestを使用してコンポーネントとサービスをテストする。 - テスト中の依存関係モッキングにはMoqまたはNSubstituteを使用する。 ## セキュリティと認証 - API認証にOAuthまたはJWTトークンを使用して、必要な場所でMAUIアプリに認証と認可を実装する。 - すべてのWeb通信にHTTPSを使用し、適切なCORSポリシーが実装されていることを確認する。 ## APIドキュメントとSwagger - バックエンドAPIサービスのAPIドキュメントにはSwagger/OpenAPIを使用する。 - Swaggerドキュメントの強化のため、モデルとAPIメソッドにXMLドキュメントを確保する。