Visual Studio 2015におけるクロスプラットフォーム開発の選択肢:特集:次期Visual Studioの全貌を探る(3/3 ページ)
Visual Studio 2015の大きな特徴の一つである「クロスプラットフォーム開発」に焦点を当て、どんな言語でどんな技術を使えるのかを整理しよう。
ターゲットOSは何か
本稿冒頭で示した表をここでもう一度掲載しておこう。この表からはターゲットOSが何かで、どの技術を選べばよいかが分かる。
Windows 10 | Windows 8.x | Windows Phone | Android | iOS | 言語 | |
---|---|---|---|---|---|---|
UWP | ○ | × | × | × | × | C#、VB、VC++、JavaScript |
ユニバーサルプロジェクト | ○ | ○ | × | × | × | C# |
Cordova | △ | ○ | ○ | ○ | ○ | JavaScript、TypeScript |
VS+Xamarin.Forms | × | × | ○ | ○ | ○ | C# |
VC++ | × | × | × | ○ | ○ | C++ |
CordovaでのWindows 10サポートは本稿執筆時点で試験的なものである。
表のWindows Phoneは8.1までを意味する(Windows 10 MobileはWindowsに含まれる)。
最下行には冒頭の表に加えてVC++(VC++ for Cross-Platform Mobile Development)を追加した。この行ではWindowsに「×」が付いているが、これはVC++ for Cross-Platform Mobile DevelopmentによりAndroid/iOSアプリの開発がサポートされていることを示すもので、当たり前だが、VC++でWindowsアプリが開発できないことを意味しているわけではない。
まずWindows 10を念頭に置く場合、現在のところ選べるのはUWPかCordovaとなる。どちらを選択するかにはいくつかの考慮点がある。一つはWindows以外のプラットフォームまで視野に入れるかどうかだ。入れるのであれば、Cordovaが有力な選択肢となる(意外!)。そうでなければ、自分がどの言語に習熟しているかによる。.NET言語がよければUWP、JavaScript/TypeScriptがよければCordovaだ。あるいは、UWP/PCL(ポータブルクラスライブラリ)/別プラットフォーム用のプロジェクトを組み合わせてWindows以外のプラットフォームとUWPの間でロジックを共有する方法もある。
なお、デスクトップアプリとして動き、それ以外のデバイスでの動作は考慮する必要がないのであれば、本稿では取り上げていないがWindowsフォームやWPFも選択肢に含めてもよいかもしれない。
Windows 8.1/Windows Phone 8.1用のユニバーサルアプリ(≠Windows 10のUWPアプリ)の開発については、すでにご存じだろうから、ここでは話を割愛する(「Cordovaでも作れるよ」くらいが特筆すべき事項だと思われる)。
Android/iOSアプリ開発ではCordova、Xamarin、VC++が選べる。この場合、選択のポイントとなるのは言語とパフォーマンスといえるだろう。パフォーマンスが必要であれば、XamarinかVC++となる。ただし、iOSアプリに関しては、VS 2015のみでは最終的な成果物は得られないことは頭に入れておきたい。アプリのビルドにはOS XとXcodeが動作する環境が必要になる。表には示さなかったが、MonacaではiOSアプリのビルドがクラウド上で行われるため、ローカルにXcode環境を用意する必要がないのはメリットといえるだろう。
言語別
今度は、VS 2015でアプリ開発に使える言語別にまとめよう。「自分が持っている言語スキルを活用するには、どれを使えばよい」かが分かる。
Windows 10 | Windows 8.1/Windows Phone | Android | iOS | |
---|---|---|---|---|
C# | UWP | ユニバーサルプロジェクト | Xamarin | Xamarin |
VB | UWP | 自前ユニバーサルアプリ | × | × |
VC++ | UWP | ユニバーサルプロジェクト | ※ | ※ |
JavaScript | UWP/Cordova | ユニバーサルプロジェクト/Cordova | Cordova | ← |
TypeScript | Cordova | ← | ← | ← |
※: VC++ for Cross-Platform Mobile Development。また、Androidアプリ開発ではAndroid NDKを利用可能。
言語の観点から、本稿で取り上げてきた技術を眺めてみると、JavaScript/TypeScript使いの方はCordova一択な感じだ。Windows 10を含む各種のプラットフォームに全方位対応できる。クロスプラットフォーム開発を念頭に置くなら、今後はJavaScript/TypeScriptを自分のスキルセットに加えておいて損はないかもしれない。
C#でも全てのプラットフォームを網羅している。UWPアプリプロジェクトとXamarin.iOS&Xamarin.Androidアプリ用のプロジェクトを組み合わせて、ロジック部分を共有プロジェクトやポータブルクラスライブラリにまとめるというのも選択肢として考えられる。
VC++はWindowsファミリーに関してはよい選択肢といえる。Android、iOSでパフォーマンスを稼ぎたいアプリを開発する際の選択肢としても考えられる。ただ、XamarinではC++はサポートされていないため、そのメリットを享受するのは無理だ。スピードが優先される場合や、他の言語から呼び出されるライブラリを開発するなど、「ここぞ」の場面での活躍が期待される(といっても、普段からVC++をバリバリに使っているのであれば、そんなことは考えずにこれを選択すればよいのだが)。
クロスプラットフォーム開発の選択肢として見た場合、VBは少々厳しい。XamarinがVBをサポートしていないことと、本稿執筆時点でまだWindows 8.1用のユニバーサルプロジェクトが登場していないことから、実質的にはUWPアプリ開発以外ではVBを選択するのは難しい。
以上、本稿ではVS 2015でクロスプラットフォーム開発を行う際に使える選択肢について簡単にまとめた。あらゆる場面でCordovaが便利に使えるのが、筆者的にはちょっと意外だった。それはともかく、本稿がどんな場面でどんなフレームワークを採用すればよいかの判断の手助けになれば幸いだ。
Copyright© Digital Advantage Corp. All Rights Reserved.