特集:Windows Phone 7.5 Refresh概説

SDKが正式公開されたWindows Phone “Tango”とは

山口 健太(Windows Phoneブログ「ななふぉ」管理人)
2012/04/11
Page1 Page2

“Tango”対応のSDKを解説

Windows Phone SDK 7.1.1 Updateとは

 “Tango”に対応する最新のWindows Phone SDKが、「Windows Phone SDK 7.1.1 Update」(以下、「7.1.1 Update」と略す)です。

 このSDKはMWCにおけるLumia 610の発表に合わせてCTP版が公開されましたが、3月26日付で正式版となっています(ダウンロードはこちら)。主な内容は、256MB端末向けアプリの開発に対応した点ですが、ほかにも正式サポートではないものの「Windows 8 Consumer Preview」上でのWindows Phoneアプリの開発に対応しています。

 インストール方法について、すでにWindows Phone SDK 7.1をインストールしている環境には、7.1.1 Updateを実行するだけで問題ありません。一方、ゼロから環境を構築する場合は、まずWindows Phone SDK 7.1をインストールしてから、7.1.1 Updateをインストールする必要があります。

 なお、プロジェクト作成時に「Windows Phone OS 7.1」(=Windows Phone 7.5)か「Windows Phone OS 7.0」(=Windows Phone 7)を選択する点(次の画面を参照)は以前から変わっていません。

“Mango”と“Tango”のプロジェクト作成時のOS選択は同じ

2つのエミュレータ

 Windows Phone SDK 7.1.1 Updateには、2種類のエミュレータが付属します。従来のWindows Phoneと同じメモリが512MBのエミュレータと、“Tango”が新しく対応するメモリが256MBのエミュレータです。OSのビルド番号はどちらも「8773」なので、両者の違いはメモリ容量のみとなります。

 それでは、次に起動方法について説明します。

エミュレータを単独で実行する場合

 Windowsの[スタート]メニュー(の[すべてのプログラム])には[Windows Phone SDK 7.1]の下に[Windows Phone Emulator(JA)]というショートカットが登録されています(次の画面を参照)。

[スタート]メニューに登録されているエミュレータへのショートカット

 このショートカットは次のような実行ファイルとオプションを指しています。

"C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\XDE Launcher\XdeLauncher.exe" "Windows Phone 7" "Windows Phone Emulator - 512 MB(JA)"

 このショートカットを実行すると、512MBのエミュレータが立ち上がります。

 256MBのエミュレータを明示的に立ち上げたいときは、次のようなコマンドを実行します。

"C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\XDE Launcher\XdeLauncher.exe" "Windows Phone 7" "Windows Phone Emulator - 256 MB(JA)"

 頻繁に256MBのエミュレータを起動する場合は、このコマンドをショートカットとして登録しておくとよいでしょう。

Visual Studioからデバッグ実行する場合

 Windows Phone SDK 7.1.1 Updateをインストールした環境では、Visual Studio 2010のデバッグ実行にも多少の変更が加わっています。

 これまでデバッグ実行時には、Windows Phone Device(=実機)か、Windows Phone Emulatorかを選択することができました。7.1.1 Update適用後は、次の画面に示すように、この選択肢が「Windows Phone Device」「Windows Phone Emulator - 512 MB(JA)」「Windows Phone Emulator - 256 MB(JA)」の3種類に増えています。

Visual Studioでデバッグ実行時、実機以外に512MBと256MBのエミュレータを選択できる

256MB端末かどうか調べるには?

 256MB端末に対応したアプリを開発するためには、メモリの使用量に注意を払う必要があります。Marketplaceの最新の規約では、256MB端末で動作するためにはメモリの使用量を90MBまでに抑えなければならない、と定められています。

 そこで、まずは現在の実行環境が256MB端末かどうかをプログラムで調べる方法をご紹介します。

 MSDN(英語)によると、DeviceExtendedPropertiesクラス(Microsoft.Phone.Info名前空間)のGetValueメソッドを使って、「ApplicationWorkingSetLimit」という名前のプロパティ値を取得するという方法が紹介されています。具体的には、下記のようなコードになります。

long result = (long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");

 この戻り値が90MB(=94371840bytes)より小さい場合、256MB端末であると判断できます。

 もしWindows Phone OSが最新バージョンにアップデートされていない場合、この操作自体が「ArgumentOutOfRangeException」という例外をスローします。古いバージョンのOSを搭載しているのは既存のWindows Phone端末(512MB端末)のみなので、この場合は512MB端末と判断できます。

 実際にエミュレータでApplicationWorkingSetLimitプロパティの値を取得してみたところ、512MBエミュレータでは約276MB、256MBエミュレータでは約57MBとなりました。

OutOfMemoryExceptionに注意

 実際に512MBと256MBの端末では、使用できるメモリ量にどれくらいの差があるのでしょうか。

 検証のため、ランダムなバイト配列を生成し、次々とメモリに保持していくというコードを実行してみました。すると、512MBエミュレータでは約276MB、256MBエミュレータでは110MBのメモリを使用した時点で、OutOfMemoryException(例外)が発生しました(次の画面を参照)。

メモリを使い過ぎるとOutOfMemoryException(例外)が発生

 OutOfMemoryExceptionは、名前のとおりメモリが不足しているときにスローされる致命的な例外です。致命的な例外のため、OutOfMemoryExceptionを捕捉してcatchブロックでメモリを解放する、といった回避策は採れません。

 このことから、アプリの設計段階からメモリの使用量に気を配り、OutOfMemoryExceptionが発生しないように注意する必要があるといえます。

 プログラム・コードから現在のメモリ使用量を確認するには、DeviceExtendedPropertiesクラスのGetValueメソッドを使って、「ApplicationCurrentMemoryUsage」プロパティの値を取得します。また、アプリが使用するメモリ量の推移を調べるには、Visual Studioの(メニューバーから)[デバッグ]−[Windows Phone パフォーマンス分析の開始]で起動できるプロファイラ(次の画面を参照)を用いるとよいでしょう。

Windows Phone SDK標準のプロファイリング・ツール(「MSDN: Windows Phone のパフォーマンス分析」より引用)

アプリを512MB専用にするには

 アプリの構造によっては、256MB端末への対応が難しい場合があります。例えば、すでに512MB端末を前提に作り込んでおり、いまさら変更が利かないというケースもあるでしょう。

 このような場合、「512MB端末専用」のアプリとしてMarketplaceに公開することもできます。具体的には、WMAppManifest.xmlファイル(=Windows Phoneのアプリケーション・マニフェスト・ファイル)に、<App>要素の子要素として、以下のような<Requirements>要素を、<Capabilities>要素のすぐ下に追加します。

</Capabilities>

<Requirements>
  <Requirement Name="ID_REQ_MEMORY_90" />
</Requirements>
WMAppManifest.xmlファイルへの<Requirements>要素の追加

 「ID_REQ_MEMORY_90」とは、このアプリが90MB以上のメモリを必要とすることを意味しています。この状態でMarketplaceに公開されると、(前のページの「512MB端末専用のアプリを256MB端末でダウンロードすることはできない」という画面例で示したように)このアプリは256MB端末からダウンロードできなくなります。

256MBに対応すべきかどうか?

 アプリを256MB端末に対応させるかどうかの判断は、技術的な問題以外にも、マーケティングや販売戦略も考慮する必要があるでしょう。

 現時点で発表されている256MB端末はNokiaのLumia 610のみで、これは日本での発売予定もありません。そのため日本市場だけを考えるのであれば、当面対応する必要がないともいえます。

 しかし中国をはじめとする新興国では、低価格のWindows Phone端末が爆発的に普及する可能性を秘めています(次の写真は中国向けのLumiaの発表の模様)。これまでWindows Phoneは世界的にシェアが伸び悩んでいるため、低価格端末の投入により、台数ベースでは256MB端末が512MB端末を上回っても不思議ではないといえます。

中国でNokia 800Cと610Cを発表するNokiaのStephen Elop氏

 そのため、世界進出を狙うアプリを新たに開発するのであれば、最初から256MB端末で動作することを前提に設計することをお勧めします。それ以外の場合には、256MB端末の売れ行きを見てから対応するというのも1つの手でしょう。

 このように、“Tango”と256MB端末の登場により、Windows Phoneアプリを作るうえで悩ましい問題が増えてしまいました。しかし低価格端末が大きなマーケットを開拓してくれれば、開発者にとってチャンスであることも事実です。新しい市場へWindows Phoneがどのように展開していくのか、注目しましょう。end of article

 

 INDEX
  特集:Windows Phone 7.5 Refresh概説
  SDKが正式公開されたWindows Phone “Tango”とは
    1.Windows Phone “Tango”とは/“Tango”の新機能解説
  2.開発者向け:“Tango”対応のWindows Phone SDK 7.1.1 Updateを解説


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間