Visual Studio 2015におけるクロスプラットフォーム開発の選択肢:特集:次期Visual Studioの全貌を探る(1/3 ページ)
Visual Studio 2015の大きな特徴の一つである「クロスプラットフォーム開発」に焦点を当て、どんな言語でどんな技術を使えるのかを整理しよう。
Windows 10とそれに対応する最新版の開発環境であるVisual Studio 2015(以下、VS 2015)の特色の一つに、マルチプラットフォーム/クロスプラットフォームであることが挙げられる。特にVS 2015はターゲットとなるプラットフォームやアプリの種類もさまざまなら、それに使える技術もさまざまであり、「何でもできるんだろうけど、何ができるんだか、よく分からん」という方もいらっしゃるのではないだろうか。
そこで、本稿では主にクライアントデバイス上で動作するアプリを対象として、「VS 2015でクロスプラットフォームなアプリを開発する際に使用できる技術」を整理してみたいと思う。なお、本稿ではVisual Studio 2015 CommunityのRC版を下に説明をしていく。また、ここでは単一のコードベースを複数のプラットフォームに展開できるものを対象とする(例えば、Xamarin.Androidを使うとAndroid Wearアプリの開発も可能だが、こうした点については本稿では取り上げない)。
クロスプラットフォーム開発に使えるもの
VS 2015が提供している選択肢はおおよそ以下のものになる(実際にはVisual C++でもAndroid/iOS用のアプリ開発が可能である)。
- UWP(Universal Windows Platform)
- ユニバーサルプロジェクト(Windows 8.1/Windows Phone 8.1)
- Apache Cordova(以下、Cordova)
- Xamarin.Forms(※Xamarin.iOSやXamarin.Androidは含めない)
以下では、これらの概要を見てみる。と思ったのだが、書いているうちにそれなりの分量になってしまったので、これらの技術と対応するOSとの関連を簡単に表にまとめておこう。
Windows 10 | Windows 8.x | Windows Phone | Android | iOS | 言語 | |
---|---|---|---|---|---|---|
UWP | ○ | × | × | × | × | C#、Visual Basic、Visual C++、JavaScript |
ユニバーサルプロジェクト | ○ | ○ | × | × | × | C#(※) |
Cordova | △ | ○ | ○ | ○ | ○ | JavaScript、TypeScript |
VS+Xamarin.Forms | × | × | ○ | ○ | ○ | C#(*) |
CordovaでのWindows 10サポートは2015年6月9日時点(以下、本稿執筆時点)で試験的なものなので△とした。
表のWindows Phoneは8.1までを意味する(Windows 10 MobileはWindowsに含まれる)。
※: 本稿執筆時点ではユニバーサルプロジェクトテンプレートが用意されていないものの、Visual BasicでもWindows 8.1のユニバーサルアプリの開発自体は可能。
*: VS 2015では、Android/iOSアプリ用の単体プロジェクトテンプレートがF#用に提供されている。これらはXamarin.AndroidやXamarin.iOS用のものであり、本稿で紹介するクロスプラットフォーム開発対応のXamarin.Forms用ではない点に注意してほしい。なお、Xamarin.FormsによるWindows Phoneアプリ開発にはVSが必須になるので、行タイトルでは「VS+」と記載している。
ホントにあっさりと各技術とOS/言語の関連をまとめたところで、それぞれの概要を見ていくことにしよう。
UWP(Universal Windows Platform)
Universal Windows Platform(以下、UWP)は、Windows 10で新たに登場するアプリ開発プラットフォームだ。発想的には、Windows 8.1/Windows Phone 8.1用のユニバーサルアプリをより多くのプラットフォームに対応させたものと考えられる。
Windows 10がサポートするデバイスはさまざまだが、それらに共通の機能をコアとして抜き出してアプリの開発/実行プラットフォームとしてまとめたものがUWPだ。コアとなる部分は全てのWindowsデバイスに実装されるので(ここで深入りはしないが、デバイスドライバーインターフェイスも全てのWindowsデバイスで共通化されていることと相まって)、これを使用する分には、UWPアプリは全てのデバイスで共通に動作する。
各種のデバイスに固有な部分はExtension SDKの形で提供されるので、これを明示的に利用することで、おのおののデバイスの特徴的な機能をアプリから利用できるようになる。
UWPアプリの開発に使える言語は、C#、Visual Basic(以下、VB)、Visual C++(以下、VC++)、JavaScriptとなっている。また、その技術的な基盤は(もちろん)Windows Runtimeであり、作成されたアプリは.NET Core CLR上で動作する。
UWPが対象とするのはさまざまなフォームファクター/機能で分化されてはいても全てがWindowsデバイスであることから、UWPを選択肢に含めるかは微妙なところだが、ここでは含めることにしよう。
[コラム] 「ユニバーサル」なアプリがたくさんありすぎる
Windows 10ではUWPが登場したが、以下でも述べるように、Windows 8.1/Windows Phone 8.1の両者をターゲットとしたアプリも「ユニバーサルアプリ」とマイクロソフトは呼称している。そして、これらはWindows Runtimeを基盤として動作するため、Windows Runtimeアプリなどと呼ばれることもある。いやいや、Windows 8が登場した時点ではこれらは「ストアアプリ」って呼ばれてたんじゃなかったっけ?
というわけで、Windows 8.1/Windows 10などで動作するこれらのアプリの名称についても簡単に整理しておこう。
名称 | 説明 |
---|---|
UWPアプリ | UWP(Universal Windows Platform)上で動作するアプリ。Windows 10で登場。ユニバーサルWindowsアプリに含まれる |
ユニバーサルWindowsアプリ | Windowsストアアプリ/Windows Phoneストアアプリ/UWPアプリの総称 |
Windows Runtimeアプリ | Windows Runtimeを基盤として動作するアプリのこと。ユニバーサルWindowsアプリと同義 |
Windowsストアアプリ | Windows Runtimeアプリのうち、Windows 8.1上で動作するもの |
Windows Phoneストアアプリ | Windows Runtimeアプリのうち、Windows Phone 8.1上で動作するもの |
ユニバーサル○○アプリ(みたいな名前のアプリ)の種類 |
詳細についてはMSDNの「What's a Universal Windows app?」や「de:code 2015 / Windows 10セッションでの用語集」なども参照されたい。
なお、前者の記事をよく読むと「UWPはWindows 8で(Windows Runtimeとして)初めて導入された」「UWPはWindows 10(Insider Preview)で次のステップに進化する」「UWPにより、Windows 10(Insider Preview)が動作する全てのデバイスを対象とする単一のユニバーサルアプリエクスペリエンスを構築できるようになる」といったことが書かれている。このため、上の表ではUWPアプリもユニバーサルWindowsアプリに含まれるものとしている。
Windows 8.1ユニバーサルアプリ
VS 2015 Community RCでは、Windows 8.1/Windows Phone 8.1用のユニバーサルアプリの開発も可能だ。注意点としては、VS 2015 RCではVB用のユニバーサルアプリのプロジェクトテンプレートは用意されていないことがある。ただし、手順を踏めば、プロジェクトテンプレートがなくともVBでもWindows 8.1ユニバーサルアプリは開発可能だ。詳しくはVS 2015 CTP6ベースの記事になるが「Visual Basic 14の新機能ベスト10〜もう「VBだから」とは言わせない!」を参照のこと。Windows 8.1ユニバーサルアプリについては本サイトをご覧の皆さまならよくご存じだろうから、詳細は割愛しよう。
Copyright© Digital Advantage Corp. All Rights Reserved.