アプリのモダン化とそれを実現する技術としての.NET Framework:連載:Visual Studio 2013対応フレームワーク「.NET 4.5.1」解説(3/3 ページ)
最近、マイクロソフトが唱えている「アプリのモダン化」とは? これを実現するための要素としての.NET Framework、今後重要になりそうなテクノロジを紹介する。
モダンなアプリを開発するために知っておきたい要素
上では、.NET Framework 4.5/4.5.1では各要素がどのようなポジションに位置付けられるかを見た。重要なのは、多くの「デバイス」が「サービス」を利用することでリッチなユーザー体験を得られるようになるということだ。これを実現するために.NET Frameworkでは各種のテクノロジが階層化されて存在している。
こうした状況でマイクロソフトが言うところの「モダン」なアプリを作るには、どんな要素について知っておいた方がよいか、筆者個人が気になっているところをいくつか紹介しよう。
HttpClientクラス
HttpClientクラス(System.Net.Http名前空間/Windows.Web.Http名前空間)は.NET Framework 4.5で登場した新しいクラスであり、その名前のとおり、HTTPリクエスト/レスポンスの送受信を行うために使える。このクラスを決め打ちで、知っておきたい要素の筆頭に持ってきたのはもちろん、これからのアプリがHTTP経由で何らかの「サービス」にアクセスするのが普通になることと、このクラスが非常に便利に使えるからだ。なお、.NET Framework 4.5.1ではWindows.Web.Http名前空間が追加され、その下にHttpClientクラスも含まれている。WindowsストアアプリではこちらのHttpClientクラスを使用するのがよいだろう。
例えば、このクラスには次のようなメソッドが用意されている。
- GetAsyncメソッド
- PostAsyncメソッド
- DeleteAsyncメソッド
- PutAsyncメソッド
これらのメソッドはそれぞれHTTPのGET/POST/DELETE/PUTの各リクエストを、指定されたURIに対して送信する非同期メソッドである。また、これらのメソッドが処理を完了した時点ではHttpResponseMessageクラス(System.Net.Http名前空間)のオブジェクトが得られるので、ここから処理結果を取り出せばよい。
HTTP verb(HTTP動詞)によるリクエスト/レスポンスの送受信がうまい具合に抽象化されているため、HttpClientクラスを使うと、例えばASP.NET Web APIで提供されるサービスにアクセスするクライアントが非常に簡単に作成できるのだ。
もちろん、このクラスはWindowsフォームからも利用可能であるため、WindowsフォームアプリをASP.NET Web APIのクライアントとすることも可能だ。WindowsフォームアプリからWPFアプリへの移行は一足飛びにできるものではないかもしれないが、このような新しいテクノロジを使ってアプリの構造を少しずつサービスに対応したものに変更し、自分のスキルを磨いていくのはアリかもしれない。
例えば、以下はHttpClientクラスを用いて同一のASP.NET Web APIサービスにアクセスをするWindowsフォームアプリとWPFアプリだ。
HttpClientクラスを用いてASP.NET Web APIにアクセスをするWindowsフォームアプリとWPFアプリ
このサービスはHTTP GETリクエストに対してJSON形式のデータを返送する(メモ帳の内容)。このサービスとやりとりをする、HttpClientクラスを利用した2種類のデスクトップアプリを作成してみた。
System.Net名前空間およびWindows.Web.Http名前空間には、この他にも多くのクラスが追加されているので、必要に応じて調べてみるとよいだろう。
ポータブルクラスライブラリ(PCL: Portable Class Library)
上で示したように、.NET Framework 4.5ではWindowsフォームアプリ、WPFアプリ、さらにWindowsストアアプリの形で単一のサービスにアクセスが可能だ。このように.NET Framework上で動作する複数のアプリがあるときにはクライアント側でもロジックを共有できると便利な場合がある。このようなときにはポータブルクラスライブラリが便利に使えるはずだ。
ポータブルクラスライブラリは、.NET Frameworkをベースとするさまざまなプラットフォームで共有可能なアセンブリのことで、.NET Framework 4.5まではマイクロソフトのテクノロジ(Windows、Silverlight、Windows Phone、Windowsストアアプリなど)をその対象としていた。マイクロソフトとXamarinの提携により、これがXamarinを介して、AndroidアプリやiOSアプリの開発にも適用可能となったことはすでにご存じのことだろう。
例えば、上記のASP.NET Web APIサービスにアクセスする部分をきっちりとMVVMモデルに従って設計することで、これをWPFアプリとWindowsストアアプリで共有することが考えられる。Windowsフォームアプリではこれら2つのアプリのように簡便にデータバインドが行えないだろうが、それでもポータブルクラスライブラリを使えば、ロジックは共有し、フォームへのデータの表示については必要に応じてポータブルクラスライブラリが提供するプロパティやメソッドを使うといったことが考えられる。
ポータブルクラスライブラリについては「WinRT/Metro TIPS:Windows 8とWindows Phone 8でコードを共有するには?[Win 8/WP 8]」と「WinRT/Metro TIPS: ポータブル・クラス・ライブラリ(PCL)でプラットフォーム依存コードを使うには?[Win 8/WP 8]」で取り上げているので、ぜひご一読いただきたい。また、WPFやデータバインドについては「連載:WPF入門」で詳しく解説されている。
Windowsランタイムコンポーネント
上で紹介したポータブルクラスライブラリは.NET Frameworkベースのプラットフォーム間で移植性のあるアセンブリを作成するためのテクノロジだが、WindowsランタイムコンポーネントはWindowsストアアプリを主な対象として、コードの再利用を図るためのテクノロジだ。
Windowsランタイムコンポーネントを使うと、C++/CX、C#、Visual Basicで記述したロジックを、Windowsストアアプリの開発するための各種言語(C++/CX、C#、Visual Basic、JavaScript)で再利用できる。
1つの使い方としては、各言語で共有したいロジックや負荷の高い処理をWindowsランタイムコンポーネントとすることが考えられる。もう1つの使い方としては、CやC++などで記述されている既存のライブラリをWindowsストアアプリで再利用できるようにラップすることがある。後者については、「連載:Windowsランタイム・コンポーネントによるコードの再利用」を参照していただきたい。また、「特集:デスクトップでもWinRT活用:開発者が知っておくべき、ライブラリとしてのWindowsランタイム」では、デスクトップアプリからWindowsランタイムを利用する方法が述べられているので、興味のある方はこちらも参照してほしい。
One ASP.NET
上記はクライアントを開発する面で重要な要素――.NET Frameworkをベースとしたデバイス間でコードを再利用したり、粒度の高いHTTP通信を行ったりするための要素――だった。一方、サービスを提供したり、非Windowsアーキテクチャのデバイスに対してリッチなユーザー体験を提供したりすることを考えると、現状ではOne ASP.NETの名の下に提供されている各種テクノロジがお勧めとなるだろう。
これらの技術としては以下のものがある。
- ASP.NET MVC
- ASP.NET SignalR
- ASP.NET SPA
- ASP.NET Web API
- ASP.NET Webフォーム
ASP.NET 4.5/4.5.1でのざっくりとした機能改善については前回紹介したので、ここでは説明は省略する。これらについては「Visual Studio 2012の新機能とASP.NET 4.5のコア機能」「ASP.NET Webフォームの新機能」「ASP.NET MVCの新機能」「連載:ASP.NET Web API 入門」「ASP.NET SignalRを知る」「ASP.NET SignalRの高度な機能」を参照されたい。
まとめ
今回はマイクロソフトが唱える「アプリのモダン化」と、.NET Frameworkの構成要素が今回どのような立ち位置に整理されたのか、今後、キーポイントとなりそうな要素について見てきた。次回はVisual Studio 2013とVisual Studio Onlineがアプリ開発においてどのような意義を持つかを見てみよう。
Copyright© Digital Advantage Corp. All Rights Reserved.