狠狠撸

狠狠撸Share a Scribd company logo
Riaアーキテクチャー研究会 第3回 セッション3
2nd FACTORY CO.,Ltd. CONFIDENTIAL   1
2nd FACTORY CO.,Ltd. CONFIDENTIAL   2
2nd FACTORY CO.,Ltd. CONFIDENTIAL   3
1



    2nd FACTORY CO.,Ltd. CONFIDENTIAL   4
2nd FACTORY CO.,Ltd. CONFIDENTIAL   5
Riaアーキテクチャー研究会 第3回 セッション3
NUI + Microsoft




                  2nd FACTORY CO.,Ltd. CONFIDENTIAL   7
2nd FACTORY CO.,Ltd. CONFIDENTIAL   8
2nd FACTORY CO.,Ltd. CONFIDENTIAL   9
2nd FACTORY CO.,Ltd. CONFIDENTIAL   10
例えば




      2nd FACTORY CO.,Ltd. CONFIDENTIAL   11
例えば




      2nd FACTORY CO.,Ltd. CONFIDENTIAL   12
例えば




      2nd FACTORY CO.,Ltd. CONFIDENTIAL   13
2nd FACTORY CO.,Ltd. CONFIDENTIAL   14
2nd FACTORY CO.,Ltd. CONFIDENTIAL   15
クラウド市场动向




           2nd FACTORY CO.,Ltd. CONFIDENTIAL   16
2nd FACTORY CO.,Ltd. CONFIDENTIAL   17
2nd FACTORY CO.,Ltd. CONFIDENTIAL   18
2nd FACTORY CO.,Ltd. CONFIDENTIAL   19
2nd FACTORY CO.,Ltd. CONFIDENTIAL   20
何故いきなり成熟期を迎えるのか




        2nd FACTORY CO.,Ltd. CONFIDENTIAL   21
2nd FACTORY CO.,Ltd. CONFIDENTIAL   22
2nd FACTORY CO.,Ltd. CONFIDENTIAL   23
2nd FACTORY CO.,Ltd. CONFIDENTIAL   24
余计な思考


                            赤は1、青は2、黄色は3を押してください。

                                             1   2   3




                                                     赤
「何色の●が一番多い?」


    UI 操作の為の思考ストレスを排除、
        本来の目的に意識を集中。

         2nd FACTORY CO.,Ltd. CONFIDENTIAL                       25
ゲームが参考になる日も近い




        2nd FACTORY CO.,Ltd. CONFIDENTIAL   26
ゲームが参考になる日も近い



?         ?                                 ?
?         ?                                 ?
?         ?                                 ?
?         ?                                 ?
?         ?
?         ?




?         ?                                 ?
?         ?                                 ?
?         ?                                 ?
?         ?
?         ?
?         ?
?




        2nd FACTORY CO.,Ltd. CONFIDENTIAL       27
?



?


?

?




    2nd FACTORY CO.,Ltd. CONFIDENTIAL   28
2nd FACTORY CO.,Ltd. CONFIDENTIAL   29
2



    2nd FACTORY CO.,Ltd. CONFIDENTIAL   30
2nd FACTORY CO.,Ltd. CONFIDENTIAL   31
東海


高尾                         東海

      XA            XD
                                    東海
AA            ID           IA

       AD           VD
高尾




2nd FACTORY CO.,Ltd. CONFIDENTIAL        32
XD                       IA



XA                       VD



ID                       AD



AA

     2nd FACTORY CO.,Ltd. CONFIDENTIAL   33
XA              XD


AA           ID            IA


     AD             VD




2nd FACTORY CO.,Ltd. CONFIDENTIAL   34
?
?
    –




        2nd FACTORY CO.,Ltd. CONFIDENTIAL   35
エクスペリエンスデザインワークフロー




        2nd FACTORY CO.,Ltd. CONFIDENTIAL   36
?
?
?
    2nd FACTORY CO.,Ltd. CONFIDENTIAL   37
2nd FACTORY CO.,Ltd. CONFIDENTIAL   38
2nd FACTORY CO.,Ltd. CONFIDENTIAL   39
2nd FACTORY CO.,Ltd. CONFIDENTIAL   40
2nd FACTORY CO.,Ltd. CONFIDENTIAL   41
2nd FACTORY CO.,Ltd. CONFIDENTIAL   42
2nd FACTORY CO.,Ltd. CONFIDENTIAL   43
2nd FACTORY CO.,Ltd. CONFIDENTIAL   44
2nd FACTORY CO.,Ltd. CONFIDENTIAL   45
?


?


?
?
?


    2nd FACTORY CO.,Ltd. CONFIDENTIAL   46
2nd FACTORY CO.,Ltd. CONFIDENTIAL   47
2nd FACTORY CO.,Ltd. CONFIDENTIAL   48
2nd FACTORY CO.,Ltd. CONFIDENTIAL   49
2nd FACTORY CO.,Ltd. CONFIDENTIAL   50
2nd FACTORY CO.,Ltd. CONFIDENTIAL   51
3   クラウドサービスApp特有のUX的解




        2nd FACTORY CO.,Ltd. CONFIDENTIAL   52
2nd FACTORY CO.,Ltd. CONFIDENTIAL   53
?
    –
    –


?
    –
    –




        2nd FACTORY CO.,Ltd. CONFIDENTIAL   54
?
    –
        ?
        ?


?
    –
?
    –

?
    –




            2nd FACTORY CO.,Ltd. CONFIDENTIAL   55
?
        –

            …          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
KabucomData

                                                     KabucomData.StockTile.Base.FinancialPrice




              プログラマーの方々が、KabucomData
              からのドットシンタックスで、すべての
              エレメントにアクセスできることを意識
              した設計をしました。




                                               KabucomData.Users[0].ApplicationSetting.SkinType




                2nd FACTORY CO.,Ltd. CONFIDENTIAL                                                 57
凡例                                                                             音声                               文字                画像
           銘柄                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
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
?
    –


             クラウド
        Azure/オンプレミス




                                                           ID/Pass
              認証済みトークン/エラー




                認証済みトークン
                                                               認証済みトークン


                                                    認証済みトークン   分離ストレージ
          認証が必要なデータ




                       2nd FACTORY CO.,Ltd. CONFIDENTIAL                  60
?
      –
                                                                        データアクセスレ
                                                          ファサード(今回
    App.xaml    XAML        コードビハインド        ViewModel                    イヤー(通信と      サービス
                                                           はAccessor)
                                                                          ローカル)


               データテンプレート、                                                ローカルデータアク
     タイマー制御                   ページ初期化          コマンド実装         オンライン判定                  認証サービス
               データコンテキスト                                                    セス




               トランシジョン、アニ
                             イベント、イベントハ     インジケーターの制                    サーバーAPI呼び出
               メーションコンポー                                     データアクセス                  データサービス
                                ンドラ             御                            し
                 ネント設置



                各種設定(ロケー
               ター、リソース、コマ
                              システムトレイ                                     コールバック      チャート画像
               ンド、コンバーター、
                 ビヘイビア)



                              アプリケーション
                                                                          完了イベント      音声サービス
                                 バー




                               デストラクタ




                             ナビゲーション制御




                              2nd FACTORY CO.,Ltd. CONFIDENTIAL                                61
? 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
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
設計の段階からWindows 8への展開を想定していた本案件の場合、Metro UIの採用に
よってタッチインタラクションの実装が楽になりました。
 プログラムより先にユーザーの操作についてデザインされていたことがポイントです。




      操作からのアプローチ                     プログラムからのアプローチ
      ? ユーザーは片手で操作し、親指での ? Manipulationクラスを使えるからタッ
        操作が中心                     プ、フリック、ピンチというユーザーの
        ? →タップやフリックで操作する画面        ジェスチャーに対する正確なイベント
          が必要                     を拾える
          ? →タッチ操作を想定したUIを採       ? →タップやフリックで操作する画面
            用する(Manipulationクラスが用   を作る
            意されていることは画面の設計          ? →Whyが置き去りになる(なぜそ
            には関係ない)                   の画面や機能が必要なのか?)




                  2nd FACTORY CO.,Ltd. CONFIDENTIAL      64
UX的解
 クラウドサービスアプリケーション開発とは分業に尽きると感じました。分業というのは大規
模案件では当たり前のことなのですが、クラウドサービスアプリケーション開発においては、
案件規模に関わらず、UXの専門家、サービス配信の専門家、UIの専門家がチームを組んで
案件を進めることがユーザーにとって最も有用な体験を与えると考えています。




     Model


             Service        Information    Function        User
      UI



   Architecture                   Product                  UX



                       2nd FACTORY CO.,Ltd. CONFIDENTIAL          65

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