狠狠撸
Submit Search
Riaアーキテクチャー研究会 第3回 セッション3
?
4 likes
?
1,166 views
Mami Shiino
Follow
本资料は、商用利用不可?再配布不可?记载不可?顿尝不可?ブログ等への転载不可?抜き出し不可とします。あくまでも、个人の学习用としてのみ使用してください。
Read less
Read more
1 of 66
More Related Content
Riaアーキテクチャー研究会 第3回 セッション3
2.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 1
3.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 2
4.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 3
5.
1
2nd FACTORY CO.,Ltd. CONFIDENTIAL 4
6.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 5
8.
NUI + Microsoft
2nd FACTORY CO.,Ltd. CONFIDENTIAL 7
9.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 8
10.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 9
11.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 10
12.
例えば
2nd FACTORY CO.,Ltd. CONFIDENTIAL 11
13.
例えば
2nd FACTORY CO.,Ltd. CONFIDENTIAL 12
14.
例えば
2nd FACTORY CO.,Ltd. CONFIDENTIAL 13
15.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 14
16.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 15
17.
クラウド市场动向
2nd FACTORY CO.,Ltd. CONFIDENTIAL 16
18.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 17
19.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 18
20.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 19
21.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 20
22.
何故いきなり成熟期を迎えるのか
2nd FACTORY CO.,Ltd. CONFIDENTIAL 21
23.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 22
24.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 23
25.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 24
26.
余计な思考
赤は1、青は2、黄色は3を押してください。 1 2 3 赤 「何色の●が一番多い?」 UI 操作の為の思考ストレスを排除、 本来の目的に意識を集中。 2nd FACTORY CO.,Ltd. CONFIDENTIAL 25
27.
ゲームが参考になる日も近い
2nd FACTORY CO.,Ltd. CONFIDENTIAL 26
28.
ゲームが参考になる日も近い ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2nd FACTORY CO.,Ltd. CONFIDENTIAL 27
29.
? ? ? ?
2nd FACTORY CO.,Ltd. CONFIDENTIAL 28
30.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 29
31.
2
2nd FACTORY CO.,Ltd. CONFIDENTIAL 30
32.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 31
33.
東海 高尾
東海 XA XD 東海 AA ID IA AD VD 高尾 2nd FACTORY CO.,Ltd. CONFIDENTIAL 32
34.
XD
IA XA VD ID AD AA 2nd FACTORY CO.,Ltd. CONFIDENTIAL 33
35.
XA
XD AA ID IA AD VD 2nd FACTORY CO.,Ltd. CONFIDENTIAL 34
36.
? ?
– 2nd FACTORY CO.,Ltd. CONFIDENTIAL 35
37.
エクスペリエンスデザインワークフロー
2nd FACTORY CO.,Ltd. CONFIDENTIAL 36
38.
? ? ?
2nd FACTORY CO.,Ltd. CONFIDENTIAL 37
39.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 38
40.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 39
41.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 40
42.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 41
43.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 42
44.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 43
45.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 44
46.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 45
47.
? ? ? ? ?
2nd FACTORY CO.,Ltd. CONFIDENTIAL 46
48.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 47
49.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 48
50.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 49
51.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 50
52.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 51
53.
3
クラウドサービスApp特有のUX的解 2nd FACTORY CO.,Ltd. CONFIDENTIAL 52
54.
2nd FACTORY CO.,Ltd.
CONFIDENTIAL 53
55.
?
– – ? – – 2nd FACTORY CO.,Ltd. CONFIDENTIAL 54
56.
?
– ? ? ? – ? – ? – 2nd FACTORY CO.,Ltd. CONFIDENTIAL 55
57.
?
– … JSON、ATOM等 … モデルが同じ … … … ?Data Access LayerとViewModelを分離しや … クラウド すい(ファサードを設置しやすい) … Azure/オンプレミス ?同期が簡単 … … … … … … … … Accessor … … … インメモリ上のモデルと 今後、サーバー側にナ … が 全く同じモデルを永続化 レッジとなるインフォ … メーションプールを構築 メ JSON、ATOM等 … … … モ していくことになる。 リ このデータの組合せ(業 ViewModel と … 務モデル)こそがイン ス … フォメーションであり、 ト クライアント側に業務モ ア … … … を デルを組立するステップ 読 Android、iPhone等 を持たないことが み kabu.comの売りとなる。 分 分離ストレージ、Shared Object、 け HTML 5 local storage等 る 2nd FACTORY CO.,Ltd. CONFIDENTIAL 56
58.
KabucomData
KabucomData.StockTile.Base.FinancialPrice プログラマーの方々が、KabucomData からのドットシンタックスで、すべての エレメントにアクセスできることを意識 した設計をしました。 KabucomData.Users[0].ApplicationSetting.SkinType 2nd FACTORY CO.,Ltd. CONFIDENTIAL 57
59.
凡例
音声 文字 画像 銘柄 News … News読上げ 銘柄、為替 市場チャート 為替読上げ ニュース 為替チャート 分離ストレージ … … 銘柄チャート オンプレミス 分離ストレージ サービスAPI … Azure … … … … … … … Invoke Webサービス StorageManager … ComunicationUtil Callback (ストレージアクセス)Sync Map (API呼び出し) … … … ComunicationUtil CompleteEvent StorageManager … … … … Accessor … … … Extend 自動更新 … Extend … タイマー … … … … ViewModel … … … … App.xaml … Locator Locator … DataContext DataContext ReLoad 画面 画面 画面の表示順などデータサービスされないステート情報はViewModelで拡張される 2nd FACTORY CO.,Ltd. CONFIDENTIAL 58
60.
public delegate void
CommunicationUtilCompleteEventHandler(object sender, CommunicationUtilCompleteEventArgs e); public event CommunicationUtilCompleteEventHandler CallVoiceAPICompleted; Dispatcher dispatcher = App.Current.RootVisual.Dispatcher; public class CommunicationUtilCompleteEventArgs : EventArgs { public object Result { get; set; } public Type ResponceType { get; set; } } KabucomData.NetworkState.FaultModel.KannaError if (this.CallVoiceAPICompleted != null) { dispatcher.BeginInvoke(delegate() { this.RequestMakeUserCompleted(this, sendArgs); }); } 分離ストレージ サービスAPI StorageManager Callback ComunicationUtil Invoke (ストレージアクセス) … (API呼び出し) … … … … … … Accessor … … … プログラマーの方々が、完了イベント引数の ViewModel 状態による分岐制御を意識しないよう値と値 のタイプをモデルで返すよう設計しました。 画面 画面 CallVoiceAPICompleted += new CommunicationUtil.CommunicationUtilCompleteEventHandler(callVoiceAPICompleted); static void callVoiceAPICompleted (object sender, CommunicationUtilCompleteEventArgs e) { if (e.ResponceType == typeof(KannaError));//エラー処理 } 2nd FACTORY CO.,Ltd. CONFIDENTIAL 59
61.
?
– クラウド Azure/オンプレミス ID/Pass 認証済みトークン/エラー 認証済みトークン 認証済みトークン 認証済みトークン 分離ストレージ 認証が必要なデータ 2nd FACTORY CO.,Ltd. CONFIDENTIAL 60
62.
?
– データアクセスレ ファサード(今回 App.xaml XAML コードビハインド ViewModel イヤー(通信と サービス はAccessor) ローカル) データテンプレート、 ローカルデータアク タイマー制御 ページ初期化 コマンド実装 オンライン判定 認証サービス データコンテキスト セス トランシジョン、アニ イベント、イベントハ インジケーターの制 サーバーAPI呼び出 メーションコンポー データアクセス データサービス ンドラ 御 し ネント設置 各種設定(ロケー ター、リソース、コマ システムトレイ コールバック チャート画像 ンド、コンバーター、 ビヘイビア) アプリケーション 完了イベント 音声サービス バー デストラクタ ナビゲーション制御 2nd FACTORY CO.,Ltd. CONFIDENTIAL 61
63.
? HttpWebRequest.Headers[“Authorization”]
? HttpWebRequest.Headers[“X-SessionID”] ? HttpWebRequest.Method ? ex “GET“,“PUT“,“POST“,”DELETE“ ? HttpWebRequest.ContentType ? ex "application/x-www-form-urlencoded" ? HttpWebRequest.Accept ? ex "application/json“,”application/atom+xml” public HttpWebRequest GetCurrentUserRequest(string serviceName, WebRequestType webRequestType, out string postBody) { string serverAddress = “http://サーバーアドレス/”; HttpWebRequest webReq = (HttpWebRequest)HttpWebRequest.Create(new Uri(serverAddress + serviceName)); webReq.Accept = "application/json"; switch (webRequestType) { case WebRequestType.ChartImage://WebRequestTypeは自作した列挙値 webReq.Method = "GET"; webReq.Headers[“Authorization”] = “Basic ” + KabuComDataAccessor.KabuComData.Users[0].Base64String;//キー webReq.Headers[“X-SessionID”] = KabuComDataAccessor.NetworkState.SessionID;//トークン break; //postBodyを必要とするリクエストの場合はこちらで作成してやる。そうでない場合は「postBody = "";」 } return webReq; } 2nd FACTORY CO.,Ltd. CONFIDENTIAL 62
64.
JSONクライアントの作成 System.Json
DataContractJsonSerializer (Silverlight SDK) (System.Runtime.Serialization.Json) 参照設定System.Json 参照設定System.ServiceModel.Web ? ストリームからオブジェクトへ ? シリアライザーを生成 ? JsonObject jsonObject = ? DataContractJsonSerializer jsonSerializer = new (JsonObject)JsonObject.Load(responseStream); DataContractJsonSerializer(StockData); ? 配列の場合キーをパース ? ストリームからオブジェクトへ ? foreach (string key in jsonObject.Keys) {if (key == ? StockData data = “Name”) stockData.Name = jsonObject[key];} jsonSerializer.ReadObject(responseStream); サーバーのモデルとクライアントのモデルが合致していない場合はSystem.Jsonを使って クライアントのモデルにキーをマップ。 合致している場合は、DataContractJsonSerializerを使ってデシリアライズすることで1行で マップが終了する。 2nd FACTORY CO.,Ltd. CONFIDENTIAL 63
65.
設計の段階からWindows 8への展開を想定していた本案件の場合、Metro UIの採用に よってタッチインタラクションの実装が楽になりました。
プログラムより先にユーザーの操作についてデザインされていたことがポイントです。 操作からのアプローチ プログラムからのアプローチ ? ユーザーは片手で操作し、親指での ? Manipulationクラスを使えるからタッ 操作が中心 プ、フリック、ピンチというユーザーの ? →タップやフリックで操作する画面 ジェスチャーに対する正確なイベント が必要 を拾える ? →タッチ操作を想定したUIを採 ? →タップやフリックで操作する画面 用する(Manipulationクラスが用 を作る 意されていることは画面の設計 ? →Whyが置き去りになる(なぜそ には関係ない) の画面や機能が必要なのか?) 2nd FACTORY CO.,Ltd. CONFIDENTIAL 64
66.
UX的解 クラウドサービスアプリケーション開発とは分業に尽きると感じました。分業というのは大規 模案件では当たり前のことなのですが、クラウドサービスアプリケーション開発においては、 案件規模に関わらず、UXの専門家、サービス配信の専門家、UIの専門家がチームを組んで 案件を進めることがユーザーにとって最も有用な体験を与えると考えています。
Model Service Information Function User UI Architecture Product UX 2nd FACTORY CO.,Ltd. CONFIDENTIAL 65