(連載) 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="http://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 モバイル版 http://ie.microsoft.com/testdrive/mobile/

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

    例: W3C Geolocation APIをInternet Explorer 9で利用
    http://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

    Skip to main content