1.インターネット証券におけるマルチクライアント開発事例

インタ ネット証券における
インターネット証券における
マルチクライアント開発事例
福岡ソリューション開発部
上席テク カルエンジ ア
上席テクニカルエンジニア
中野 裕隆
2014年11⽉11⽇
講演内容
1. サーバサイドから⾒たシステムのマッシュアップと
インターネット対応の事例紹介
2.
2 多様化するクライアント端末の開発現場
3. 肥⼤化するクライアント開発保守にどう向き合うか
1
第1章
サーバサイドから⾒たシステムのマッシュ
アップとインタ ネット対応の事例紹介
アップとインターネット対応の事例紹介
2
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
ご紹介事例の概要
„ 弊社が提供するオンライントレ
弊社が提供するオンライントレードシステム(B2B2C)
ドシステム(B2B2C)
„ 同時利⽤者は数万⼈
„ インターネット上にさまざまなデバイスに対してアプリケーションを提供
① PCリッチクライアント
② Webブラウザ
W bブラウザ
ヘビーユーザー・⼀般ユーザ向け
リッチクライアント
⼀般ユーザー向け
④ デジタルサイネージ
対⾯⽀店設置⽤
3
⑥ RSS
(EXCEL Real time Spread Sheet)
③ スマートフォン/
タブレットクライアント
⼀般ユーザ向け
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
システムが企画された2005年当時の状況
店頭端末
ロイタ
Q C 社
ロイター・QUICK社
等の情報端末
TPモニター通信
受発注システム
取引所
売買システム
専⽤線バイナリ通信
投資情報システム
ビデオ配信
ビデオシステム
4
リアルタイム情報
システム
取引所
相場報道
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
情報系機能と受発注機能のマッシュアップ
①システムの性能の差異
„ 求められた情報系機能と受発注機能のマッシュアップ
発注
各システムで想定している利⽤者数や
レスポンス時間が異なる
履歴
情報
インタ ネ ト
インターネット
多種のオンライン
トレーディングクライアント
④クライアントの複雑性
クライアントが各システムに対して
同時に多様な通信が⾼頻度で発⽣
③多種多様なプロトコル通信
多種多様なクライアントとの通信を⾏うた
め、インターネット上で利⽤できるプロト
コル(通信フォーマット)が必要
5
銘柄
情報
チャート
データ
板
データ
受発注システム
投資情報システム
リアルタイム情報
システム
取引所
売買システム
②多⼤なPush通信
相場報道データが送信頻度が⾼く
(約10万件/s)、その更新に中継
サーバ
サ
バ、及びクライアントCPUを
及びクライアントCPUを
圧迫してしまう
取引所
相場報道
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
受発注システム(アクセスを集中させない仕組み)
R/Rサ
バ
R/Rサーバ
Cacheサーバ
Cacheサ
バ
受発注システム
証券取引所への発注
や投資家の取引履歴
データを持つ
デ タを持
証券
取引所
銘柄のマスタや株価データな
どヒストリカル情報を持つ
弊社投資情報
システム
多種のクライアント
Topicサーバ
P/Sサーバ
6
Feedサーバ
最新の株価データを
フィード配信する
弊社リアルタイム
情報システム
Cacheサーバのメモリキャッ
シュを検索。存在しない場合
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
は受発注システムへ
受発注システム(アクセスを集中させない仕組み)
R/Rサ
バ
R/Rサーバ
Cacheサーバ
Cacheサ
バ
受発注システム
注⽂情報取得の
リクエスト
証券
取引所
Cacheサーバでそのデータを
キャッシングし、R/Rに返却
多種のクライアント
Topicサーバ
P/Sサーバ
7
取得対象のデータをDBから
取得し、Cacheサーバに返す
弊社投資情報
システム
Feedサーバ
弊社リアルタイム
情報システム
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
受発注システムから
Cacheサーバのメモリキャッ
C
h サ バのメモリキ
受発注システム(アクセスを集中させない仕組み)
シュを更新
データを取り直す
R/Rサ
バ
R/Rサーバ
Cacheサーバ
Cacheサ
バ
受発注システム
リアルタイム発注情報
証券
取引所
マルチキャスト
送信
多種のクライアント
各種クライアント
にデータをPush
Topicサーバ
P/Sサーバ
8
弊社投資情報
システム
Feedサーバ
弊社リアルタイム
情報システム
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
投資情報システム(アクセスを集中させない仕組み)
R/Rサ
バ
R/Rサーバ
別途クライアントからのデータ取
得リクエストに対して、R/Rサー
バのキャッシュから返す
さらに、R/Rサーバ起動時にも
予めFeedサーバから現在の最新
Cacheサーバ
Cacheサ
バ
受発注システム
断⾯データをキャッシュ
Feedサーバ起動時に予め現在の
最新断⾯データをキャッシュ
弊社投資情報
システム
多種のクライアント
Topicサーバ
P/Sサーバ
9
証券
取引所
Feedサーバ
弊社リアルタイム
情報システム
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
リアルタイム情報システム(CPU利⽤率を抑える仕組み)
R/Rサ
バ
R/Rサーバ
Cacheサーバ
Cacheサ
バ
受発注システム
メモリキャッシュ
の内容を更新
証券
取引所
マルチキャスト
送信
多種のクライアント
各種クライアント
にデータをPush
Topicサーバ
P/Sサーバ
メモリキャッシュの内容を更新
内
して、Topicサーバに送信
10
弊社投資情報
システム
リアルタイム情報
・最新株価
・板情報(気配)
など…
Feedサーバ
弊社リアルタイム
情報システム
数msec単位でバッファリ
数
単位 バ
ングして間引き処理
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
多種多様なプロトコル通信
①リクエスト/リプライ
・XML・CSV
・HTTP GET/POST・HTML
JSON JSON
・JSON・JSON
②Push通信
・バイナリ
・CSV
WebSocket
・WebSocket
・SPDY
開発時期やクライアントの開発フレームによって、
通信プロトコルの変遷を強いられてきた
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
多種多様なプロトコル通信
デバイスの画⾯の⼤きさにより⼀度に表⽰できるデータが
デバイスの画⾯の⼤きさにより
度に表⽰できるデ タが
異なるため、必要になるデータも異なる
※株価ボードを例として、クライアントが表⽰する情報を表に⽰す。
銘柄コード 現値
銘柄名
始値
⾼値
安値
出来⾼
前⽇⽐
値幅上
限下限
PC版
○
○
○
○
○
○
Web版
○
○
○
○
○
○
携帯W b
携帯Web
○
○
○
○
スマートフォン
○
○
○
○
○
信⽤
情報
○
ファンダ
メンタル
○
○
○
○
○
○
○
Excel
全てのデータを返すことは⾮効率的であり
全てのデータを返すことは⾮効率的であり、CPUや
CPUや
メモリの圧迫につながる。
デバイスに合わせたデ タを返すべき
デバイスに合わせたデータを返すべき
12
※上記の表は、実際我々が開発しているのものとは多少異なります。
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
多種多様なプロトコル通信
•
変換フィルターを介してレスポンスを返す
– ビジネスロジックは全デバイスで共⽤
– アスペクトを適⽤することにより、電⽂プロトコルの変換と電⽂
適
⽂プ
変換
⽂
量の調整のロジックをビジネスロジックから分離
R/Rサーバ
サ バ
プロトコル変換
フィルタ
情報量調整
フィルタ
共通ビジネス
ロジック
多種のクライアント
13
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
クライアントの複雑性
•
デバイスの画⾯サイズやユーザの設定によって画⾯レイアウトが異な
るため、同⼀のタイミングで取得する情報の単位も異なる
•
それぞれの画⾯要素は同⼀であっても、組み合わせは無数となり、BL
の数が膨⼤にな てしまう
の数が膨⼤になってしまう
銘柄⼀覧
板・
その他銘柄情報
その他銘柄情報
銘柄⼀覧
関連ニュース
歩み値
関連ニュース
14
同⼀のタイミングで複数種類のデータ取得を、様々な
チャ ト
チャート
チャート
組み合わせで取得しなければならない
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
クライアントの複雑性
• IoC(Inversion of Control)
画⾯の組み合わせ分のサーバActionを作る冗⻑性を回避するための
仕組み
① 1回のリクエストで要求するBLの組み合わせを
クライアント主導で動的にコマンドを作成して送信
② クライアントより渡されたコマ
ンドに従ってBLをコールする。
ビジネス
ロジックA
IoC
(クライアントにコン
トロールされる制御の
逆転機構)
多種のクライアント
15
③ 動的なレスポンスとしてそれぞれ
のデータセットへ適⽤
ビジネス
ロジックB
ビジネス
ロジックC
1. サーバサイドから⾒たシステムのマッシュアップとインターネット対応の事例紹介
第1章のまとめ
マッシュアップの問題点とアプロ チ
マッシュアップの問題点とアプローチ
①各システムの性能の差異
⇒ ・キャッシュの利⽤
・ネットホップの削減
②多⼤なPush通信
⇒ ・マルチキャストによりサーバからネット機器へCPU利⽤量を移管
・断⾯データの間引き
③多種多様なプロトコル通信
⇒ ・アスペクトの利⽤により、BLとプロトコルを分離
④クライアントの複雑性
⇒ IoCにより、要素単位のBLと呼び出しアクションを分離
16
第2章
多様化するクライアント端末の開発現場
17
クライアント開発における開発⾔語選択の観点
①開発対象の機能要件が満たせる事
②実⾏時の軽快性(省CPU,省メモリ)
③⽣産性、再利⽤性の⾼さ
④開発要員、保守要員の確保、教育の容易さ
①、②
③、④
常にトレ ドオフな関係にある
常にトレードオフな関係にある。
18
各種クライアントの利⽤技術
弊社が提供するクライアント、デバイスの利⽤技術
主な利⽤技術
MS系技術
NET
・.NET
・Silverlight
クライアントの種類
Win PC版
汎⽤Web版
汎⽤W b版
MS Excel RSS
デジタルサイネージ
HTML5
Objective-C
19
汎⽤携帯端末版
IPone/IPad版
対象OS
Windows
Windows、MacOSなど
Wi d
M OSなど
Windows(Excel)
Windows
Android端末、iOS端末など
iOS
.NETによるアプリケーション
対象デバイス
■PC版
・Windows
■Web版(Silverlite版)
・Windows、MacOS
■MS Excel RSS版
・Windows
・MS Excel
■デジタルサイネージ版(Silverlite版)
・Windows
20
.NETによる開発
⼦ウィンドウ(分析チャート)
⼦ウィンドウ(分析チャ ト)
メイン画⾯
⼦ウィンドウ(SS発注)
21
.NETによる開発
22
.NET(Silverlight)による開発
メイン画⾯
23
チャート画⾯
.NET(Silverlight)による開発
24
MS Excel RSS
MS Excelに⼀覧を作成し、リアルタイム⾃動更新させることが出来る
さらに 当⽇の注⽂情報や約定情報の取得 注⽂も可能
さらに、当⽇の注⽂情報や約定情報の取得、注⽂も可能
25
MS Excel RSS
26
デジタルサイネージ
27
.NET版の動作概要
DataSetの変更箇所か
ら⾃動で画⾯コンポーネン
⾃動
トに反映
クライアントプログラム
初めの取得のみ
サーバプログラム
.NETランタイム
NETランタイム
画⾯
コンホ
ーネント
コンポーネント
変更を受けイベントを発
変更を受けイベントを発
⽣、更新箇所を光らせる
⽣して、値の描画。この
描画を⾏う。
とき、値が⼊った箇所を
光らせる描画を⾏う
・このとき、CPU利⽤率
このとき CPU利⽤率
の削減のために、バッ
ファリングして光らせる
イベントの発⽣を抑える。
28
⾃
動
バ
イ
ン
ド
DataSet
(Bean)
D t S tへの反映
DataSetへの反映
更新
処理
Push
受信部
Push受信
・全く同じ値のPushの場合
にはセットしない
・⾃動バインドにより、ModelとViewの完全分離
・C⾔語やC++⾔語に⽐べソースコードの量も少なくて済む
(約3分の1程で済んでいる)
.NET版 CPU利⽤率
CPU利⽤率をほぼ
5%以内で抑えられ
以内 抑えられ
ている。
最も激しいときで、
⼀時的に13%程度
29
.NET版の開発現場
⾼⽣産性
開発ツール
・Visual Studio
vs
性能問題
プロファイラツール
・ ANTS(Red Gate社)
開発
・.NETコンポーネント
.NETコンポ ネント
・オブジェクト指向⾔語
開発
・⼀部 Win32API
・⼀部、Win32API
30
.NETによる開発のメリット、デメリット
メリット
●⽣産性・再利⽤性が⾼い
●要員削減が可能、要員確保が容易
●その他
・WEB版は、SilverlightのランタイムがFlashなどに⽐べ軽い
WEB版は Sil li htのランタイムがFl hなどに⽐べ軽い
・PC版、WEB版、RSS、デジタルサイベージで共通コードの
流⽤が可能
デメリット
●軽快性の確保には専⾨的知識や⼯夫を要する
31
HTML5による開発
対象デバイス
iOS端末(IPh
IP d)
・iOS端末(IPhone、IPad)
・Android端末(スマートフォン、タブレット)
発注
チャート
32
リアルタイム株価
HTML5による開発
33
HTML5によるアプリケーションの動作環境
配布⽅式
・アプリケーションとして提供
HTMLの確実な動作を保障
・HTMLの確実な動作を保障
端末
ネイティブAPL
③次の動作時に、
デプロイサーバ
デプロイサ
バ
Versionを確認
Version
情報
HTML5
アプリケーション
①まずは、ネイティブAPLを
ダウンロード
34
②初めのときにDL
HTML5
アプリケーション
④今あるVirsionより新しい場合
④今あるVi i より新しい場合
は、いったんキャッシュ内のア
プリを削除して最新をDL
HTML5版の動作概要(開発フレームワークの変遷)
「Sencha」を利⽤
・View、Model、Controlの分離が不⼗分
・⾃動バインド機構がないため、Pushの実装が不可能
⾃動バインド機構がないため、Pushの実装が不可能
(リソース⾯で)
クライアントプログラム
画⾯
コンホ
ネント
コンポーネント
マ
ッ
ピ
ン
グ
②更新されたデータ
を画⾯コンポーネントに
マッピング
DataSet
(Bean)
③描画更新
35
更新
処
処理
①ポーリング(定期
的なデータ更新)
サーバプログラム
HTML5版の動作概要(開発フレームワークの変遷)
「AngularJS」に移⾏中
・⾃動バインドの機構がある
・ View、Model、Controlの分離開発が可能
View Model Controlの分離開発が可能
・「SPDY」を⽤いたPushが可能
HTML5でも.NET版と同様のア キテクチャで実装可能に
⇒HTML5でも.NET版と同様のアーキテクチャで実装可能に
クライアントプログラム
画⾯
ホ ネ ト
コンポーネント
③DataSetの変更箇所から
⾃動で画⾯コンポーネントに反映
⾃
動
バ
イ
ン
ド
DataSet
(Bean)
①初めの取得のみ
サーバプログラム
更新
処理
Push
受信部
②SPDYによる
Push受信(検討中)
36
HTML5版の開発現場
⾼⽣産性
37
vs
性能問題
機能実現性
開発ツール
・Webstone
・Visual
Vi
l St
Studio
di
デバッガ、プロファイラ
・Google Crome
開発
・HTML5
HTML5
・JavaScript
・フレームワーク
開発
・画⾯コンポ ネントはほぼ⾃作
・画⾯コンポーネントはほぼ⾃作
(JSの肥⼤化)
・ネイティブコードの利⽤
(デバイス特有のUIの実装)
HTML5による開発のメリット、デメリット
メリット
●⽣産性・再利⽤性が⾼い
●要員削減が可能、要員確保が容易
デメリット
●軽快性に問題が⽣じる場合がある
●機能要件が満たせない場合もある
●その他
・⾔語仕様的にタイプセーフでない
・実装フレームワークが成⻑途上である
38
Objective-C(ネイティブ⾔語)による開発
機能要件として、「実⾏時の軽快性」や「デバイスUIをフル活⽤
機能要件として 「実⾏時の軽快性」や「デバイスUIをフル活⽤
すること」が第⼀に求められた場合
全て、ネイティブ⾔語で作成という選択
対象デバイス
・iOS端末(IPhone IPad)
・iOS端末(IPhone、IPad)
39
チャート
板
発注
Objective-C(ネイティブ⾔語)による開発
IPhone版
40
Objective-C(ネイティブ⾔語)による開発
IPad版
41
Objective-Cによるアプリケーションの動作要件
電波状況によりPush通信の動作を動的に変更
・3G:⾃動更新なし
・LTE:ポーリング(定期的な更新)
LTE:ポ リング(定期的な更新)
・wifi:Pushによる更新
デバイス固有のUI動作を反映
・縦や横に傾けたときの表⽰切換え
「スワイプ」による銘柄切換え
・「スワイプ」による銘柄切換え
・「ロングタップ」による設定画⾯の表⽰
・「シェイク」による画⾯遷移
・⾳声⼊⼒
⾳声 ⼒
42
Objective-C版の動作概要
3G接続時、LTE接続時
3G接続時はクリックなどの
動作をトリガーとして最新値
動作をトリガ
として最新値
をサーバから再取得
クライアントプログラム
画⾯
コンポーネント
反
映
サーバプログラム
コレクション
(Bean)
更新
処理
LET接続時はポ リング
LET接続時はポーリング
wifi接続時
コレクションの変更箇所を画⾯コン
ポーネントに反映させ部分的に再描画
クライアントプログラム
画⾯
コンポーネント
43
反
映
コレクション
(
(Bean)
)
(内部で定期的に⾃動更新)
初めの取得のみ
更新
処理
Push
受信部
CSVによる
Push受信
サーバプログラム
Objective-C版の開発現場
⾼⽣産性
vs
開発ツール
・Xcode
開発
・Objective-C
・フレームワーク「Cocoa」
フレ ムワ ク「
」
44
性能問題
デバッガ、プロファイラ
・Xcode
開発
部分的にC⾔語によるコ ディング
・部分的にC⾔語によるコーディング
・画⾯デザインに専⽤のエディタを使
うと動作が重くなる
→UIコンポーネントも⾃作
UIコンポ ネントも⾃作
→データバインディング部分も⾃作
ネイティブ⾔語による開発のメリット、デメリット
メリット
●実⾏時の軽快性の確保が容易
●難しい機能要件にも対応できる
デメリット
●⽣産性・再利⽤性が落ちる
●要員確保が困難 教育にも⼿間がかかる
●要員確保が困難、教育にも⼿間がかかる
●その他
低レベル⾔語のため、メモリリークなど安定動作のためのテ
スト観点が増える
45
第3章
肥⼤化するクライアント保守にどう向き合うか
46
3.肥⼤化するクライアント保守にどう向き合うか
• クライアント技術と携帯端末には流⾏り廃りがあり、移り変わりが激しい
クライアント技術と携帯端末には流⾏り廃りがあり 移り変わりが激しい
• さらに、それら要素技術にはバージョンアップ(仕様変更)が⼊ることもよくある
2000年
PC
(クライアント技術)
2005年
2010年
クライアント/サーバ
アプリ型 リッチクライアント
W bブラウザ型
Webフ
ラウサ 型 リッチクライアント
携帯端末
携帯電話
iPhone
iPad
スマートフォン(Android搭載)
その他
汎⽤技術
•
47
タブレット
(Android搭載)
HTML5
また、クライアントの数が増えると開発⾔語や技術が異なるため、
それぞれにおける開発要員や保守要員の確保、教育
開発要員や保守要員の確保、教育が必要となる。
⾔語統⼀への動き
HTML5で、.NETと同じアーキテクチャでの実装が可能
⇒ 各ランタイム⾔語のHTML5化が今後⾏われるのでは!?
⾔語統⼀に向けた動きの⼀例
.NET
書き直し
(ActionScript)
i
i
コンパイル
ンパイル
JavaScript
48
Flash
・Microsoftが開発したスクリプト⾔語
・オープンソース
・オ
プンソ ス
・タイプセーフな⾔語
・オブジェクト指向⾔語
・.NETやFlashのActionScript等に近い⾔語
・現在、VisualStudio2012、2013に追加イン
ストールにより利⽤が可能
.NET開発者による
開発者によるTypeScript
TypeScript開発
yp
p 開発が
・.NET
今後の主流になる可能性も
・全てのクライアントがこのTypeScriptで開
発され、開発⾔語の統⼀が可能かも?
⾔語統⼀を妨げるもの
新ツールの向上
・IDE
・プロファイラ
プロファイラ
新フレームワーク
向上する
デバイスリソース
軽快なプロトコルの
提唱
新⾔語
・⾼レベル⾔語
⾼レベル⾔語
・フレームワーク
VS
ネイティブ⾔語
新デバイスの登場
・OSバージョンアップ
・wearable化
不⾜する
デバイスリソ ス
デバイスリソース
肥⼤化する
機能要件
⻑期的には ⾔語統 の⽅向に向かうだろうが
⻑期的には、⾔語統⼀の⽅向に向かうだろうが・・・
49
3.肥⼤化するクライアント保守にどう向き合うか
① サーバサイドのアーキテクチャの設計
・レスポンス応答の⾼速性
⼤量アクセスへの対応
・⼤量アクセスへの対応
・プロトコル変換の⾃由度
・BLの再利⽤性の向上
② クライアントアーキテクチャの統⼀
・MVC+⾃動バインド機構の導⼊
③ 開発⾔語の統⼀化
・開発要員、保守要員の確保、教育の容易性
・開発ノウハウの共通化
・⽣産性の向上
50
51