WPFでは「MVVM(Model-View-ViewModel)」パターンを使って、役割ごとにコードを分離することで、保守性・テスト性・再利用性を高めます。
コンポーネント | 役割 | 詳細 |
---|---|---|
Model | データとビジネスロジック | データ構造、DBアクセス、API処理など |
View | UI | XAMLによる画面定義。見た目と表示に専念 |
ViewModel | 状態と振る舞い | ViewとModelの橋渡し。コマンド、状態、バインディングの管理 |
MyApp/
│
├── Models/ ← データ構造やロジック(例:User.cs)
├── ViewModels/ ← Viewに対応するViewModel(例:UserViewModel.cs)
├── Views/ ← XAML UI(例:UserView.xaml, UserView.xaml.cs)
├── Services/ ← API通信やDBアクセスなどの業務ロジック(例:UserService.cs)
├── Commands/ ← ICommandなどの共通ロジック(例:RelayCommand.cs)
├── Utils/ ← 再利用可能な補助ロジック(例:StringUtils.cs, DateTimeUtils.cs)
├── Extensions/ ← 拡張メソッドなど(例:StringExtensions.cs)
├── App.xaml ← アプリケーションエントリポイント
Utils
ディレクトリの使い方StringUtils.cs
:文字列の整形や検証DateTimeUtils.cs
:日時の変換や比較EnumUtils.cs
:Enumの表示名取得などExtensions/
:拡張メソッド(StringExtensions.cs
など)📌 注意:Utils
は他のレイヤーに依存しないように設計すること(逆はOK)
View → ViewModel → Model / Service → Utils(依存関係の一方向性を守る)