121117 metro styleapp_templateapp
TRANSCRIPT
NewsReader テンプレートを使って作る Reader じゃないストアアプリと
Tips 集
新しい .NETStyle 2012/11/24 ~ MetroStyleDeveloper #08 東
京~ ~ .NET ラボ勉強会 2012 年 11 月~
@tanaka_733
自己紹介
Blog: 銀の光と碧い空http://techblog.hilife-jp.info/
Twitter: @tanaka_733Metro style DeveloperSilverlight を囲む会
趣味Windows Store appWindows Phone appKinect
セッションの目的
すべて一からやるのもちょっと…
Windows Store App を簡単に開発したい
テンプレートそのままはちょっと別のことやりたい…
モチベーション
テンプレートを使いつつ、違う目的のアプリを作ってみよう
公開したアプリ : Cloud Foundry Console
Cloud Foundry とは
VM Ware がリードする OSS PaaS 構築ソフトAzure Web Site が近いcloudfoundry.com から無償で利用可能 (β版 )Node.js, Java, Ruby が使用可能
http://apps.microsoft.com/webpdp/ja-JP/app/cloud-foundry-console/724b3d55-38cb-433e-9607-65e1c42d2ae4
( 余談 ) .NET サポートもあるよ
Iron Foundry (.NET)Uhuru (.NET, on Azure もあり )AppFog (PHP)Cloudn (NTTcom さん、予定 )
Cloud Foundry 本家のほかに、( cloudfoundry.com )独自機能を追加したサービスが複数
デモ
設定アプリ一覧アプリ表示アプリ起動検索
テンプレートによる開発
http://msdn.microsoft.com/ja-jp/jj556277.aspx
テンプレートを使った開発そのものはREADME や他の方の資料が参考になります
テンプレートを使ったストアアプリの作成http://www.slideshare.net/yasuhikoy/ss-15136691
テンプレートの VerUP に対応するには
バグ修正や機能向上があるできるだけ追随
テンプレートは時々 Update される
Change log はあるコードの差分がとれない
テンプレートファイルを取っておいてWinMerge などの差分ツールで確認
開発した手順
API を叩くところ (通信の処理の確認)
DataModel の変更
DataSource の変更
View の変更
DataModel を変更する
UI の構造を定義しよう
表示させたい項目持たせる機能
INotifyPropertyChange の実装はCommon.BindableBase を使用
UI からの操作は DataModel ではなく、コードビハインドに記述されている
データ操作部分 (Model) を入れ替える
AppDataSource を新規作成TokenCommon
AppDataSourceは CloudFoundryのAPI をたたく
TokenDataSourceはログイン情報をローカルストレージに管理
async, await で簡単非同期
通信処理などはほとんど非同期 async, await で簡単に書ける
非同期処理と例外処理
通信エラーを通知するためにこんなコードは書けません
LayoutAwarePageExtensions.cs を使いましょう
await せずにエラーを通知
より複雑な制御が必要なら Rx を
アプリケーションの設定
独自の設定メニューではなく、設定コントラクトを使いましょう
設定コントラクト
設定チャームにカスタムメニューを追加
カスタムメニューが選択された時の処理を追加
Help, Privacy Policyに加えてAccount Settingを追加
Account Settingが選択された時はAccountSettingPage に移動
設定チャームにカスタムメニューを追加
App.xaml.cs
メニュー選択時の処理
App.xaml.cs
パスワードの保存方法
保存方法:PasswordVaultがおすすめ
一時的なトークンをローカルストレージにキャッシュ
RoamingData によるマシン間の共有は未使用
PasswordVault の使用方法 ( 保存 )
SerializeHelper.cs
PasswordVault の使用方法 ( 取得 )
SerializeHelper.cs
未設定時の挙動
アプリの性質
ログインできないと何もできない
起動時にログイン情報がなければAccountSettingPage に移動
最初にやること
ログイン情報を入力する
未設定時の挙動
App.xaml.cs
従量課金ネットワークへの対応
背景
日本では定額が多くなってきましたが、外国では従量課金の方が多いところもあります
従量課金接続の場合は、無制限に通信を行わないように設定
このアプリでは未実装ながら審査は通過条件はアプリの性質による可能性も
View の見た目を変える
View の見た目を変える
App.xaml を編集
View のプロパティと Style の Binding
Status を背景色に Binding
申請時の注意
テスト用のアカウント情報を記載(日本語アプリでも英語併記が無難)
アカウントを作成できるページへのリンクを明記
英語 ( および他の言語)での表記に迷ったら
Microsoft ランゲージポータルがおすすめhttp://www.microsoft.com/language/ja-jp/default.aspx
おまけ: Advent Calendar のお誘い
WP8: http://atnd.org/events/33802Win8 C#: http://atnd.org/events/33803
http://www.scottlogic.co.uk/blog/colin/2011/12/a-metro-themed-powerpoint-template/
This pptx’s theme is provided by @ColinEberhardt