Help us understand the problem. What is going on with this article?

.NET Multi-platform App UI(通称.NET MAUI)でサポート予定のModel - View - Update (MVU)パターンとは

はじめに

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 : メッセージに基づき状態を更新する方法

そして、これらは以下の順序で関連しています。

  1. 現在のアプリケーションの状態(Model)をHTML変換する(View)。
  2. HTML変換されたページ(View)から受け取ったメッセージに基づき状態を更新する(Update)。
  3. 更新された現在のアプリケーションの状態(Model)をHTML変換する(View)。
  4. (上記の繰り返し)...

MVUパターンは遷移が単方向であり、私は非常にシンプルな開発パターンであると感じました。

なぜ .NET MAUIでMVUパターンが採用されるのか

この理由について、Microsoft開発者ブログに記載されていました。
どうやら、以下の3点においてMVUパターンが優れているようです。

  • データと状態の管理が単方向のフローとなるように促進できる
  • 必要な変更のみをUIに適用できるため、素早く更新できる
  • ホットリロードとの相性が良い

ホットリロードできると開発した見た目が即座に反映されるため、UIの見た目や使い勝手を確認しながら開発できます。現在のWPF開発でもホットリロードはできるのですが、相性が良いということはおそらく実行パフォーマンスがよくなったりするのだと推測されます。これは、開発者にとってかなりの利点だと思われます。

おわりに

MVUパターンがなぜMVVMパターンに併せて採用されたのか知らなかったので、今回調べてみてかなり勉強になりました。
今後、MVUパターンに則ったコードを書いてみたいと思いました。またコードを書きましたら、記事で紹介しようと思います。

参考文書

mngreen
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした