モダンアプリケーションの必然性

次世代型アプリケーション
パターンを適用せよ
~ Windows 8 業務アプリ
設計・開発の新潮流 ~
日本マイクロソフト株式会社
デベロッパー & プラットフォーム統括本部
エバンジェリスト 佐藤 直樹
エバンジェリスト 鈴木 章太郎
Agenda
• デバイス + クラウド 時代の
アーキテクトの役割
• 適用にあたっての検討
• まとめ
自己紹介
• 佐藤 直樹 (@nksato)
• 日本マイクロソフト株式会社
エバンジェリスト
• 業務アプリの Windows 8 (WinRT)対応推進
• 経歴:
• 2000年7月 マイクロソフトに入社。コンサルタントとしてソフトウェア開発
会社、SI会社などに対して .NET でのアーキテクチャ構築支援、開発プロ
ジェクト支援などを担当。2003年よりエバンジェリストとして .NET、
Visual Studio、Windows クライアント、Windows Server、Windows
Azure などマイクロソフトプラットフォーム全般の技術啓発を担当。
テクニカルエバンジェリスト
http://blogs.msdn.com/b/shosuz
MTC アーキテクト
http://www.microsoft.com/ja-jp/business/mtc/ads.aspx
呟きネタは主に、Windows、Windows Azure、
Windows Phone, RIA, HTML5, MVVM,
iOS/Android x Windows Azure 連携, Guitar … 等
ASPIC 執行役員 (‘05 ~)
Wipse モバイル x クラウド部会長(’11 ~)
2005-2012 早稲田大学大学院非常勤講師、
2008-2010 中央大学非常勤講師、
2013- 東京工業大学非常勤講師
Microsoft 軽音楽部広報担当(Guitar/Keyboard)
新たなアプリケーションパターン
「モダンアプリケーション」
モビリティ
+
クライアント
デバイス
ソーシャル
+
サーバー
ビックデータ
サービス
従来型のパターン
次世代型のパターン
(Established Patterns)
(Emerging Patterns)
クラウド
モダンアプリケーションの必然性
“By 2016, more than
50% of application
modernization efforts
will address business
demand for
enhanced
functionality to
legacy applications,
not cost reduction.”
+
+
既存の
アプリケーション
GARTNER
ALLIE YOUNG,
PATRICK SULLIVAN
RESEARCH VP
デバイス
データ
クラウド
モダンアプリケーションの構成要素
マルチデバイス
クラウド
オープン
拡張性
柔軟性
データ連携
俊敏性
信頼性
弾力性
アーキテクトの検討事項
マルチデバイス
クラウド
データ連携
アプリケーションアーキテクチャーの視点
配置
収益化
制約 他
制約事項、
商流の視点
マルチデバイス対応の2つのアプローチ
ネイティブ
アプリ
ネイティブ アプリ
(Windows Store apps,
iOS apps, Android apps)
Web アプリ
(マルチ デバイス 対応)
クロス デバイス (PC, Phone Tablet)
クロス プラットフォーム (iOS,
Android)
技術の選択
Windows 8 プラットフォーム
JavaScript
8
8.1 更新
8.1 新規
User interface
Accessibility
Data binding
Devices
Live tiles and
toast
Input
Controls
Graphics and media
HTML5/CSS
XAML
Communications and data
Speech synthesis
Services
Portable
Geolocation
Point of
service
Direct3D
Direct2D
Direct Write
Local
storage
SMS
HTTP
Skydrive
Sensors
Proximity
USB
Playback
Capture
PlayTo
Streams
Background
transfer
Contacts
Bing
HID
Wi-Fi direct
Bluetooth
Canvas
SVG
WebGL
Syndication
Networking
Appointments
Azure
Mobile
Printing
3D
printing
Scanning
XML and
JSON
Contracts
PDF
Xbox Live
Fundamentals
Application
services
Threading/timers
Memory
management
Globalization
Cryptography
Authentication
Diagnostics
開発環境と特性の比較
Web ブラウザ
デバイスネイティブアプリ [*]
Windows 8
•
•
•
HTML/JavaScript
C#/VB+XAML
C++ + XAML
iOS
•
Objective-C
•
Java
•
•
•
C#/VB+XAML
C++ + XAML, D3D
Phone HTML5 アプリ
HTML/JavaScript
Android
Windows Phone 8
メリット
•
•
リーチの獲得
配置が容易
•
•
高い操作性
ハードウェア機能の利用
デメリット
•
操作性やハードウェア利用がブ
ラウザ機能に限定
ブラウザの互換性
•
•
アプリとOSとの対応
デバイスへのアプリの配置
•
[*] タブレットアプリとしての比較のため、Windows は WinRT Apps とする
[*] ネイティブアプリを構築するミドルウェアとして、Unity, PhoneGap, Titanium 等がある
[*] Xamarin + Visual Studio 2013 により C# での iOS, Android などクロス開発が可能
3つのアプリケーションパターン
リーチ獲得/容易な配置の Web アプリ
コンシューマ向けのネイティブアプリ
タブレット業務のためのネイティブアプリ
Web ブラウザ
デバイスネイティブアプリ
Windows 8
•
•
•
HTML/JavaScript
C#/VB+XAML
C++ + XAML
iOS
•
Objective-C
Android
•
Java
Windows Phone 8
•
•
•
C#/VB+XAML
C++ + XAML, D3D
Phone HTML5 アプリ
HTML/JavaScript
マルチデバイス対応のパターン
マイクロソフト技術へのマッピング例
おさらい - RESTful な Web サービス
• 一般消費者向けインターネット サービスで主流
• ステートレスなプロトコル (HTTP 等) と既定の命令体系
(GET/POST/PUT/DELETE) の活用
• リソースを一意に識別する URI
(例: http://example.com/api/employee/12345/)
ASP.NET Web API
• Get (), Put () メソッド等に該当の処理を
記述
• 復帰値は JSON、XML (ATOM) 等を選択
可能
• OData にも対応
(例: “$top=5”, “$orderby=name”)
• Web API v2
• 属性ルーティングのサポート
例: [HttpPost("{id}/approve")]
• OData の拡張
• $select, $expand, $batch, $value のサポート
public class ValuesController : ApiController
{
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
public string Get(int id)
{
return “value”;
// api/value/5
}
public void Post ([FromBody] string value)
{
}
ASP.NET SignalR
• クライアント - サーバー間の永続的コネクション
• トランスポートの自動ネゴシエーション
• WebSocket, Server-Sent Events, Forever Frames, Long Polling
• サーバーからクライアントへのプッシュや RPC 通信
• 1 サーバーあたり数千の接続を非同期で処理
• SignalR v2
• iOS / Android サポート (MonoTouch / MonoDroid (Xamarin)
• ポータブル .NET クライアント
特性の比較 (サービス)
サービス
特長
備考
ASP.NET Web API
• RESTful サービス構築の
ためのフレームワーク
• XML/JSON
WCF Data Services
• REST/SOAP サービスフ
レームワーク
• XML/JSON
• Entity Framework 連携
• 既存データベース連携
ASP.NET SignalR
• リアルタイム/非同期/
双方向通信ライブラリ
• 単一ページ構成のクライアント中心
実装
• 優れた Web UX とマルチデバイス
対応
Windows Communication
Foundation (WCF)
• REST/SOAP サービス
フレームワーク
• 高機能サービスフレームワーク
• WS-* 規格ほぼすべてに対応
ASP.NET Web サービス
• ASMX サービス
フレームワーク
• 互換性
特性の比較 (データ)
データ
特性
備考
SQL Server
• リレーショナルデータベース
• 各種エディションあり
• Windows 認証、基本認証
SQL Database
• Windows Azure 上の
リレーショナルデータベース
• スケーラブル
• 基本認証のみ
Windows Azure Table
• Windows Azure 上の
キーバリューストレージ
• フラットな非リレーショナル
テーブル
• キーで認証、その他方法あり
Windows Azure Blob
Storage
• Windows Azure 上の
キーバリューストレージ
• 巨大なバイナリを保管する
• キーで認証、その他方法あり
SharePoint/Online
• 文書管理システム
• REST エンドポイント公開
• Windows 認証
• 基本認証
Dynamics CRM/Online
• ビジネスアプリケーション
• REST エンドポイント公開
• Windows 認証
• 基本認証
その他・・・
特性の比較
実行環境
特性
備考
Windows Server
• オンプレミス型の汎用ア • IIS、MSMQ、トランザクショ
プリケーションサーバー
ンマネージャ等のアプリ基盤
• Windows Azure Services for
Windows Server で Windows
Azure Web サイト機能実現
Windows Azure Web サイト
• PaaS
• データベース連携
• インスタント立ち上げ
Windows Azure 仮想マシン
• IaaS
• Windows / Linux
• Oracle 等 各種ミドル
Windows Azure Mobile Services
• BaaS
• データベース連携
• 認証
• プッシュ通知
Windows Azure クラウドサービス
• PaaS
•
•
•
•
大規模
スケーラブル
Web ロール
Worker ロール
マルチデバイス対応の2つのアプローチ
ネイティブ
アプリ
ネイティブ アプリ
(Windows Store apps,
iOS apps, Android apps)
Web アプリ
(マルチ デバイス 対応)
クロス デバイス (PC, Phone Tablet)
クロス プラットフォーム (iOS,
Android)
次世代型パターンの展開環境
マイクロソフト
アカウント
デバイスとモバイル アプリケーション
パブリック クラウド インフラストラクチャ
ソーシャル
検討範囲の広がり
配置/配布方式
•
•
•
配置
収益化
制約 他
マーケットプレース経由 (Windows ストア、App Store, Google Play 等)
インストールプログラム、デバイスマネージメントツール
デバイスへのプレインストール
収益化
•
•
従来型のパッケージ販売、SI導入
マーケットプレースの課金システム利用
制約事項
•
機能利用における開発者アカウントとの関連性や制約
収益化の全体像
形態
課金単位
課金方式
ライセンス販売
容量
売り切り
フリーミアム
トランザクション
サブスクリプション
仮想アイテム
Per ユーザー
広告
Per デバイス
レベニューシェア
配布方法と収益化が一体化
配布方法
収益化
内容
マーケットプレイス
無償
・サービス等のプロモーション、デモ
・広告で一部コスト回収
無償->有償 (独自課金)
・アプリの配布をマーケットプレイスで行い、ボ
リュームライセンス/サブスクリプション契約等は自社
で課金
・アプリにログインID等の認証を持ち、ユーザライセ
ンス or デバイスライセンス等を独自にコントロール
無償->有償 (マーケット
プレース課金)
・アプリの配布をマーケットプレースで行い、アイテ
ム等でアプリ内課金APIにて販売
・マーケットプレースのラインセンスモデル(ユー
ザーのデバイス制限など)に準ずる
無償
・サービス等のプロモーション、機能限定版
有償 (独自課金)
・コンテンツ単位の販売/ボリュームライセンス/サブ
スクリプション契約等は自社で課金
・アプリにログインID等の認証を持ち、ユーザライセ
ンス or デバイスライセンス等を独自にコントロール
インストール型
新たな前提条件や制約事項
• アプリケーションとマーケットプレースとの結びつき
• プッシュ通知で利用する証明書やアプケーションID
• マーケットプレースを経由しないインストールでのアプリケーション
IDやラインセンス許諾
• デバイスへのプレインストールアプリの更新配布チャネルとしてマー
ケットプレースが利用
• 開発者アカウントは年次など一定期間で更新
など
(Windows ストアアプリでの例)
Windows プッシュ通知サービス (WNS) によるプッシュ通知または Live
Connect サービスを利用するには、アプリのマニフェストで適切な ID
値を定義する必要があります。これらの値は、アプリ名を予約した
ときに Windows ストアによって作成されています。…
本日の振り返り
マルチデバイス
クラウド
データ連携
アプリケーションアーキテクチャーの視点
配置
収益化
制約 他
制約事項、
商流の視点
まとめ
~アーキテクトの検討事項
• アプリケーションのアーキテクチャ 「モダンアプリケーション」
• マルチデバイス対応
• データ連携
• クラウドサービス前提
• 配布
• マーケットプレースとしての Windows ストア
• インストールプログラム、デバイスマネージメントツール
• デバイスへのプレインストール
• 収益化、ビジネスモデル
• 従来型の販売、SI導入
• マーケットプレースの課金システムの利用
• 制約事項など
• 機能利用における開発者アカウントとの関連性や制約
© 2013 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
このプレゼンテーションは、情報提供のみを目的としています。 Microsoft は、この概要について、明示または暗示を問わず、いかなる保証も行いません。