SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Windowsストアアプリケーション

ユニバーサルWindowsアプリケーションの概要と特徴

速習 Windowsストアアプリケーション 番外編 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

プロジェクトを眺めてみよう

 ユニバーサルWindowsアプリケーションのテンプレートは「空のアプリケーション」と「ハブアプリケーション」の2つがあります。

2つのプロジェクトテンプレートが選択できる
2つのプロジェクトテンプレートが選択できる

 それぞれ2つのテンプレートを作成して、ユニバーサルWindowsアプリケーションの特徴を見てみましょう。

新しいアプリケーション

 これまででもお馴染みの一番シンプルなテンプレートです。画面は1ページしかなく、画面には何もコントロールが配置されていない状態です。

ファイル構成

 「新しいアプリケーション」テンプレートを作成した直後のフォルダ構成は以下のようになっています。

空のアプリケーションの初期ファイル
空のアプリケーションの初期ファイル
アプリ名.Windows(Windows 8.1)プロジェクト

 まずは「アプリ名.Windows(Windows 8.1)」という名前のプロジェクトがあります。これはWindows 8.1向けのストアアプリのプロジェクトです。

 ストアアプリの同名「空のアプリケーション」でお馴染みのMainPage.xamlやPackage.appxmanifestファイル、Assetsフォルダなどがあります。しかし、プログラムのエントリーポイントとなるApp.xamlが存在しません。

アプリ名.WindowsPhone(Windows Phone 8.1)プロジェクト

 こちらはWindows Phone 8.1向けのプロジェクトです。

 Windows Runtimeとの共通化が進んだというだけあって、ファイル構成はほとんど同じです。設定ファイルもWindowsストアアプリと同じPackage.appxmanifestファイルとなっています。こちらもエントリーポイントとなるApp.xamlが存在しません。

アプリ名.Sharedプロジェクト

 WindowsストアアプリとWindows Phoneとでコードや素材を共有するためのプロジェクトです。

 このプロジェクト内のソースコードや画像はWindowsストアアプリ、Windows Phoneの2つのプロジェクトで利用することができます。Sharedプロジェクトの中に先ほど見つからなかったApp.xamlがあります。

App.xaml.cs

 このファイルにはユニバーサルWindowsアプリケーションを作成する上でのヒントがいくつかあります。

 まずは何よりこのファイルが共通で利用できるSharedに配置されている点。App.xaml.csにはアプリケーションの基本的な動作(初期化処理)や、OnSuspending(アプリが中断状態に移行するタイミングで呼ばれる)などのライフサイクルに関連するイベントハンドラーが記述できます。これはWindowsストアアプリとWindows Phoneがライフサイクルレベルでも共通部分が多いことを表しています。

 それでもWindowsストアアプリの場合だけ実行したい処理や、Windows Phone固有の処理が出てくると思います。その場合は以下のようなifディレクティブを記述します。

Windows Phoneの場合のみに実行
#if WINDOWS_PHONE_APP
        private TransitionCollection transitions;
#endif

 逆にWindowsストアアプリのみ呼び出したい場合は「WINDOWS_APP」を指定します。

Windowsストアアプリの場合のみに実行
#if WINDOWS_APP 
    System.Diagnostics.Debug.WriteLine("Windowsストアアプリのみ");
#endif

実行してみる

 Windowsストアアプリ側をデバッグしたい(もしくはその逆でWindows Phoneアプリをデバッグしたい)場合は、ソリューションエクスプローラーのデバッグしたいプロジェクト名の上でマウスの右クリックから「スタートアッププロジェクトに設定」を選択します。

スタートアッププロジェクトに設定
スタートアッププロジェクトに設定

ハブアプリケーション

 前回の記事で、Windowsストアアプリ8.1ではハブアプリケーションがプロジェクトテンプレートに追加されたということを紹介しました。ユニバーサルWindwosアプリケーションでもハブアプリケーションのプロジェクトテンプレートが選択でき、ファイル構成も非常に似通っています。

ファイル構成

各プロジェクト

 アプリ名.Windowsプロジェクト、アプリ名.WindowsPhoneプロジェクト、アプリ名.Sharedプロジェクトがソリューション内に存在するのは空のアプリケーションと同様です。

 ただし今回はすべてのプロジェクトにAssetsフォルダが存在します。このようにWindowsストアアプリ固有の素材、Windows Phone固有の素材、そして共通の素材というように分けることができます。

HubPage.xaml

 HubPage.xamlではHubコントロールを利用して、複数のエリア(セクション)に区切ってコントロールを配置しています。

ストアアプリのHubコントロール
ストアアプリのHubコントロール

 Windows PhoneでHubコントロールを用いると、従来のパノラマのような表現ができます。

Windows PhoneのHubコントロール
Windows PhoneのHubコントロール

 このように表示は異なりますが、XAMLファイルの記述やコードビハインド(HubPage.xamlに対するHubPage.xaml.csという対になるcsファイル)の記述は驚くほど共通化されていることに驚くことでしょう。

SharedプロジェクトのCommonフォルダ

 前回の記事でも紹介しましたが、Windowsストアアプリ8.1で空のアプリケーション以外の複数ページ構成のプロジェクトテンプレートを選択した場合、Commonフォルダに色々なユーティリティクラスが最初から用意されています。

 ユニバーサルWindowsアプリケーションのSharedプロジェクトにもCommonフォルダが存在し、その中身は驚くほど共有化されています。

SharedプロジェクトのCommonフォルダ
SharedプロジェクトのCommonフォルダ

 例えば、ページ遷移などを補助するNavigationHelper.csは、Windows Phone固有のハードウェアの戻るボタンを押された場合のイベントハンドラーがWindows Phone固有の処理として記述されているなど違いはありますが、ほとんどが共通化されています。

共通化できない部分もあるが多くが共通化されている
#if WINDOWS_PHONE_APP
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
#else

次のページ
Sharedプロジェクトについて

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習 Windowsストアアプリケーション連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7834 2014/06/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング