読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマーをやっています。好きなツール:WorkFlowy、好きな言語:C#、好きなサービス:Backlog、好きなAWS:AWS Lambda。

「めとべや東京 #4」に行ってきた(その1「ユニバーサルWindowsアプリ開発入門」 by Microsoft MVP大田一希さん)

f:id:JHashimoto:20140409044240j:plain

5/31に「めとべや東京 #4」に行ってきたので、何度かに分けて勉強会の内容を紹介します。

めとべや東京#4
de:code 直後ということで、クライアントサイトテクノロジを中心に最新情報をいち早くまとめて聞いて見ませんか? ...

 

今回は1回目です。最初のセッションは、Microsoft MVPの大田一希さんの「ユニバーサルWindowsアプリ開発入門」でした。

セッション内容

ユニバーサルWindowsアプリとは

  • 開発者目線
    • ワンソースでだいたい共有できる
  • 利用者目線
    • WindowsストアとWindows Phoneストアで同じアプリに見える
    • どちらかのストアで購入すると、もう片方でも購入済みになる
    • 設定情報などのデータが同期される

ユニバーサルWindowsアプリのプラットフォーム

  • 現状VB.NETでは作れない

PCのWindowsラインタイムとPhoneのWidnowsランタイム

  • 90%ぐらい同じ
  • PC固有、Phone固有の機能以外は共通

Visual Studioにによるサポート

  • ユニバーサルアプリのプロジェクトテンプレートで新規作成すると、3つのプロジェクトが作成される
    • Windows8.1用プロジェクト
    • Widnows Phone8.1用プロジェクト
    • 共通プロジェクト

コンパイル時の動作

  • 共通プロジェクトがdllとして参照されるわけではない
  • ソースコードをリンクで追加して共有したのと同じことになる

エディタの支援機能

  • ifディレクティブで切り替え
    • WINDOWS_APP
    • WINDOWS_PHONE_APP
    • 開いているプロジェクトでない方のコードはグレーアウトされる
      • 例えば、Windows8.1用プロジェクトでソースファイルを開いていると、WINDOWS_PHONE_APPの方のコードがグレーアウトされる
  • Windows8.1用とWidnows Phone8.1用のどちらののプロジェクトとしてソースファイルを開くかを、コンボボックスで切り替えられる

デザイナの支援機能

  • エディタと同様、どちらのプロジェクトとしてソースファイルを開くかを、コンボボックスで切り替えられる

ユニバーサルWindowsアプリとは

  • Windows8.1とWidnows Phone8.1とで、ストアで同一アプリとして扱える
    • ローミングデータの共有
  • 実行環境とVisual Stuidioの支援
    • 互換性の高いWindowsランタイム
    • コーディングの支援

共通化のテクニック

  • ページは別にする
  • 共有するクラスを共通化する
    • 細かな違いはIfディレクティブで

さらに踏み込んだコードの共有

  • ページもほぼ共通化する。ページの差異はUserControl化
    • UserControlが同じ名前空間、同じ名前であれば、Windows8.1とWidnows Phone8.1のどちらのプロジェクトでもビルドが通る
    • デモ
      • Widnows Phone8.1アプリには戻るボタンがない(ハードウェアの戻るボタンがあるので)
      • ヘッダー部分をユーザーコントロールにして実現
  • 一部の見た目の変更
    • リソースに同名の値を定義する
  • 見た目の大きな差異
    • 同名のStyleを個別のプロジェクトに定義する
  • 共通のリソースの定義
    • SharedプロジェクトのResourceDictinaryなどに定義する

割と死ぬ非互換

  • *Picker系, WebAuthenticationBroker死亡
    • FileOpenPickerを使ったデモ
    • Store
      • awaitでOK
    • Phone
      • 一度Picker系別アプリに移動するため、アプリはサスペンドする。OnActivatedイベントで続きの処理をする
      • その箇所はPhone専用なのでIfディレクティブで囲う必要がある
  • AppBar
    • Store
      • 使える
    • Phone
      • 使えない
      • TopAppBarを使えないので独自UIを実装する必要がある

注意点

  • どこを共有するか注意(安易に画面を共有すると...)

セッション資料

めとべや東京 #4の資料公開。「ユニバーサルWindowsアプリ入門」 #めとべや東京 - かずきのBlog@hatena

関連エントリー

「めとべや東京 #4」に行ってきた(その2「Modern WPF」by Microsoft MVPぐらばくさん) - プログラマーな日々

 

「めとべや東京 #4」に行ってきた(その3「The Next Generation for C# Developers」by Microsoft MVP tanaka733さん) - プログラマーな日々

 

「めとべや東京 #4」に行ってきた(その4「コーディング面接」by Microsoft MVP 岩永信之さん) - プログラマーな日々

 

「めとべや東京 #4」に行ってきた(その5 LT) - プログラマーな日々