2012年12月14日金曜日

シミュレーションダッシュボードについて

「Windows Phone SDK 8.0 Advent Calendar 2012」2回目の登場です。
今回、8.0にバージョンアップして開発サポート支援で色々と機能が追加されています。その1つが「シミュレーションダッシュボード」です。

このシミュレーションダッシュボードは、エミュレーターの通信状況などを文字通りシミュレーションしてくれるツールです。
Windows Phone アプリのプロジェクトを開くと、Visual Studioの「ツール」メニューにシミュレーションダッシュボードが追加されます。
SLDash01

シミュレーションダッシュボードを選択すると、ソリューションマネージャーと同じウィンドウにシミュレーションダッシュボードが追加されます。単独ウィンドウにするとこんな感じになります。
SLDash02

「ネットワークシミュレーションを有効にする」にチェックを入れると、自動的にエミュレーターが起動します。起動するエミュレーターはデバッグで選択しているエミュレーターになります。
ネットワークシミュレーションは文字通り受信強度のシミュレーションをしてくれますが、基本的に使いそうなのは「ネットワークなし」かそれ以外だけでしょうか。IEで確認してみましたが、有線ネットワークにつないでいると3Gや4Gの反応の違いがいまいち分かりませんでした。

「ロック画面」は文字通りロック画面を表示するかどうかです。わざわざエミュレーターで操作せずとも簡単にロック画面にできるのは嬉しい機能ですね。

そして、「アラームのトリガー」。これをクリックすると、以下の画面のようにサンプルのアラーム通知が送信されます。アプリケーションの起動中に割り込みでアラームが発生した時の挙動のチェックに有効ですね。
SLDash03

細かいところで追加されているSDKの機能を使って、効果的な開発をしてくださいね。

2012年12月9日日曜日

Windows Phone SDK 8.0のストアテストキットに関して

今年もAdvent Calendarの時期になりました。
1年があっという間に終わりに近づいているというのは感慨深いものですね。

さて、今年のAdvent CalendarもWindows Phone SDKのネタでいきましょう。昨年は、サードパーティー製のコントロールのお話をしました。
Windows Phone SDK 8.0向けのサードパーティー製コントロールはまだ販売されていないので(それでも今まで販売されているコントロールは問題なく使えるみたいです)、今回はストアテストキットを話題にしましょう。

さて、Windows Phone SDK 8.0になって結構SDKの構成も変わっていますが、その中でも目を引くのは以下の項目かなと思います。

  • Direct 3D/C++でアプリケーションを作成できるようになった。
  • Windows Phone 8のエミュレーターが新しいHyper-Vで動作するようになった。
  • SDKがWindows 8 Pro/Enterpriseでしか利用できなくなった。

上記のような変更の他にも以前は「マーケットプレイステストキット(Marketplace Testkit)」という名称で利用されてきたアプリテストキットが「ストアテストキット(Store Testkit)」と名称が変更されて、チェックする内容にも変更が出ています。

自動テスト

自動テストですが、基本的なチェック内容に変更はありません。XAPファイルのパッケージ要件(今回もアプリケーションのアイコンはしっかりとチェックされます)とWindows Phoneストアで表示するためのタイル画像やスクリーンショットのチェック、アプリケーションのパフォーマンス検証もしっかり入っています。
ただし、今回からは新規登録時にはWindows Phone 8用にスクリーンショットが必要になりました。以前ですと、WVGA(800×480)のみでよかったスクリーンショットなどですが、以下の通りに変更されています。

  • ストアタイル用の画像(200×200 → 300×300)
  • スクリーンショットWVGA(800×400)
  • スクリーンショットWXGA(1280×768)
  • スクリーンショット720P(1280×720)
手動テスト

手動テストもテストケースが61に変更されています。一応、以前のバージョンのテストキットに関しては以前ポストした内容を確認してください。

Marketplace Testkitを活用しよう!

内容はほとんど変わっていませんが、テスト名が若干変更されていますので、英語のテスト名、日本語テスト名、テストの説明を今回も載せておきます。今回も翻訳はBing Translatorをベースにテスト内容の項目は英辞郎などを利用して意訳させてもらっています。
各項目の「詳細…」をクリックすると、App certification requirementsのリンクに飛びますので、そこで詳細な内容を確認することができます。
※ただし、すべて英語のページとなっていますのでご注意。

テスト名(英語) テスト名(日本語) テストの説明(日本語概訳)
Required app images 必須アプリケーション画像 アプリケーションのショートカットとなるタイル画像が適切なものになっているか確認します。
※デフォルトのタイル画像のままだと審査に落ちます。
Multiple devices support 複数のデバイスサポート 複数のデバイスで起動、終了などの動作が問題なく行われるかの確認をします。
App closure アプリケーションの終了 アプリケーション終了時の動作を確認します。
App responsiveness アプリケーションの応答性 アプリケーションが既定の時間で応答するかどうかの確認をします。
App responsiveness after being closed 終了時のアプリケーションの応答性 終了時にアプリケーションが既定の時間で終了するかなどの動作を確認します。
App responsiveness after being deactivated 非アクティブ後のアプリケーションの応答性 非アクティブ時にアプリケーションが既定の時間で非アクティブ化するかなどの動作を確認します。
Back button: previous pages バックボタン:前のページ バックボタンで前のページに遷移するか確認します。
Back button: first screen バックボタン:最初のページ 最初のページでバックボタンを押すとアプリケーションが終了するか確認します。
Back button: context menus and dialogs バックボタン:コンテキストメニューとダイアログ コンテキストメニューやダイアログ表示中にバックボタンを押した時の動作を確認します。
Back button: games バックボタン:ゲーム ゲームアプリケーションの場合のバックボタンの動作を確認します。
※ゲームアプリケーション以外は不要。
Trial apps 試用アプリ 試用アプリの動作を確認します。
※試用機能を組み込んでいる場合のみ。
Phone calls 電話着信 アプリケーション動作中に電話着信が行われた場合の影響を確認します。
SMS and MMS messages SMSとMMSメッセージ アプリケーション動作中にSMS/MMSメッセージを受信したときの影響を確認します。
App responsiveness with incoming phone and messages 電話着信やメッセージ受信時のアプリケーション応答性 電話着信やSMS/MMSメッセージを受信したときのアプリケーションの応答性を確認します。
Malicious software screening 悪意あるソフトウェアのスクリーニング 悪意あるソフトウェアが含まれていないか確認します。
Language validation 言語の検証 アプリケーションの紹介やUIの内容などが公開予定の国の言語と合っているか確認します。
Content and themes コンテンツとテーマ システムの背景やテーマを変更してもアプリケーションが見やすいものになっているか確認します。
Thechnical support information テクニカルサポート情報 アプリケーションの名称、バージョン情報やテクニカルサポートの情報がわかりやすい場所に配置されているか確認します。
Location aware app 位置認識アプリケーション 位置情報サービスを有効にして、位置情報をアプリケーションが取得できているか確認します。
Configurable functionality 構成可能な機能 アプリケーションからトースト通知などの設定が行えるか確認します。
Toast notification opt-in トースト通知のオプトイン トースト通知を受信することに対する明示的なアクセス許可を要求しているか確認します。
Minimize power usage when running under a locked screen ロック画面中の電力消費 アプリケーションを起動した後にデバイスをロックしたときにアプリケーションが停止しているか確認します。
Audio playback and battery life under a locked screen ロック画面中のオーディオ再生とバッテリー寿命 音楽ファイルを再生している間にデバイスをロックしたときのバッテリー寿命を確認します。
Music + Video Hub app functionality ミュージック+ビデオハブ機能 アプリケーションに組み込まれた機能が音楽、ビデオメディアに関連しているか確認します。
Music + Video Hub History and Now Playing list functionality ミュージック+ビデオハブのヒストリーと再生中リストの機能 ミュージック+ビデオハブの音楽またはビデオの履歴、または再生リストの一覧をタップしたときの動作を確認します。
Music + Video Hub History list updates

ミュージック+ビデオハブの履歴リスト更新

アプリケーションで音楽またはビデオを再生した後にミュージック+ビデオハブの履歴が更新されているか確認します。

Music + Video Hub New list updates ミュージック+ビデオハブ新規リスト更新 アプリケーションで音楽タグなどのオブジェクトを新規作成したときにミュージック+ビデオハブに反映されるか確認します。
Music + Video Hub containers ミュージック+ビデオハブコンテナー アプリケーション内でビデオや音楽のメディアコンテナーを作成したときにそのコンテナーの内容が更新されているか確認します。
Music Video Hub content ミュージック+ビデオハブコンテンツ 不要なコンテンツがミュージック+ビデオハブに含まれていないか確認します。
Music Video Hub iconography rules ミュージック+ビデオハブ画像ルール ミュージック+ビデオの画像などの表示が規定されたルール通りに表示されているか確認します。
Initial launch functionality 初期起動機能 音楽再生中にアプリケーションを起動するときに、停止させたりしないか確認します。
Configurable functionality 構成可能な機能(メディア機能) アプリケーション起動中に音楽プレイヤーの音量等を設定できることを確認します。
Apps that play a video or audio segment ビデオまたはオーディオの部分を再生するアプリケーション アプリケーションが音楽再生のレジューム状態に影響を与えていないことを確認します。
SoundEffect and backgraound music 効果音とBGM 音楽再生中にアプリケーションを起動したときにBGMや効果音が重ならないか確認します。
Photo-editing apps: functionality 写真加工アプリ:機能 アプリケーションがPictureハブの写真を加工できるか確認します。
Photo-editing apps: launch behaviors 写真加工アプリ:起動反応 Pictureハブの【アプリケーション】メニューからアプリケーションが起動できるか確認します。
Photo-editing apps: photo manipulation 写真加工アプリ:写真操作 Pictureハブから選択した写真をアプリケーションで操作できるか確認します。
Photo-sharing apps: functionality 写真共有アプリ:機能 アプリケーションから写真がアップロードできるか確認します。
Photo-sharing apps: launch behaviors 写真共有アプリ:起動反応 Pictureハブの【共有】メニューからアプリケーションが起動できるか確認します。
Photos Hub apps: Primary app functionality Pictureハブアプリ:既定のアプリケーション機能 アプリケーションの機能がカメラまたは写真に関連していることを確認します。
User initiated background audio ユーザー主導のバックグランド再生 バックグランド再生できるアプリケーションは、UI操作によりバックグラウンド再生を開始できるか確認します。
Stopping background audio バックグラウンド再生の停止 バックグランド再生できるアプリケーションは、UI操作によりバックグラウンド再生を停止できるか確認します。
Universal volume control commands ボリューム操作 ボリューム操作に影響がないことを確認します。
Universal volume control strings ボリューム表示エリア 音楽再生中にアプリケーションを終了しても、音楽が再生を続け、ボリューム表示部に音楽のメタデータが表示されることを確認します。
Background audio streaming agent バックグラウンドオーディオストリーミングエージェント アプリケーションのストリーミング再生が正しいデータとメタデータを管理できているか確認します。
Status of background transfers バックグラウンド転送の状態 バックグラウンド転送の状態を確認できるUIがあることと、UIで操作できることを確認します。
Canceling background transfers バックグラウンド転送のキャンセル バックグランド転送がキャンセルできることを確認します。
Navigation protocol turn by turn navigation ナビゲーションプロトコルによるナビゲーション指示 ナビゲーションプロトコルによるリアルタイムナビゲーションが行われているかを確認します。
Navigation protocol information modification ナビゲーションプロトコルによる情報更新 ナビゲーションプロトコルによるナビゲーションの開始位置と目的地の情報が更新されるか確認します。
Navigation protocol latitude and longitude ナビゲーションプロトコルの緯度経度 ナビゲーションプロトコルによる緯度経度の動作を確認します。
Navigation protocol app launch ナビゲーションプロトコルアプリを起動 ナビゲーションに必要な他のアプリケーションがリアルタイムナビゲーションを開始する前に起動できているか確認します。
Navigation protocol app launch delay ナビゲーションプロトコルアプリ起動遅延 ナビゲーションプロトコル経由であなたのアプリケーションが起動される場合、ユーザー認証や情報の識別が必要でない限り、リアルタイムでナビゲーションが行われているか確認します。
Rich media apps: functionality リッチメディアアプリ:機能 フォト ビューアーで開くリンクを使用して写真を開いたときに、アプリはすぐに特徴的な表示や編集に必要なエクスペリエンスを読み込むことができているか確認します。
Lens apps: functionality レンスアプリ(カメラアプリ):機能 レンズピッカーから起動された場合、すぐにアプリはアプリファインダーを表示するのを確認します。
また、ポリシーまたは資格認証の確認が行われた後、すぐにアプリのアプリファインダーが表示されるか確認します。
Call coordinator registration コールコーディネーターの登録 VoIPをサポートしているアプリケーションがVoipCallCoordinatorクラス以外のものでVoIPを扱おうとしていないか確認します。
Audio-only VoIP calls 音声のみのVoIP通話 VoIP呼び出しのオーディオボタンをタップした場合、アプリが相手のユーザーのビデオフィードを表示させることができているか確認します。
Raw push notifications for VoIP apps VoIPアプリケーション用のRawプッシュ通知 VoIPの着信時に必ずRawプッシュ通知のtype 4を使用しているか確認します。
VoIP ringtone duration VoIP着信音の時間 VoIPの着信音が5~120秒間に収まっているか確認します。
VoIP ringtone file size VoIP着信音のファイルサイズ VoIPの着信音のファイルサイズが2MBいないか確認します。
※背景が黄色になっている項目は、Windows Phone 8用として今回のテストキットで追加された項目です。

あなたのWindows Phone アプリの開発の一助になれば幸いです。

2012年2月13日月曜日

ApplicationBarの簡単なアイコン設定

久しぶりの投稿です。

今回はApplilcationBarのアイコン設定(ApplicationBarIconButton)を簡単に行うためのTipsです。
ApplicationBarはスタンダードなアプリを作成するときに、テンプレートで用意されています。ただし、使う必要がないこともあるのでデフォルトではコメントになっています。
プロジェクトを作成すると表示される「MainPage.xaml」では以下のようになっています。

    <!--ApplicationBar の使用法を示すサンプル コード-->
<phone:PhoneApplicationPage.ApplicationBar>
<
shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<
shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
<
shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
<
shell:ApplicationBar.MenuItems>
<
shell:ApplicationBarMenuItem Text="MenuItem 1"/>
<
shell:ApplicationBarMenuItem Text="MenuItem 2"/>
</
shell:ApplicationBar.MenuItems>
</
shell:ApplicationBar>
</
phone:PhoneApplicationPage.ApplicationBar>
まずはApplicationBarのアイコン仕様を把握しておきましょう。


  • アイコンサイズは48×48ピクセル。

  • 画像フォーマットはPNG推奨(透過を利用するので)。

  • アイコンの外枠は不要。ApplicationBarが標準で描画してくれる。

  • ApplicationBarに表示できるアイコンは4つまで。

  • テーマを固定しなければ、darklight用に両方のテーマ別にアイコンを用意する必要がある。

今回は特に4番目のテーマ別に画像を配置する方法を把握しておきましょう。これを覚えておけば、気軽にApplicationBarにアイコンを置きたくなるかもしれません。


Windows Phone SDKには、ApplicationBar用のアイコンのサンプルが用意されています。
64bit環境の人は次のようなフォルダに格納されています。
C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Icons
このフォルダには、「dark」「light」「vector」とフォルダがありますが、利用するのは「dark」「light」の2つのフォルダです。


image


上図は、フォルダの中身ですが色々なアイコンが用意されていますので気に入ったアイコンをプロジェクトにコピーします。今回は、以下の4つを使うことにしました。あと、ファイル名が長かったのでコピー後に変更しました。
appbar.feature.camera.rest.png → (変更後) camera.png
appbar.feature.email.rest.png → (変更後) email.png
appbar.feature.search.rest.png → (変更後) search.png
appbar.feature.settings.rest.png → (変更後) settings.png


さて、コピーするフォルダですが次のような形でソリューションのフォルダ配下に「dark」と「light」のフォルダを作成してください。これが今回のTipsの一番のキモになります。
次に作成した「dark」「light」のフォルダにそれぞれ使用する画像ファイルを同じファイル名でコピーします。
その後は、ソリューションに「追加→既存の項目」から追加します。


今回のサンプルの場合は、次のように「Images」フォルダ配下に置くよう構成にしました。
image


コピーして、ソリューションに追加した後は、ソリューションに追加したアイコンファイルのプロパティを変更しておきます。
追加した直後だと、大体ビルドアクションが「リソース」として登録されているので「コンテンツ」に変更し、出力ディレクトリにコピーの設定は「新しい場合はコピーする」に変更しておきましょう。
image


あとはXAMLを修正するだけです。とりあえず、XAMLを以下の通りに修正して実行してみてください。
IconUriプロパティに「dark」フォルダにあるアイコンファイルのパスを入れてください。

    <phone:PhoneApplicationPage.ApplicationBar>
<
shell:ApplicationBar IsVisible="True" IsMenuEnabled="False">
<
shell:ApplicationBarIconButton IconUri="/Images/dark/camera.png" Text="Camera"/>
<
shell:ApplicationBarIconButton IconUri="/Images/dark/email.png" Text="e-mail"/>
<
shell:ApplicationBarIconButton IconUri="/Images/dark/search.png" Text="Search"/>
<
shell:ApplicationBarIconButton IconUri="/Images/dark/settings.png" Text="Settings"/>
</
shell:ApplicationBar>
</
phone:PhoneApplicationPage.ApplicationBar>
実行すると、テーマ別で次のようになっているはずです。
imageimage






XAMLでは「dark」フォルダのファイルしか指定していませんが、テーマが「light(白)」だと、「light」フォルダ側のアイコンファイルが自動的に使用されています。
通常、わざわざC#のコードでアイコンの変更の処理とかを書く必要はありません。
※状態によってアイコンの機能を切り替える必要がある場合はこの限りではありません。


今回紹介したTipsは以下になります。



  • アイコンを用意するのが面倒なときはSDKのアイコンを利用しよう。

  • アイコンを用意するときは、外枠を描いておく必要なし。

  • アイコンは「dark」と「light」のフォルダに同じファイル名で格納しておこう。

  • XAMLのアイコンファイルの指定は「dark」フォルダのファイルパスだけでOK。

みなさんのWindows Phone アプリの開発の一助になれば幸いです。