前回はエミュレーターで動かしてきたわけですが、実際のWindows Phoneのハードウエアで動かすにはどうしたらいいでしょうか。まず、Windows PhoneのハードをUSBケーブルなどで開発環境(Windowsパソコン)に接続し、インストールされたデバイスドライバーがハードを認識、さらにZuneが動作していることが必要です。

開発者登録が必要

図15●Windows Phoneデベロッパー向けサイト「APP HUB」でユーザーアカウントを作成する。1年間で9800円が必要
図15●Windows Phoneデベロッパー向けサイト「APP HUB」でユーザーアカウントを作成する。1年間で9800円が必要
[画像のクリックで拡大表示]

 次に、Windows Phone(とXbox 360)のデベロッパー(開発者)登録をしなければなりません。「APP HUB」(http://create.msdn.com/)というサイトでメンバーシップを購入して登録します(図15)。1年間のメンバーシップが9800円です。

 続いて、Windowsの「スタート」メニューから「すべてのプログラム」→「Windows Phone Developer Tools」→「Windows Phone Developer Registration」を選びます。このプログラムで、Windows Phoneのハードウエアを、開発とデバッグのための機器として登録できます。図16は、先ほどメンバーシップを購入したWindows Live IDとそのパスワードを入力し、Windows Phoneのハードウエアを登録した様子です。「Your phone has successfully been registerd.」と表示されています。ハードウエアは1アカウントにつき3台まで登録できます。

図16●APP HUBのアカウントを取得すれば、この画面で特定のWindows Phoneを開発に使用する登録ができる
図16●APP HUBのアカウントを取得すれば、この画面で特定のWindows Phoneを開発に使用する登録ができる
[画像のクリックで拡大表示]

 ここまで来たら、図7のドロップダウンリストで「Windows Phone 7 Device」を選び、Windows Phoneハードウエアをスタート画面にして、Visual Studioの「Start Debugging」を選んでみてください。あなたの作ったプログラムが、Windows Phoneのハードウエアで動くはずです。


横長画面に対応するための設定

図17●エミュレーターの上から3番目のアイコンを押して横長表示にした。アプリケーションの画面は回転しない
図17●エミュレーターの上から3番目のアイコンを押して横長表示にした。アプリケーションの画面は回転しない
[画像のクリックで拡大表示]
図18●PhoneApplicationのSupportedOrientationsを変更する
図18●PhoneApplicationのSupportedOrientationsを変更する
[画像のクリックで拡大表示]
図19●アプリケーションで横長(Landscape)表示ができるようになった
図19●アプリケーションで横長(Landscape)表示ができるようになった
[画像のクリックで拡大表示]

 Windows Phoneは、通常は図1のように縦長の状態(Portrait)で使います。機器を回転させると、横長(Landscape)画面にして使うこともできます。エミュレーターもその機能を持っています。エミュレーター右側に出るアイコンの上から3番目と4番目を使うと横長画面に切り替えられます。ただ、先ほど作ったプログラムは、横長になっても画面が横長に変化しません(図17)。

 改良してみましょう。MainPage.xamlを表示し、XAMLコードの一番上にある「phone:PhoneApplicationPage」で始まる行をクリックして選択します。すると、プロパティウィンドウにPhoneApplicationPageのプロパティ一覧が出てくるでしょう。図18のように、SupportedOrientationsプロパティを、PortraitOrLandscapeに設定します。これで保存して実行すると、図19のように横長画面で正しく表示されるようになりました。

 こう書くと、「縦長横長対応は簡単だ」と思われるかもしれません。でも実際は、画面がもっと複雑なので、こんなに簡単にはいきません。画面上のコントロールの、HorizontalAlignment、VerticalAlignment、Height、Widthといったプロパティを適切に設定して(StretchやAutoの設定が鍵です)、苦労して縦長横長対応を果たすことになります。縦長横長対応は必須ではないと考えた方がよいでしょう。例えば、図1の「スタート」画面は縦長のみの対応となっています。