エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Model-View-ViewModel パターンを使用した UI とアプリ ロジックの分離

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows 8

 

Windows Phone 8 と Windows 8 の間でコードの共有を実現できる可能性が最も高いのは、アプリケーション ロジックです。最良のユーザー エクスペリエンスを実現できるよう、各プラットフォームのユーザー エクスペリエンス ガイドラインに沿ってアプリの UI をプラットフォームごとに調整することをお勧めします。サポートされているデザイン コンセプトと XAML コントロールは Windows Phone 8 と Windows 8 で似ていますが、XAML を共有することに注力するのは避ける必要があります。それよりも、アプリのロジックを再利用可能な形で構造化した方が、はるかに大きな成功を収めることができます。アプリでは Model-View-ViewModel (MVVM) デザイン パターンを使用することをお勧めします。

このトピックは、次のセクションで構成されています。

 

MVVM は、UI からデータを分離する方法の 1 つです。MVVM デザイン パターンでは、開発者がアプリのロジックをコーディングし、デザイナーが UI を作成できます。XAML は、MVVM を使用してアプリを簡単に構築できるように設計されています。XAML と MVVM は、相互に補完し合うことで、UI とアプリ ロジックの自然な分離を実現します。次の図に、MVVM デザイン パターンを使用して構築されたアプリの基本的な構造を示します。

Alignment_Concept_MVVM

MVVM デザイン パターンでは、アプリは 3 つの一般的なコンポーネントによって構成されます。

  • モデル: アプリが利用するデータ モデルを表します。たとえば、写真共有アプリの場合、デバイス上で使用できる一連の写真と、写真ライブラリに対する読み取りと書き込みに使用される API を、このレイヤーで表すことができます。

  • ビュー: 通常、アプリは複数の UI ページで構成されます。MVVM の用語では、ユーザーに表示される各ページをビューと呼びます。ビューは、ユーザーに表示されるものを定義し、そのスタイルを設定する XAML コードです。モデルのデータはユーザーに表示され、このデータをアプリの現在の状態に基づいて UI に提供するのが ViewModel の役目です。たとえば、写真共有アプリの場合、ビューはデバイス上のアルバムの一覧、アルバム内の写真、特定の写真などをユーザーに表示する UI です。

  • ViewModel: ViewModel は、データ モデル (モデル) をアプリの UI (ビュー) に結び付けます。ViewModel は、モデルのデータを管理するロジックを含み、それらのデータを XAML UI (ビュー) がバインドできる一連のプロパティとして公開します。たとえば、写真共有アプリの場合、ViewModel はアルバムの一覧を公開し、アルバムごとに写真の一覧を公開します。UI は、写真がどこから、どのように取得されるのかを把握しません。UI は、ViewModel によって公開される一連の写真を把握し、それらをユーザーに表示するだけです。

MVVM の詳細については、「Windows Phone 8 での Model-View-ViewModel パターンの実装」を参照してください。MVVM を理解するのに役立つリソースは他にも多数あります。また、MVVM の記述をさらに簡素化できるように構築されたフレームワークもあります。MVVM やその他の分離パターンは、特に Windows Phone 8 および Windows 8 用のアプリの構築を検討している場合には、アプリを構造化するためのすばらしい方法です。これらのパターンにより、コードを最大限に共有することが可能になります。

Windows Phone 8 および Windows 8 用のアプリを構築する場合、最良のユーザー エクスペリエンスを実現するために、各プラットフォームに合わせて UI のデザインと開発を行うことをお勧めします。アプリの UI (ビュー) の大部分は、プラットフォームに依存します。アプリのその他の部分は、Windows Phone 8 アプリと Windows ストア アプリの間で移植または共通化できる可能性があります。これを次の図に示します。

Alignment_Concept_MVVMCallouts

移植可能なコードと共通コードには違いがあります。移植可能なコードとは、1 回コンパイルすれば、Windows Phone 8 と Windows 8 で実行できるコードのことです。たとえば、.NET API のほとんどは両方のプラットフォーム間で移植可能であり、ポータブル クラス ライブラリで実装できます。共通コードとは、両方のプラットフォームに共通するが、移植可能ではない API を使用するコードのことです。たとえば、Windows Phone 8 と Windows 8 の間で共通する Windows ランタイム API を使用するコードは、共通コードといえますが、プラットフォームごとにコンパイルする必要があるため、移植可能なコードではありません。また、ポータブル クラス ライブラリで使用することもできません。MVVM を使用する場合でも、アプリでどのくらいのコードを共有できるかは、アプリの複雑さと、使用する API によって決まります。

表示:
© 2014 Microsoft