121117 metro styleapp_templateapp

32
NewsReader テテテテテテテテテテ テテ Reader テテテテテテテテテテテ Tips テ テテテ .NETStyle 2012/11/24 MetroStyleDeveloper #08 テテ.NET テテテテテ 2012 テ 11 テ@tanaka_733

Upload: -

Post on 22-Jun-2015

585 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: 121117 metro styleapp_templateapp

NewsReader テンプレートを使って作る Reader じゃないストアアプリと

Tips 集

新しい .NETStyle 2012/11/24  ~ MetroStyleDeveloper #08 東

京~  ~ .NET ラボ勉強会 2012 年 11 月~

@tanaka_733

Page 2: 121117 metro styleapp_templateapp

自己紹介

Blog: 銀の光と碧い空http://techblog.hilife-jp.info/

Twitter: @tanaka_733Metro style DeveloperSilverlight を囲む会

趣味Windows Store appWindows Phone appKinect

Page 3: 121117 metro styleapp_templateapp

セッションの目的

すべて一からやるのもちょっと…

Windows Store App を簡単に開発したい

テンプレートそのままはちょっと別のことやりたい…

Page 4: 121117 metro styleapp_templateapp

モチベーション

テンプレートを使いつつ、違う目的のアプリを作ってみよう

Page 5: 121117 metro styleapp_templateapp

公開したアプリ : 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

Page 6: 121117 metro styleapp_templateapp

( 余談 ) .NET サポートもあるよ

Iron Foundry (.NET)Uhuru (.NET, on Azure もあり )AppFog (PHP)Cloudn (NTTcom さん、予定 )

Cloud Foundry 本家のほかに、( cloudfoundry.com )独自機能を追加したサービスが複数

Page 7: 121117 metro styleapp_templateapp

デモ

設定アプリ一覧アプリ表示アプリ起動検索

Page 8: 121117 metro styleapp_templateapp

テンプレートによる開発

http://msdn.microsoft.com/ja-jp/jj556277.aspx

テンプレートを使った開発そのものはREADME や他の方の資料が参考になります

テンプレートを使ったストアアプリの作成http://www.slideshare.net/yasuhikoy/ss-15136691

Page 9: 121117 metro styleapp_templateapp

テンプレートの VerUP に対応するには

バグ修正や機能向上があるできるだけ追随

テンプレートは時々 Update される

Change log はあるコードの差分がとれない

テンプレートファイルを取っておいてWinMerge などの差分ツールで確認

Page 10: 121117 metro styleapp_templateapp

開発した手順

API を叩くところ (通信の処理の確認)

DataModel の変更

DataSource の変更

View の変更

Page 11: 121117 metro styleapp_templateapp

DataModel を変更する

UI の構造を定義しよう

表示させたい項目持たせる機能

INotifyPropertyChange の実装はCommon.BindableBase を使用

UI からの操作は DataModel ではなく、コードビハインドに記述されている

Page 12: 121117 metro styleapp_templateapp

データ操作部分 (Model) を入れ替える

AppDataSource を新規作成TokenCommon

AppDataSourceは CloudFoundryのAPI をたたく

TokenDataSourceはログイン情報をローカルストレージに管理

Page 13: 121117 metro styleapp_templateapp

async, await で簡単非同期

通信処理などはほとんど非同期 async, await で簡単に書ける

Page 14: 121117 metro styleapp_templateapp

非同期処理と例外処理

通信エラーを通知するためにこんなコードは書けません

Page 15: 121117 metro styleapp_templateapp

LayoutAwarePageExtensions.cs を使いましょう

await せずにエラーを通知

より複雑な制御が必要なら Rx を

Page 16: 121117 metro styleapp_templateapp

アプリケーションの設定

独自の設定メニューではなく、設定コントラクトを使いましょう

Page 17: 121117 metro styleapp_templateapp

設定コントラクト

設定チャームにカスタムメニューを追加

カスタムメニューが選択された時の処理を追加

Help, Privacy Policyに加えてAccount Settingを追加

Account Settingが選択された時はAccountSettingPage に移動

Page 18: 121117 metro styleapp_templateapp

設定チャームにカスタムメニューを追加

App.xaml.cs

Page 19: 121117 metro styleapp_templateapp

メニュー選択時の処理

App.xaml.cs

Page 20: 121117 metro styleapp_templateapp

パスワードの保存方法

保存方法:PasswordVaultがおすすめ

一時的なトークンをローカルストレージにキャッシュ

RoamingData によるマシン間の共有は未使用

Page 21: 121117 metro styleapp_templateapp

PasswordVault の使用方法 ( 保存 )

SerializeHelper.cs

Page 22: 121117 metro styleapp_templateapp

PasswordVault の使用方法 ( 取得 )

SerializeHelper.cs

Page 23: 121117 metro styleapp_templateapp

未設定時の挙動

アプリの性質

ログインできないと何もできない

起動時にログイン情報がなければAccountSettingPage に移動

最初にやること

ログイン情報を入力する

Page 24: 121117 metro styleapp_templateapp

未設定時の挙動

App.xaml.cs

Page 25: 121117 metro styleapp_templateapp

従量課金ネットワークへの対応

背景

日本では定額が多くなってきましたが、外国では従量課金の方が多いところもあります

従量課金接続の場合は、無制限に通信を行わないように設定

このアプリでは未実装ながら審査は通過条件はアプリの性質による可能性も

Page 26: 121117 metro styleapp_templateapp

View の見た目を変える

Page 27: 121117 metro styleapp_templateapp

View の見た目を変える

App.xaml を編集

Page 28: 121117 metro styleapp_templateapp

View のプロパティと Style の Binding

Status を背景色に Binding

Page 29: 121117 metro styleapp_templateapp

申請時の注意

テスト用のアカウント情報を記載(日本語アプリでも英語併記が無難)

アカウントを作成できるページへのリンクを明記

Page 30: 121117 metro styleapp_templateapp

英語 ( および他の言語)での表記に迷ったら

Microsoft ランゲージポータルがおすすめhttp://www.microsoft.com/language/ja-jp/default.aspx

Page 31: 121117 metro styleapp_templateapp

おまけ: Advent Calendar のお誘い

WP8: http://atnd.org/events/33802Win8 C#: http://atnd.org/events/33803