(連載) iPhone アプリケーション開発者のためのWindows Phone ガイド #1

イベントやコミュニティで、iPhoneのアプリケーションを開発されている方とお話をすると、「Windows Phone が日本に登場したらアプリケーションを移植したいと思っています」、という声を聞きます。そんな開発者の方に、チェックしていただきたいのが、
Windows Phone 7 Guide for iPhone Application Developers
のサイトです。

Windows Phone 7 をベースに8章に分かれて解説があり、オンラインだけではなく、ダウンロードして、DOCXまたはPDF形式でまとめて読むことができます。

すべての翻訳はできませんが、連載の中で、元のドキュメントにはない”Mango”でのポイントも交えて紹介していきたいと思います。ここではChapter 1を紹介したいと思います。

Chapter 1: Windows Phone 7 Platform introduced to iPhone application developers

2010年10月11日にWindows Phone 7をリリースした話、開発ツールの概要、Windows Phone 7アーキテクチャーの概要が説明されていて、Windows Phone 7プログラミングスタックとiPhoneのスタックを比較しています。

Windows Phone 7の開発ツール:

開発ツールのダウンロードについては、こちらのページから。
最新の開発ツールは、Windows Phone SDK 7.1 Beta 2からもダウンロードできます。

開発者向け統合開発環境 : Visual Studio Express for Windows Phone ,

デザイナー向けUIデザインツール: Express Blend for Windows Phone,

フレームワーク: Silverlight for Windows Phone と XNA Game Studio for Windows Phone

“Mango”のプロジェクトテンプレート (Windows Phone SDK 7.1 Beta 2)
WS000013

テストとデバッグ環境: Windows Phone 7 emulator

例: 加速度センサーのシミュレータを利用してテスト

WS000016

例: ロケーションのシミュレータを利用してテスト

WS000015

Windows Phone 7 アーキテクチャー:

Windows Phone 7では、レイヤー型のアーキテクチャーを採用しています。iPhone/iOSと比較すると、Windows Phone 7は複数の異なるメーカーにより開発されたデバイスで実行できます。一貫性のあるユーザーエクスペリエンスと機能について、開発者が活用できるように、マイクロソフトは、Windows Phoneに対する最小限のハードウェア仕様を定義し、必ずそれが実装されるようにしています。ARM7 CPU、DirectX対応のGPU、500万画素以上のカメラ、4点タッチを識別するマルチタッチディスプレイ、標準的なセンサー: GPS、加速度センサー、電子コンパス、近接センサー、照度センサー、3つのハードウェアボタン (戻る、スタート、検索)などを取り決めています。”Mango”にはジャイロセンサーが搭載できます。

Windows Phone 7では、マイクロソフトが大部分のデバイスドライバーのコードを提供しています。このため、デバイスを製造している企業は、デバイスに固有の最小限のコードだけを記述するだけでデバイスドライバーを完成できます。
また、Windows Phone 7では、DirectXやXNAなど、ハードウェアアクセラレーションを活用しています。

Windows Phone 7アプリケーションは、マネージコードによるプログラミングとなり、ハードウェアやOSカーネルへのアクセスはできず、サンドボックス環境での実行になります。他のアプリケーションとは完全に分離した形で実行されるので、他のアプリケーションの動作に直接影響を与えたり、反対に受けたりすることはありません。

プログラミングレイヤーの比較:

概要レベルで比較すると、iPhoneのプログラミングレイヤーとWindows Phone 7のフレームワークは、次のような対応になります。

iOSとWindows Phone 7スタックの比較:

フレームワークレベルからさらに詳細を比較すると、次のような図になります。左側がiPhoneのスタックで、それに対応するWindows Phone 7のフレームワークを右側に並べてあります。

Managed Code only

重要な違いとして、iPhoneでは、Objective-Cを使ったアンマネージ(ネイティブ)コードによる開発ですが、Windows Phone では、C#またはVisual Basicを利用したマネージコード限定のプログラミングになります。Windows Phoneでは、システムやデバイスのハードウェアに対して直接アクセスすることはできません。Windows Phone では.NET 共通言語ランタイム (CLR)でのアプリケーション実行となり、ガベージコレクションが働くので、開発者側でメモリ管理を行ったり、ポインタに注意する必要はありません。

Base Services

Windows Phone 7 Base Class Libraryは、iOSのコアサービスレイヤーにある、Foundation Frameworkで提供されるような機能に相当するものです。基本クラス、コレクション、スレッド、文字列処理、入出力の機能を含んでいます。さらに、ネットワーク用スタックとして、HTTPやWindows Communication Foundation (WCF)を提供しています。WCFは、XMLやSOAPのサービス、XMLデータの転送、シリアル化、デシリアル化やXMLのパース機能を備えています。
”Mango”からはSocketが利用できるようになっています。

Windows Phone 7ではSQLiteのようなローカルデータベースを搭載していませんでしたが、”Mango”からは、SQL CEというアプリケーション内のローカルデータベースを提供します。LINQ とよばれる統合言語クエリの機能で、LINQ to SQLを用いて、オブジェクトの照会や永続化が簡単に行えます。

アプリケーションUIとデバイス統合

メディアやグラフィックスなどアプリケーションのUIについては、Windows Phoneでは、SilverlightまたはXNAを利用できます。

ゲーム用のXNA

XNA frameworkは、元々XBOX用に、ハードウェアアクセラレーションを利用して、 2D や 3D のレンダリング、ビットマップグラフィックに対応したフレームワークです。XNAは、ゲーム用のサービスを提供しており、高いパフォーマンスを要求するゲームを開発する場合には、XNAを用いるといいでしょう。

Silverlight のコントロールとメディア

画面の開発に対して、SilverlightのUIコントロールが利用できます。Storyboardという機能を利用して、タイムラインアニメーションを実行できます。また、マルチタッチに対応しているので、マルチタッチを利用したアプリケーションも開発できます。SilverlightではXAML というマークアップ言語でUIを作成します。画面のイベントに対応するコードは、分離コードと呼ばれるC#またはVisual Basicのコードで実装できます。

画面デザインとXAMLの例 (Visual Studio)

WS000010

Visual Basicによる分離コードの実装 (Visual Studio)

WS000011

Expression Blend によるUIデザイン

WS000012

Silverlight はWindows Media, H.264/AAC, MP3など様々なコーデックを内蔵しており、オーディオやビデオを高いパフォーマンスで再生します。Microsoft Media Platform: Player Frameworkを利用すると、高機能なメディアプレイヤーを簡単に実装できます。

上のメディアを再生するのに記述したXAMLの例

<Core:SMFPlayer>
<Core:SMFPlayer.Playlist>
<Media:PlaylistItem DeliveryMethod="AdaptiveStreaming" MediaSource="https://ecn.channel9.msdn.com/o9/content/smf/smoothcontent/bbbwp7/big buck bunny.ism/manifest"/>
</Core:SMFPlayer.Playlist>
</Core:SMFPlayer>

ベクトルグラフィック、ラスター(ビットマップ)グラフィック両方をハードウェアアクセラレーションを利用してサポートします。ファイルシステムについては、分離ストレージというサンドボックス型のストレージ領域をアプリケーションごとに独立して、提供します。このため、分離ストレージへのアクセスは他のアプリケーションにまったく影響がありません。

Windows Phone フレームワーク

Windows Phone フレームワークは、カメラ、ロケーション、加速度センサー、などさまざまなセンサーをサポートします。

アプリケーション内でHTMLを利用したい場合は、Internet Explorerをベースとしたブラウザーコントロールを利用できます。”Mango”からは、Internet Explorer 9のエンジンとなり、HTML5のコンテンツを高速にレンダリングします。
Internet Explorer Test Drive モバイル版 https://ie.microsoft.com/testdrive/mobile/

HTML5からロケーションセンサーを利用することができます。

例: W3C Geolocation APIをInternet Explorer 9で利用
https://ie.microsoft.com/testdrive/mobile/HTML5/Geolocation/Default.html

WS000014

Microsoft Push Notification Serviceというプッシュ通知用のサービスを提供しているので、クラウド・Webサービス側からWindows Phoneに対してプッシュでデータを配信できます。”Mango”では、マルチタスクに対応し、ファイル転送や音楽再生、スケジュール実行などバックグラウンドでの処理を利用できます。


以降の内容についても、引き続きご紹介したいと思います。

Chapter 2: User Interface Guidelines

Chapter 3: Developer and designer tools introduced to iPhone application developers

Chapter 4: C# programming introduced to Objective-C programmers

Chapter 5: Image Format Considerations in migration of iPhone applications to Windows Phone 7

Chapter 6: Application Lifecycle Differences Between Windows Phone 7 and the iPhone

Chapter 7: iPhone to Windows Phone 7 Application Preference Migration

Chapter 8: Introduction to Windows Phone 7 Notifications for iPhone Developers