SlideShare a Scribd company logo
1 of 66
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
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

Viewers also liked

advance auto parts 2004_ar
advance auto parts 2004_aradvance auto parts 2004_ar
advance auto parts 2004_ar
finance48
 
Thesis012910
Thesis012910Thesis012910
Thesis012910
klee4vp
 
omnicare annual reports 2000
omnicare annual reports  2000omnicare annual reports  2000
omnicare annual reports 2000
finance46
 
liz claiborne AR_2004
liz claiborne  AR_2004liz claiborne  AR_2004
liz claiborne AR_2004
finance48
 
FIS Raymond James 30th Institutional Investors Conference March 2009
FIS Raymond James 30th Institutional Investors Conference March 2009FIS Raymond James 30th Institutional Investors Conference March 2009
FIS Raymond James 30th Institutional Investors Conference March 2009
finance48
 
CloroxAR08_Letter
CloroxAR08_LetterCloroxAR08_Letter
CloroxAR08_Letter
finance48
 
Presentation
PresentationPresentation
Presentation
smartwtp
 
CLOrox fy05_q3_spmt
CLOrox   fy05_q3_spmtCLOrox   fy05_q3_spmt
CLOrox fy05_q3_spmt
finance48
 

Viewers also liked (20)

The Local Government Research Group
The Local Government Research GroupThe Local Government Research Group
The Local Government Research Group
 
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternRIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
 
Khursheed khawar peshawar night Part-1
Khursheed khawar peshawar night Part-1Khursheed khawar peshawar night Part-1
Khursheed khawar peshawar night Part-1
 
clx_q4fy04
clx_q4fy04clx_q4fy04
clx_q4fy04
 
advance auto parts 2004_ar
advance auto parts 2004_aradvance auto parts 2004_ar
advance auto parts 2004_ar
 
Thesis012910
Thesis012910Thesis012910
Thesis012910
 
omnicare annual reports 2000
omnicare annual reports  2000omnicare annual reports  2000
omnicare annual reports 2000
 
Somma E Differenza
Somma E DifferenzaSomma E Differenza
Somma E Differenza
 
Losh
LoshLosh
Losh
 
Make-up
Make-upMake-up
Make-up
 
liz claiborne AR_2004
liz claiborne  AR_2004liz claiborne  AR_2004
liz claiborne AR_2004
 
Locovore
LocovoreLocovore
Locovore
 
FIS Raymond James 30th Institutional Investors Conference March 2009
FIS Raymond James 30th Institutional Investors Conference March 2009FIS Raymond James 30th Institutional Investors Conference March 2009
FIS Raymond James 30th Institutional Investors Conference March 2009
 
2009 Lenca Update
2009 Lenca Update2009 Lenca Update
2009 Lenca Update
 
CloroxAR08_Letter
CloroxAR08_LetterCloroxAR08_Letter
CloroxAR08_Letter
 
State Of The Economy
State Of The EconomyState Of The Economy
State Of The Economy
 
Presentation
PresentationPresentation
Presentation
 
CLOrox fy05_q3_spmt
CLOrox   fy05_q3_spmtCLOrox   fy05_q3_spmt
CLOrox fy05_q3_spmt
 
I festival de poesias mids
I festival de poesias   midsI festival de poesias   mids
I festival de poesias mids
 
Emixion Koffie verkeerd presentatie - Hoe communiceren met Google
Emixion Koffie verkeerd presentatie - Hoe communiceren met GoogleEmixion Koffie verkeerd presentatie - Hoe communiceren met Google
Emixion Koffie verkeerd presentatie - Hoe communiceren met Google
 

Similar to Riaアーキテクチャー研究会 第3回 セッション3

Wakameとか仮想化とか
Wakameとか仮想化とかWakameとか仮想化とか
Wakameとか仮想化とか
Satoshi Hirata
 
#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド
SolarisJPNight
 

Similar to Riaアーキテクチャー研究会 第3回 セッション3 (20)

[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 
VR端末開発研究
VR端末開発研究VR端末開発研究
VR端末開発研究
 
Wakameとか仮想化とか
Wakameとか仮想化とかWakameとか仮想化とか
Wakameとか仮想化とか
 
#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド
 
Cassandra Summit Tokyo 2015 - intra-mart
Cassandra Summit Tokyo 2015 - intra-martCassandra Summit Tokyo 2015 - intra-mart
Cassandra Summit Tokyo 2015 - intra-mart
 
クラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーションクラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーション
 
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
 
Hadoop Conference Japan 2009 - NTT Data
Hadoop Conference Japan 2009 - NTT DataHadoop Conference Japan 2009 - NTT Data
Hadoop Conference Japan 2009 - NTT Data
 
自社に適したクラウドの見つけ方
自社に適したクラウドの見つけ方自社に適したクラウドの見つけ方
自社に適したクラウドの見つけ方
 
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
 
IoTに必要な通信「SORACOM」入門セミナー 20160616
IoTに必要な通信「SORACOM」入門セミナー 20160616IoTに必要な通信「SORACOM」入門セミナー 20160616
IoTに必要な通信「SORACOM」入門セミナー 20160616
 
IBMの新世代クラウドサービス「SoftLayer」を徹底解説
IBMの新世代クラウドサービス「SoftLayer」を徹底解説IBMの新世代クラウドサービス「SoftLayer」を徹底解説
IBMの新世代クラウドサービス「SoftLayer」を徹底解説
 
Hbstudy41 slide
Hbstudy41 slideHbstudy41 slide
Hbstudy41 slide
 
Bee Style:vol.009
Bee Style:vol.009Bee Style:vol.009
Bee Style:vol.009
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Quiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasiaQuiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasia
 
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
 
JAWS-UG東京 - 2019-09-26 - Gateway祭
JAWS-UG東京 - 2019-09-26 - Gateway祭JAWS-UG東京 - 2019-09-26 - Gateway祭
JAWS-UG東京 - 2019-09-26 - Gateway祭
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
 
Git超入門(ハンズオン).pdf
Git超入門(ハンズオン).pdfGit超入門(ハンズオン).pdf
Git超入門(ハンズオン).pdf
 

Recently uploaded

Recently uploaded (7)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Riaアーキテクチャー研究会 第3回 セッション3

  • 1.
  • 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
  • 7.
  • 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