旅の途中、興味深いオアシスを見つけた。忘れないうちに、この羊皮紙に記しておくとしよう。
TubeEaterという名のゴーレムを創り終えた私は、次なる冒険のテーマとして、WPFの真髄「MVVM (Model - View - ViewModel)」の探求を決意した。ASP.NET CoreのMVC(Model - View - Controller)とは、何がどう違うのか。そして、この難解な魔法体系を、.NET 6という新たな大地で実現するには、一体どの魔導書(フレームワーク)を手に取るべきなのか。
これは、MVVM(Model-View-ViewModel設計パターン)という、まだ見ぬ山の頂を目指す一人の冒険者が、数多の古文書を読み解き、ついに「Prism」という名の、最も信頼できる魔導書(MVVMフレームワーク)に辿り着くまでの、思索の旅の記録である。
この羊皮紙のあらまし
- この羊皮紙のあらまし
- この羊皮紙が導く者
- 砂漠の道標
- 似て非なる二つの魔法:MVCとMVVM
- 魔導書の選択:Livetか、Prismか
- Prismという名の、深淵なる魔導書
- 羊皮紙を巻く前に
- 砂漠で見つけた魔法のランプ
- ラクダの独り言
この羊皮紙が導く者
- WPFという名の古の魔法で、MVVMという名の神殿を建立したいと願う者
- MVCとMVVM、似て非なる二つの魔法体系の違いを知りたい探求者
- .NET 6環境でMVVMフレームワークを選定中の開発者
- LivetとPrism、どちらを選ぶべきか迷っている冒険者
砂漠の道標
- MVVM - Model-View-ViewModel設計パターン。UIとビジネスロジックを分離する設計思想。
- MVC - Model-View-Controller設計パターン。Web開発で広く使われる設計思想。
- データバインディング - UIとデータを自動的に同期させる仕組み。MVVMの核心技術。
- ViewModel - ViewとModelの間を取り持つ層。Viewに表示するデータを保持し、View操作をModelへ伝える。
- Prism - Microsoft発のMVVMフレームワーク。歴史が長く、情報量と拡張性に優れる。
- Livet - 日本製のMVVMフレームワーク。かつて人気だったが、現在は更新頻度が低い。
- フレームワーク - アプリケーション開発の基盤となるライブラリ群。設計パターンの実装を提供する。
似て非なる二つの魔法:MVCとMVVM
どちらも、Model(データとビジネスロジックの層)とView(UI表示の層)を持つ点は同じだ。違いは、その間を取り持つ存在が、Controller(指揮官)なのか、ViewModel(代弁者)なのか、という点にある。
- MVCの指揮官: Viewからの命令を受け、Modelを動かし、その結果をViewに返す、まさに軍の指揮官だ。
- MVVMの代弁者: Viewに代わって魂の状態を保持し、その変化を「データバインディング」(UIとデータの自動同期機構)という魔法の糸で、常にViewに伝え続ける。Viewからの声も、魂が理解できる言葉に翻訳して伝える、優秀な代弁者なのだ。
まだ完全には理解できないが、この「データバインディング」こそが、MVVMの核心であるらしい。
魔導書の選択:Livetか、Prismか
自らの手でMVVMを実装するのは、あまりに無謀な旅だ。そこで、先人たちが遺してくれた、強力なフレームワーク(アプリケーション開発の基盤となるライブラリ群)という名の魔導書を探すことにした。 情報の砂漠を彷徨った末、候補は二つの偉大な魔導書に絞られた。
- Livet: 我が国で生まれ、多くの者に愛された魔導書。しかし、新たな章が加えられることは、もはや少ない。
- Prism: 神々(Microsoft)自らが世に放った、最も古く、最も信頼される魔導書。今なお、多くの賢者たちによって、その内容は更新され続けている。
総合的に判断し、私が選んだのは「Prism」だ。その歴史、情報量、そして他の魔法体系(MahApps等のUIライブラリ)との連携力。全てにおいて、Prismが、これから先の長い旅路を共にする、最高の相棒となり得ると確信したのだ。
Prismという名の、深淵なる魔導書
早速、Prismの公式サイト(GitHubリポジトリ)から、サンプルの呪文が記された羊皮紙の束を手に入れた。
しかし、その中身を覗き込み、私は愕然とした。 30ものサンプルは、あまりに複雑怪奇。一つの魔法を実現するにも、何通りもの詠唱法が存在する。これは、一筋縄ではいかない。この魔導書を完全に読み解くには、相当な覚悟と、長い時間が必要になるだろう。
羊皮紙を巻く前に
.NET 6のWPFでMVVMを実装するなら、現状、Prismという魔導書を選ぶのが、最も賢明な道だろう。しかし、その道は、決して平坦ではないことを、心に刻んでおかねばならない。
Prismを選んだ理由
- Microsoftの公式支援 - 開発元が明確で、長期的なサポートが期待できる。
- 圧倒的な情報量 - 長い歴史により、公式ドキュメントやサンプルコード、コミュニティの知見が豊富。
- 高い拡張性 - MahApps等の他のライブラリとの連携が容易で、柔軟な開発が可能。
- 継続的な更新 - .NET 6を含む最新技術への対応が迅速に行われている。
覚悟すべき学習コスト
Prismは強力だが、その分、習得には時間がかかる。30ものサンプルが示すように、一つの機能を実現する方法も複数存在し、初学者にとっては混乱の元となる。しかし、この複雑さこそが、大規模開発における柔軟性の源泉でもある。
他のフレームワークとの比較
Livet: 日本語情報が豊富で学習しやすいが、更新頻度の低下が懸念材料。
Caliburn.Micro / Catel: 選択肢としては存在するが、情報量と実績でPrismに劣る。
まとめ
かつて、Spring.NETとWCFという、二つの巨大な魔法体系が融合した、恐ろしく複雑なアプリ基盤と戦った、あの悪夢が蘇る。だが、私は決めた。このPrismという名の険しい山を、必ずや登りきってみせると。
この羊皮紙が、同じようにWPFとMVVMという、新たな冒険に挑もうとする、未来の旅人の助けとなることを願う。
風向きが変わったようだ。この機を逃さず、次の砂丘へと旅立とう。
砂漠で見つけた魔法のランプ
MVVMの基礎知識
- Model View ViewModel | MVVMという魔法体系の古文書
- MVCとMVVMの違いとは? | 賢者の言葉
- WPF(C#)でMVVMを始めよう! | 私を導いてくれるであろう、Prismの道標
MVVMフレームワーク
- Prism | 私が選んだ、究極の魔導書
- Prism Library | Prism 公式サイト
- Prism-Samples-Wpf | 難解なる、呪文の数々
- Livet | かつて一世を風靡した、国産の魔導書
- Caliburn.Micro | もう一つの選択肢
- Catel | さらにもう一つの選択肢
ラクダの独り言
ご主人が「えむぶいぶいえむがー」とか言って、また新しい、やたら分厚い本を読み始めたぜ。なんでも、ゴーレムを創るための、もっと小難しいやり方らしい。俺に言わせりゃ、動けばなんだっていいだろうに。まったく、人間ってのは、どうしてこう、物事をややこしくするのが好きなのかねえ。やれやれだぜ。