windows 8.1 におけるストア ビジネスアプリの設計と開発

37
鈴鈴 鈴鈴鈴 鈴鈴鈴鈴鈴鈴鈴鈴鈴鈴鈴鈴鈴 鈴鈴鈴鈴鈴鈴鈴鈴鈴鈴鈴鈴鈴 http://blogs.msdn.com/b/shosuz/ Windows 8.1 鈴鈴鈴鈴 鈴鈴鈴 鈴鈴鈴鈴鈴鈴鈴鈴 鈴鈴鈴鈴鈴

Upload: shotaro-suzuki

Post on 28-May-2015

2.911 views

Category:

Technology


7 download

DESCRIPTION

MVP Community Camp 2014 品川会場でのランチセッションです。サンプルソースコードや解説は、後程MSDN Blogに上げますので、お楽しみに!

TRANSCRIPT

Page 1: Windows 8.1 におけるストア ビジネスアプリの設計と開発

鈴木 章太郎テクニカルエバンジェリスト日本マイクロソフト株式会社http://blogs.msdn.com/b/shosuz/

Windows 8.1 におけるストア ビジネスアプリの設計と開発

Page 2: Windows 8.1 におけるストア ビジネスアプリの設計と開発

・テクニカルエバンジェリストhttp://blogs.msdn.com/b/shosuz

・ MTC アーキテクトhttp://www.microsoft.com/ja-jp/business/mtc/ads.aspx

・呟きネタは主に、 Windows 8 、 Windows Azure 、 Windows Phone, RIA, HTML5, MVVM, iOS/Android x Windows Azure 連携 , Guitar … 等・ ASPIC 執行役員、情報社会学会運営委員( 2005- )・早稲田大学大学院( 2005-2012 )非常勤講師、  中央大学( 2008-2010 )非常勤講師、  東京工業大学大学院( 2013- )非常勤講師・ Microsoft 軽音楽部広報担当( Guitar/Keyboard )

Page 3: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Windows ストア ビジネスアプリ を

Prism for Windows Runtime を用いて

        で開発する方法を

ご理解いただくこと

本セッションの目的このセッションの目的

Page 4: Windows 8.1 におけるストア ビジネスアプリの設計と開発

• Windows ストア ビジネスアプリの設計・開発に必要な要素• Model-View-ViewModel (MVVM) パターンの利用• ページ間のナビゲーション• アプリケーション データの管理• 中断、再開、アクティブ化の処理• 疎結合コンポーネント間の通信• ユーザー入力の検証• まとめ

Agenda

Page 5: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Windows ストアビジネスアプリの設計・開発に必要な要素

Page 6: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Windows ストア ビジネスアプリとは• ストア “ LOB “ アプリ

• 高品質、適切なアーキテクチャー、メンテナンスしやすい、テストがしやすい

• コンシューマーアプリとの違い • バリデーションが必要、サスペンド時等にも状態データが消えない

• チーム開発が普通• 疎結合のアーキテクチャー• メンテナンスしやすくテストしやすいコードベース

• Prism• 品質とメンテナンス性を高める Proven なガイダンスとライブラリ• 加えて、ビジネスストアアプリを簡単に作成できるようにする

Page 7: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Windows ストア ビジネス アプリ開発者のタスク• ガイダンスの概要とチェックリスト• Windows ランタイム向け Prism

の使用①   Model-View-ViewModel (MVVM)      パターンの利用②  ページ間のナビゲーション③  ユーザー入力の検証④  アプリケーション データの管理⑤  中断、再開、アクティブ化の処理⑥  疎結合コンポーネント間の通信

• ユーザー エクスペリエンスの 設計

• ページの作成• タッチの使用• アプリケーション データの管理• タイルの操作• 検索の実装• パフォーマンスの向上• アプリのテストと展開

http://msdn.microsoft.com/ja-jp/library/windows/apps/dn535962.aspx

Page 8: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Adventure Works Reference Implementation

• Prism for Windows Runtime  のサンプルアプリ• C# / XAML に特化• ストア ビジネスアプリ 開発のために最適化• Windows 8.1 対応と更新

http://code.msdn.microsoft.com/windowsapps/Prism-for-the-Windows-86b8fb72/

Page 9: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Adventure Works Reference Implementation•論理アーキテクチャ図提供•AutoRotatingGridView Grid コントロールを作成•IncrementalUpdateBehavior Blend ビヘイビアの使用 •ポップアップに替え、 Flyout/MenuFlyout を使用•FlyoutViews を SettingsFlyout を使うように変更•Watermark に標準のコントロールを使用 •Blend ビヘイビアを多用•SearchBox 及び 新しいサーチ API を使用 •更新された Top アプリバー /Bottom アプリバーを使用し CommandBars と Action Button を配置•System.Net.Http.HttpClient → Windows.Web.Http.HttpClient に変更Prism for Windows Runtime•VisualStateAwarePage → ページサイズと縦横の向きに反応するよう更新 •FlyoutService と FlyoutView → 削除 •SearchPaneService と SearchQueryArguments → 新しい SearchBox コントロールを使用

Windows 8.1 version で更新された点

Page 10: Windows 8.1 におけるストア ビジネスアプリの設計と開発

MVVM (Model-View-ViewModel )  パターンの利用

Page 11: Windows 8.1 におけるストア ビジネスアプリの設計と開発

MVVM とは• アーキテクチャーパターン• John Gossman ( WPF チー

ム)により提唱• MVC パターンの亜種• Martin Fowler の

“ Presentation Model pattern” に類似

• XAML のデータバインディングとコマンディングを基礎に稼働

デザイナー担当 開発者が担当

View

ViewModel

Model

UI 、 XAML

ロジック、状態

データソース

Page 12: Windows 8.1 におけるストア ビジネスアプリの設計と開発

MVVM のメリット• 関心の分離ができる• メンテナンスしやすくなる

• Code 内を可視化しやすい• View 変更に影響受けない

• テストしやすくなる• 単体テスト、 XAML 活用

• C#/XAML フレームワーク 自体が MVVM をサポート

• データバインディング• INotifyPropertyChanged• データコンテキスト• Observable パターン

Data Model

View

XAML

分離コード

View ModelState +

Operations

Change Notification

Data-binding and commands

Page 13: Windows 8.1 におけるストア ビジネスアプリの設計と開発

MVVM のデメリット• 標準モデルは存在しない

• Grid テンプレート自体、独自の “ MVVM” モデルを持つ

• シンプルな UI には MVVM はオーバースペック

• 多くのコードが必要• INotifyPropertyChanged

• Grid テンプレートの BindableBase

• Commands 等

Data Model

View

XAML

分離コード

View Model

State + Operatio

ns

Change Notification

Data-binding and commands

Page 14: Windows 8.1 におけるストア ビジネスアプリの設計と開発

MVVM 実装はハードルが高いのか?• 「普通の開発者にはハードルが高い」「参入障壁が高い」?• しかし、実際には Prism の利用は難しくない• そこで、シンプルなアプリを Prism で実装する• よりシンプルに明確に作れるはず

Page 15: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Demo

Prism for Windows Runtime を使った シンプルなアプリの開発

Page 16: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Grid Template を Prism 対応 MVVM に• さらに、 Grid Template を Prism for Windows Runtime で再構

築• こちらもよりシンプルに明確に作れるはず• 更に応用が利くようになる

Page 17: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Demo

Prism for Windows Runtime を使った Grid Template の改造

Page 18: Windows 8.1 におけるストア ビジネスアプリの設計と開発

ページ間のナビゲーションhttp://msdn.microsoft.com/ja-jp/library/windows/apps/xx130640.aspx

Page 19: Windows 8.1 におけるストア ビジネスアプリの設計と開発

ページ間のナビゲーション

Page 20: Windows 8.1 におけるストア ビジネスアプリの設計と開発

• MVVM パターンを使い、ページ( View )を作成• XAML データバインディングを用いて、各ページを

ViewModel   オブジェクトにリンク• 横向き、縦向き、最小限のレイアウトに合わせページを設計、

Microsoft.Practices.Prism.StoreApps - VisualStateAwarePage   クラスでビューを管理

• クラスがナビゲーション操作に参加できるように利用Microsoft.Practices.Prism.StoreApps – INavigationAware インターフェイスクラスがナビゲーションをサポートできるように利用Microsoft.Practices.Prism.StoreApps - FrameNavigationService クラス

ページ間のナビゲーション

Page 21: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Demo

ページ間のナビゲーション

Page 22: Windows 8.1 におけるストア ビジネスアプリの設計と開発

アプリケーション データの管理http://msdn.microsoft.com/ja-jp/library/windows/apps/xx130650.aspx

Page 23: Windows 8.1 におけるストア ビジネスアプリの設計と開発

• アプリケーション データ API を使いアプリケーション データを操作し、データの物理的記憶域が、システムによって管理されるようにする

• ユーザーがアプリに正常にサインインし、パスワードの保存を選んだ場合にのみ、パスワードを資格情報保管ボックスに格納する

• ASP.NET Web API を使って、さまざまな種類のコンテンツを 渡すことができる、リソース指向の Web サービスを作る

アプリケーション データの管理

Page 24: Windows 8.1 におけるストア ビジネスアプリの設計と開発

ストア ビジネスアプリのデータアクセスクラウドを経由

オンプレミスに直接

Sockets• Datagram• MessageWeb• TCP stream• StreamWeb

HTTP• HttpClient/

HttpReponseMessage• WinJS.XHR• XmlHttpRequest

Atom Pub/Syndication

• File• SQLite• IndexedDB• SQL Server• Dynamics• SharePoint Server• その他

a

Data Services• ASMX• WCF, WCF Data Services• OData• ASP.NET Web API

• Windows Azure Storage• SQL Database• Windows Azure Mobile Services

• Dynamics Online• 0ffice 365

Page 25: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Windows ビジネスストアアプリの認証エンタープライズの標準に準拠統合 Windows  認証

エンタープライズ認証プライベートネットワーク

http://code.msdn.microsoft.com/windowsapps/Credential-picker-sample-30fcba2e

アプリケーション証明書My and Root stores  Certificates

http://msdn.microsoft.com/ja-jp/library/windows/apps/hh465029.aspx

多要素認証

Credential picker shared user certifications

http://msdn.microsoft.com/ja-jp/library/windows/apps/jj659079.aspx  http://msdn.microsoft.com/ja-jp/library/windows/apps/windows.security.credentials.passwordvault.aspx

フェデレーションADFS 認証

Web authentication broker

シングルサインオン( Twitter, Facebook, Microsoft Account, etc. )

Web authentication broker

http://code.msdn.microsoft.com/windowsapps/Authenticate-Account-827dd37b

Page 26: Windows 8.1 におけるストア ビジネスアプリの設計と開発

中断、再開、アクティブ化の処理http://msdn.microsoft.com/ja-jp/library/windows/apps/xx130647.aspx

Page 27: Windows 8.1 におけるストア ビジネスアプリの設計と開発

中断、再開、アクティブ化の処理

Page 28: Windows 8.1 におけるストア ビジネスアプリの設計と開発

• アプリが中断された時点でアプリケーションデータを保存• 必要に応じて、保存済みのアプリケーション データを使って

アプリを復元• Microsoft.Practices.Prism.StoreApps ライブラリで提供される

MvvmAppBase クラス、 VisualStateAwarePage クラス、 RestorableState カスタム属性を使って、ビューとビュー モデルはそれぞれに関連する状態を保存し、復元できる

中断、再開、アクティブ化の処理

Page 29: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Demo

中断、再開、   アクティブ化の処理

Page 30: Windows 8.1 におけるストア ビジネスアプリの設計と開発

疎結合コンポーネント間の通信http://msdn.microsoft.com/ja-jp/library/windows/apps/xx130639.aspx

Page 31: Windows 8.1 におけるストア ビジネスアプリの設計と開発

疎結合コンポーネント間の通信• アプリの疎結合コンポーネント間の通信には

Microsoft.Practices.Prism.PubSubEvents ライブラリを使う

• パブ / サブ イベントをイベント アグリゲーターから 取得し、 PubSubEvent<TPayload> クラスの Publish   メソッドを呼び出すことでサブスクライバーに通知

• PubSubEvent<TPayload> クラスで使用できる Subscribe メソッド オーバーロードの 1 つを使い、通知を   受け取るように登録

Page 32: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Demo

Windows ストア   ビジネスアプリの イベント集約の検証

http://msdn.microsoft.com/ja-jp/library/windows/apps/xx130644.aspx

Page 33: Windows 8.1 におけるストア ビジネスアプリの設計と開発

ユーザー入力の検証http://msdn.microsoft.com/ja-jp/library/windows/apps/xx13659.aspx

Page 34: Windows 8.1 におけるストア ビジネスアプリの設計と開発

• クライアント側での検証を行うために、Microsoft.Practices.Prism.StoreApps ライブラリ内にあるValidatableBindableBase クラスからモデルクラスを派生させる

• プロパティに DataAnnotation 属性を追加することで、モデル プロパティの検証規則を指定

• ValidatableBindableBase.ValidateProperties メソッドを呼び出し、ValidationAttribute 属性から派生する属性を持つ      モデルオブジェクトのすべてのプロパティを検証

ユーザー入力のバリデーション

Page 35: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Demo

ユーザー入力の検証

http://msdn.microsoft.com/ja-jp/library/windows/apps/xx130660.aspx

Page 36: Windows 8.1 におけるストア ビジネスアプリの設計と開発

Windows ストア ビジネスアプリ を

Prism for Windows Runtime を用いて

      で開発すると

シンプルに明確に開発できます!

本セッションの目的まとめ

・ http://slideshare.net/shosuz にスライド公開・ MSDN Blog (http://blogs.msdn.com/b/shosuz ) にデモの詳細解説 & ソースコードをリンク

Page 37: Windows 8.1 におけるストア ビジネスアプリの設計と開発

© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.