次の方法で共有


Windows ランタイム 8.x から UWP への移行

ユニバーサル 8.1 アプリ (Windows 8.1、Windows Phone 8.1、またはその両方を対象としている) がある場合は、ソース コードとスキルが Windows 10 にスムーズに移植されることがわかります。 Windows 10 では、ユニバーサル Windows プラットフォーム (UWP) アプリを作成できます。これは、どのような種類のデバイスにでもインストールできる単一のアプリ パッケージです。 Windows 10、UWP アプリ、およびこの移植ガイドで説明するアダプティブ コードとアダプティブ UI の概念の詳細については、「 UWP アプリの概要を参照してください。

移植中、Windows 10 は、以前のプラットフォームだけでなく、XAML マークアップ、UI フレームワーク、ツールと API の大半を共有しており、すべて安心して使い慣れていることがわかります。 前と同じように、プログラミング言語と共に XAML UI フレームワークと共に使用する C++、C#、Visual Basic から選択できます。 現在のアプリまたはアプリで何を行うかを正確に計画する最初の手順は、使用しているアプリとプロジェクトの種類によって異なります。 これについては、次のセクションで説明します。

ユニバーサル 8.1 アプリをお持ちの場合

ユニバーサル 8.1 アプリは、8.1 ユニバーサル アプリ プロジェクトから構築されます。 たとえば、プロジェクトの名前が AppName_81 であるとします。 これらのサブプロジェクトが含まれています。

  • AppName_81.Windows。 これは、Windows 8.1 用のアプリ パッケージをビルドするプロジェクトです。
  • AppName_81.WindowsPhone。 これは、Windows Phone 8.1 用のアプリ パッケージをビルドするプロジェクトです。
  • AppName_81.Shared。 これは、ソース コード、マークアップ ファイル、および他の 2 つのプロジェクトの両方で使用されるその他の資産とリソースを含むプロジェクトです。

多くの場合、8.1 ユニバーサル Windows アプリは、Windows 8.1 フォームと Windows Phone 8.1 フォームの両方で同じ機能を提供し、同じコードとマークアップを使用します。 このようなアプリは、ユニバーサル デバイス ファミリを対象とする単一の Windows 10 アプリに移植するための理想的な候補です (また、最も広い範囲のデバイスにインストールできます)。 基本的に共有プロジェクトの内容を移植し、他の 2 つのプロジェクトからほとんどまたは何も使用する必要はありません。これは、そのプロジェクトにほとんどまたは何もないためです。

それ以外の場合は、Windows 8.1 または Windows Phone 8.1 形式のアプリに固有の機能が含まれています。 または、同じ機能が含まれていますが、異なる手法または異なるテクノロジを使用してこれらの機能を実装します。 このようなアプリでは、ユニバーサル デバイス ファミリを対象とする 1 つのアプリに移植するか (その場合は、アプリを別のデバイスに適応させる)、デスクトップ デバイス ファミリをターゲットとするアプリとモバイル デバイス ファミリをターゲットとするアプリを複数のアプリとして移植することを選択できます。 ユニバーサル 8.1 アプリの性質によって、これらのオプションのうち、お客様のケースに最適なオプションが決まります。

  1. 共有プロジェクトの内容を、ユニバーサル デバイス ファミリを対象とするアプリに移植します。 該当する場合は、Windows および WindowsPhone プロジェクトから他のコンテンツを回収し、そのコンテンツを無条件にアプリで使用するか、アプリが実行時に実行されているデバイスの条件付きを使用します (後者の動作は 確認と呼ばれます)。
  2. ユニバーサル デバイス ファミリを対象とするアプリに WindowsPhone プロジェクトの内容を移植します。 該当する場合は、無条件またはアダプティブに使用して、Windows プロジェクトから他のコンテンツを回収します。
  3. ユニバーサル デバイス ファミリを対象とするアプリに Windows プロジェクトの内容を移植します。 該当する場合は、無条件またはアダプティブに使用して、WindowsPhone プロジェクトから他のコンテンツを回収します。
  4. ユニバーサルまたはデスクトップ デバイス ファミリを対象とするアプリに Windows プロジェクトの内容を移植し、WindowsPhone プロジェクトの内容をユニバーサル デバイス ファミリまたはモバイル デバイス ファミリを対象とするアプリに移植します。 共有プロジェクトを使用してソリューションを作成し、2 つのプロジェクト間でソース コード、マークアップ ファイル、およびその他の資産とリソースを共有し続けることができます。 または、異なるソリューションを作成し、リンクを使用して同じ項目を共有することもできます。

Windows 8.1 アプリをお持ちの場合

ユニバーサル デバイス ファミリまたはデスクトップ デバイス ファミリを対象とするアプリにプロジェクトを移植します。 ユニバーサル デバイス ファミリを選択し、デスクトップ デバイス ファミリにのみ実装されている API をアプリが呼び出す場合は、アダプティブ コードを使用してそれらの呼び出しを保護できます。

Windows Phone 8.1 アプリをお持ちの場合

ユニバーサルまたはモバイル デバイス ファミリを対象とするアプリにプロジェクトを移植します。 ユニバーサル デバイス ファミリを選択し、モバイル デバイス ファミリにのみ実装されている API をアプリが呼び出す場合は、アダプティブ コードを使用してそれらの呼び出しを保護できます。

複数のフォーム ファクターへのアプリの対応

前のセクションから選択したオプションによって、アプリまたはアプリが実行されるデバイスの範囲が決まります。これは非常に広範なデバイスである可能性があります。 アプリをモバイル デバイス ファミリに制限しても、さまざまな画面サイズをサポートできます。 そのため、アプリが以前にサポートしていなかったフォーム ファクターで実行される場合は、それらのフォーム ファクターで UI をテストし、必要な変更を加えて、UI がそれぞれに適切に適合するようにします。 これは移植後のタスクまたは移植のストレッチゴールであると考えることができます。実際には、 Bookstore2QuizGame ケース スタディに例があります。

レイヤーごとの移植アプローチ

ユニバーサル 8.1 アプリを UWP アプリのモデルに移植すると、ほとんどのソース コードとマークアップ、使用するソフトウェア パターンと同様に、ほぼすべての知識と経験が転送されます。

  • ビュー。 ビューは (ビュー モデルと共に)、アプリの UI を構成します。 理想的にはビューは、ビュー モデルの監視可能なプロパティに対するマークアップ バインドから成ります。 直接 UI 要素を操作するためにコード ビハインド ファイル内のコード用に別のパターンが不可欠です (一般的でありまた便利ですが、短期間に限定されます)。 どちらの場合も、UI マークアップとデザイン、および UI 要素を操作する命令型コードも移植が簡単になります。
  • ビュー モデルとデータ モデル。 形式的な懸念事項分離パターン (MVVM など) を取り入れていなくても、ビュー モデルおよびデータ モデルの関数を実行するコードがアプリ内に必然的に存在します。 ビュー モデル コードでは、UI フレームワークの名前空間内の型を使います。 ビュー モデルとデータ モデルコードの両方で、ビジュアル以外のオペレーティング システムと .NET Framework API (データ アクセス用の API を含む) も使用します。 また、これらの API は UWP アプリでも 使用できるためほとんどの場合、このコードのすべてが変更なしで移植されます。
  • クラウド サービス。 アプリのいくつか (おそらく、その多く) が、サービスの形式でクラウド内で実行されます。 クライアント デバイス上で実行する一部のアプリは、こうしたアプリに接続します。 これは、クライアント部分の移植時に、変化しない可能性が最も高い分散アプリの部分です。 まだお持ちでない場合、UWP アプリの優れたクラウド サービス オプションは Microsoft Azure Mobile Services です。これは、ライブ タイルの更新に関する簡単な通知から、サーバー ファームが提供できる高度なスケーラビリティまで、アプリがサービスを呼び出すことができる強力なバックエンド コンポーネントを提供します。

移植前または移植中に、同様の目的を持つコードがレイヤー内に集められ、随意に散在しないように、アプリがリファクタリングによって向上するかどうかを考慮します。 上記のようなレイヤーにアプリを組み込むと、アプリを正しくし、テストしてから読み取って維持することが容易になります。 Model-View-ViewModel (MVVM) パターンに従うことで、機能をより再利用可能にすることができます。 このパターンにより、アプリのデータ部、ビジネス部、UI 部の相互の分離性が維持されます。 UI 内であっても、状態と動作を別個に維持し、視覚効果から個別にテスト可能にすることができます。 MVVM により、データおよびビジネス ロジックを 1 回記述すれば、UI に関係なく、それをすべてのデバイスで使うことができます。 各デバイスで、ビュー モデルとビュー部品の多くを再利用できる可能性があります。

トピック 説明
プロジェクトの移植 移植プロセスを開始する際には、2 つのオプションがあります。 1 つは、アプリ パッケージ マニフェストを含む既存のプロジェクト ファイルのコピーを編集することです (そのオプションについては、アプリを ユニバーサル Windows プラットフォーム (UWP) に移行するのプロジェクト ファイルの更新に関する情報を参照してください)。 もう 1 つのオプションは、Visual Studio で新しい Windows 10/11 プロジェクトを作成し、ファイルをコピーすることです。
トラブルシューティング この移植ガイドは最後まで読むことを強くお勧めしますが、早く先へ進んで、プロジェクトのビルドと実行の段階まで到達したいと思われるのも無理のないことです。 このために、重要でないコードに対してコメント アウトやスタブの挿入を行って一時的に先に進み、後でその部分に戻って対応することもできます。 このトピックには、トラブルシューティングの現象とその対処法を示す表が記載されており、以降のいくつかのトピックに示されている情報に代わるものではありませんが、この段階での作業に役立ちます。 以降のトピックを読み進む中で、いつでもこの表に戻って参考にすることができます。
XAML と UI の移植 宣言型 XAML マークアップの形式で UI を定義する方法は、ユニバーサル 8.1 アプリから UWP アプリに非常によく変換されます。 ほとんどのマークアップは互換性がありますが、使用しているシステム リソース キーまたはカスタム テンプレートを調整する必要がある場合があります。
入出力、デバイス、アプリ モデルの移植 デバイス自体とそのセンサーに統合するコードには、ユーザーに対する入力と出力が含まれます。 また、データ処理を含むこともあります。 ただしこのコードは一般には、UI レイヤーまたはデータ レイヤーのいずれにも見なされません。 このコードには、振動コントローラー、加速度計、ジャイロスコープ、マイクとスピーカー (音声認識と音声合成で使います)、地理位置情報、およびタッチ、マウス、キーボード、ペンなどの入力モダリティとの統合が含まれます。
ケース スタディ: Bookstore1 このトピックでは、非常に単純なユニバーサル 8.1 アプリを Windows 10 および Windows 11 UWP アプリに移植するケース スタディについて説明します。 ユニバーサル 8.1 アプリは、Windows 8.1 用の 1 つのアプリ パッケージと、Windows Phone 8.1 用の別のアプリ パッケージをビルドするアプリです。 Windows 10 と Windows 11 では、顧客がさまざまなデバイスにインストールできる 1 つのアプリ パッケージを作成できます。これは、このケース スタディで行います。 「 Guide to UWP アプリを参照してください。
ケース スタディ: Bookstore2 このケース スタディは、 SemanticZoom コントロールで提供される情報に基づいています。 ビュー モデルでは、Author クラスの各インスタンスは、その作成者によって書かれた書籍のグループを表します。SemanticZoom では、作成者別にグループ化された書籍の一覧を表示することも、縮小して作成者のジャンプ リストを表示することもできます。
ケース スタディ: QuizGame このトピックでは、機能しているピア ツー ピア クイズ ゲーム WinRT 8.1 サンプル アプリを Windows 10 および Windows 11 UWP アプリに移植するケース スタディについて説明します。

ドキュメント