特集:開発者のためのWindows Phone概説スタート・ダッシュで差をつけるWP7の基礎知識 WINGSプロジェクト かるあ(監修:山田 祥寛)2011/05/24 2011/05/26 更新 |
|
|
■Windows Phone開発環境の特徴
マイクロソフトは、iPhoneが登場するまでWindows CEやWindows Mobileといったスマートフォンの分野で(主にビジネスマン向けに)大きなシェアを持っていた。Windows Phoneでは、これまでのWindows Mobileプラットフォームを一新し、Visual Studioに強力なWindows Phone開発機能を導入している(高度なIntelliSenseのサポートや、高速なエミュレータの起動、扱いやすいデバッグ機能など)。また、アプリ開発ガイドやアプリ配布プラットフォームの整備を行い、開発者が魅力的なアプリを開発しやすい環境を提供している。
●開発者視点で見たプラットフォームごとの比較
実際に開発を行っていくうえでは、開発環境や開発におけるガイドライン、アプリ配布用のマーケットプレイスなどの環境がどれだけ整備されているかが1つの鍵となる。表3に各プラットフォームの比較を示す。
なお、表3の比較表を作成するうえでは、.NET中心会議で行われたパネル・ディスカッションの議事録を参考にさせていただいた。
WindowsPhone7 | Android | iPhone/iPod/iPad | |
デザインガイドライン | 規定あり | 規定あり | 規定あり |
ハードウェア規定 | 規定あり | 規定なし | 規定あり |
開発環境 | Visual Studio | Eclipse | Xcode |
開発言語 | C#、VB (Visual Basic) | Java、C++ | Objective-C |
開発者ポータル | App Hub | android Developer Center | iOS Dev Center |
アプリ配布 | Marketplace | Android マーケット、そのほか | App Store |
実機動作時の開発者登録 | 必要 | 不要 | 必要 |
企業内配布 | 検討中 | 独自配布 | あり |
表3 スマートフォン・プラットフォームの比較 |
どのプラットフォームにも得手不得手があるが、Windows Phoneはソフトウェアのガイドラインを示したり、ハードウェア規定を設けたりすることで端末ごとの違いを少なくしている。また、開発環境に目を向けると、Windows開発者としては使い慣れたC#やVBを利用して開発できるのはうれしいポイントだろう。
企業での利用を考えると、企業内配布の制度をすでに整えているiPhone勢が一歩抜け出ているが、Windows Phoneも企業内配布を検討中ということで期待が持てる。
●統合開発環境の整備
スマートフォンの開発では、作成したアプリをパッケージにまとめたり、作成したアプリをエミュレータや実機に転送したり、実機を使ったデバッグのためにコンパイル・オプションを変更したりと、いくつか面倒な作業がある。このため、実際の開発では、単純にビルドするだけでなく、開発に必要な一連の機能がそろった統合開発環境を簡単に利用できるかは気になる点だ。
表4に各プラットフォームにおける開発環境を示す。
プラットフォーム | 開発に必要なソフトウェア |
Windows Phone | Windows Phone Developer Tools(詳細は後述) |
Android | JDK 6 |
Eclipse | |
Android SDK | |
iPhone | iPhone SDK |
表4 開発環境 |
Windows Phone Developer Toolsをインストールすると、Visual Studioのほかに、XNA Game Studio、Windows Phoneのエミュレータ、Expression Blendといったツール類も同時にインストールされる。Windowsの開発者としては、ダウンロードしてきたインストーラを実行すれば、使い慣れたVisual Studioなどの環境で、そのままWindows Phoneの開発が行えることは喜ばしい。
ただし、現在は日本語に対応したWindows Phoneがリリースされていないこともあり、Windows Phoneの開発環境も、日本語版のVisual Studioに完全には対応していない。
日本語版のVisual StudioでWindows Phoneの開発を行いたい場合は、Windows Phone Developer Toolsをインストールした後に、次の手順でVisual Studioの再構成を行う必要がある。
なお、本作業はマイクロソフトが正式にサポートする方法ではないため、各自の責任で行ってほしい。
○1. プロジェクト・テンプレートをコピー
「%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight for Windows Phone」以下に「1041」フォルダを作成し、そこに「1033」フォルダの内容をコピーする。
○2. アイテム・テンプレートをコピー
「%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Silverlight for Windows Phone」以下に「1041」フォルダを作成し、そこに「1033」フォルダの内容をコピーする。
○3. Visual Studioを再構成する
コマンド・プロンプトを管理者として実行し、「%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\」に移動して、以下のコマンドを実行する。
> devenv.com /setup
以上の作業を行うと、あらかじめインストール済みの日本語Visual Studioで、Windows Phoneの開発が行える(図7)。
図7 日本語版のVisual Studioで、Windows Phone Developer Toolsを利用している状態 |
【コラム】Androidの開発環境 |
作業自体は難しいものではないが、Android向けの開発環境を整えるには、Windows Phone、iPhoneの開発環境に比べ、次のようにいくつかの個別パッケージをダウンロードして、インストール作業を行う必要がある。 (1)JDKをインストール 詳しくは、次の記事を参照してほしい。 |
■Windows Phoneアプリの開発方法
Windows Phone開発では、ほかのプラットフォームと比べ、作成するアプリに応じてプログラミング・モデルや開発言語を自由に選択できるという特徴がある。
●Silverlightか、XNAか
スマートフォン・アプリは、メールやスケジュール帳など、「クラウド上のデータベースに、エンド・ユーザーの情報を保存・更新するタイプ」と、シューティング・ゲームやアクション・ゲームのように、「2Dオブジェクトや3Dオブジェクトを駆使したUIや処理をリアルタイムに実行するタイプ」に分けることができる。
Windows Phoneでは、それぞれのタイプに対応できるように、ゲームなどのインタラクティブな開発にはXNAを利用した開発、それ以外にはSilverlightを利用した開発と、2つのプログラミング・モデルが用意されている。そもそも、この2つのタイプでは、画面の処理や動作がまったくといっていいほど異なるので、自分の作りたいアプリに応じて、開発者がプログラミング・モデルを選択できるメリットは大きい。
Silverlightでも、コントロールを中心にしたデータベースの更新など、いわゆる業務アプリのような処理以外にも、アニメーションや動画といったオブジェクトが利用できる。しかし、Silverlightの3Dオブジェクトは、あくまで擬似的なサポートにとどまる。3Dオブジェクトを駆使したゲームを作成したい場合は、Xbox360向けのゲームなどで利用されることが多いXNAを選択することになるだろう。逆にいえば、3Dオブジェクトや2Dを頻繁に利用するようなアプリ以外は、Silverlightを選択してアプリ開発を行えばよい。
Windows Phoneの次期バージョンでは、Silverlight内にXNAのオブジェクトを表示したり、連携したりすることも可能になる。これにより、「アプリの大枠はSilverlightで作成し、一部の3Dオブジェクトを表示したい部分だけXNAを利用する」といったシナリオや、「XNAで作成したゲーム内に、Silverlightのテキストボックスやボタンを配置して、テキストボックスへの入力結果やボタンのクリック・イベントなどを簡単に取得する」といったシナリオも採用できる。
【コラム】Webブラウザ |
前回の記事でも触れたが、スマートフォンで採用されているWebブラウザは、ほとんどがHTML5をサポートしている。Windows Phoneの現在のバージョンはIE7をベースにしている(これにIE8の機能もいくつか追加している)ため、HTML5への対応は以前からIEがサポートしてきた一部のタグのみで、極めて限定的だ。 しかし、MIX11の2日目のキーノートにおいて、Windows Phoneの次期バージョン「Mango」では、IE9を標準ブラウザとして採用することが発表された。このため、Windows Phone 7.1では多くのHTML5機能が使えるようになる。 |
●スマートフォンもC#やVBで開発しよう
前掲の表3で示したとおり、Windows Phoneの開発には、C#とVBの2つの開発言語がサポートされている。開発者は好みの開発言語を利用してWindows Phoneの開発を行える。
ただし、VBでWindows Phoneの開発を行いたい場合、別途、VB用のWindows Phone Developer Toolsをインストールする必要がある。必要な場合は、マイクロソフトのDownload Centerからダウンロードし、インストールしてほしい。
【コラム】C/C++言語によるネイティブ・コードが使えないことについて |
Windows Phoneの開発では、前述したC#かVBのどちらかを選択する必要がある。C++やCといったアンマネージな開発言語を選択することはできない。 これは、行儀の悪いアンマネージ・コードが、必要以上にメモリやCPUといったリソースを消費し、Windows Phone自体の動作を不安定にしたり、端末のバッテリを消費したりしてしまい、利用者に不便をかけさせないための対策だ。 「CやC++が利用できない」というと、動作速度の面で心配する声も聞こえるが、実際に触ってみると、市場に出回っているアプリは驚くほど軽快に動作する。構築するアプリの性質にもよるが、バッチ系のよほど重い処理をスマートフォンにさせない限り、動作速度に問題はないだろう。 |
■開発者向けのリソース
MSDNの「Windows Phone開発者向け技術情報」では、多くの開発者向けのリソースが公開されている。中でも、「Windows Phone 7 トレーニング キット」はぜひ一度目を通しておきたい。
特に、「Windows Phone 向け UI デザイン/操作ガイド」と「Windows Phone 概要」の2つは、一度目を通しておきたい。
また、英語ではあるが、Windows Phone 7の開発全般について詳しく触れられた、「Programming Windows PhoneのPDF」が無料で公開されている。
開発者向けのポータル・サイト「App Hub」も充実している。「コンテンツ カタログ」では、目的からコード・サンプルやチュートリアルを検索できる。本稿を執筆している4月24日時点では、いくつかのコンテンツは英語での提供となっているが、順次、日本語化されていく予定だ。
開発に困った場合は、コミュニティのフォーラムで質問を投げてみるのもいいだろう。
【コラム】「iPhoneからWindows Phoneへの移行」に関するドキュメント |
複数のスマートフォンに対してアプリを提供する場合、同じ機能を実装しようにも、どのAPIを使ったらよいか、プラットフォームごとのデザイン・ガイドラインがどうなっているか、そもそも実現可能であるかなど、確認すべき項目はいくつもある。 「Windows Phone 7 Interoperability」は、Windows Phone開発とほかのスマートフォン開発の相互運用を支援するサイトだ。このサイトで公開されている「Windows Phone 7 Guide for iPhone Application Developers」では、iPhoneアプリからWindows Phoneアプリへの移行方法が詳しくまとまっている。 |
■まとめ
以上、本稿では開発者視点でWindows Phoneの機能概要、そして簡単な開発の手引きをまとめた。
現在のところ、日本語が入力できない。日本語のアプリが少ない。そもそも日本で発売されていないといった点でまだスタート地点に立てていないWindows Phoneだが、端末を操作した人の感想はおおむね良好だし、次期OSであるMangoが完成すれば、日本語に対応しいつでもスタート・ダッシュを切れる状態になる。
筆者が4/15に参加した「Windows Phoneアプリケーション開発 Deep Dive」では、参加者110人の約半数がすでにWindows Phone端末を保持し、すでに開発を行っているという状況にあった。日本におけるWindows Phone開発は静かに動き出している。
INDEX | ||
特集:開発者のためのWindows Phone概説 | ||
スタート・ダッシュで差をつけるWP7の基礎知識 | ||
1.スマートフォンに最適化されたWindows Phoneの画面 | ||
2.スマートフォン固有の機能も活用できるWindows Phone | ||
3.Windows Phoneアプリの開発環境の特徴と開発方法 | ||
更新履歴 | |
|
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|