はじめに
Microsoftが開催する開発者向けの大型イベント「Microsoft Build 2020」の中で、.NET Multi-platform App UI(通称 .NET MAUI)が紹介されました。紹介された内容はこちらを参照ください。
上記の紹介記事の中で私が気になったのは、掲題でも記しておりますが、以下の内容です。
最も関連性のあるもののひとつは、アプリケーションの開発パターンに関わるものだ — MAUIはModel-View-View-Model(MVVM、ReactiveUIを含む)とModel-View-Update(MVU、現在のXamarin.Formsではサポートされていない)をサポートする予定である。
MVVMパターンはWPFというWindowsアプリケーションの開発で用いられている開発パターンなので馴染みがあったのですが、MVUパターンに関してはそのようなものがあることすら知りませんでした。
本記事ではそんなMVUパターンについて自分なりに調べた内容を紹介します。
Model - View - Update (MVU)パターン
概要
MVUパターンはElmというプログラミング言語で導入された開発パターンです。参考文書にMVUパターンの紹介がありましたので、そちらを日本語に訳しつつ紹介しようと思います。
ElmでのModel - View - Updateパターンとは、以下で構成されたパターンとなります。
- Model : アプリケーションの状態
- View : 状態をHTMLに変換する方法
- Update : メッセージに基づき状態を更新する方法
そして、これらは以下の順序で関連しています。
- 現在のアプリケーションの状態(Model)をHTML変換する(View)。
- HTML変換されたページ(View)から受け取ったメッセージに基づき状態を更新する(Update)。
- 更新された現在のアプリケーションの状態(Model)をHTML変換する(View)。
- (上記の繰り返し)...
MVUパターンは遷移が単方向であり、私は非常にシンプルな開発パターンであると感じました。
なぜ .NET MAUIでMVUパターンが採用されるのか
この理由について、Microsoft開発者ブログに記載されていました。
どうやら、以下の3点においてMVUパターンが優れているようです。
- データと状態の管理が単方向のフローとなるように促進できる
- 必要な変更のみをUIに適用できるため、素早く更新できる
- ホットリロードとの相性が良い
ホットリロードできると開発した見た目が即座に反映されるため、UIの見た目や使い勝手を確認しながら開発できます。現在のWPF開発でもホットリロードはできるのですが、相性が良いということはおそらく実行パフォーマンスがよくなったりするのだと推測されます。これは、開発者にとってかなりの利点だと思われます。
おわりに
MVUパターンがなぜMVVMパターンに併せて採用されたのか知らなかったので、今回調べてみてかなり勉強になりました。
今後、MVUパターンに則ったコードを書いてみたいと思いました。またコードを書きましたら、記事で紹介しようと思います。