NASDAQの1日を完全再現するAIRアプリ「Market Replay」

アメリカの株式市場「NASDAQ」では、投資家やブローカー向けのサービスとして、市場の動向を再現できるAIRアプリケーション「NASDAQ Market Replay」を提供しています。世界最大の株式市場で行われる取引を再現するには、とてつもなく膨大な量のデータを扱わなければなりません。しかも、素早く快適な操作性が求められます。この高いハードルが要求されるアプリケーションの開発・運用をいかに低コストで実現するか、NASDAQのデベロッパーが模索した結果たどり着いたのが、開発フレームワークとしてAdobe Flex、ランタイム環境としてAdobe AIRという組み合わせでした。

by Julie Campagna

NASDAQ Market Replay」は、市場で1日に起きた取引の詳細情報をチェックできる、投資家やブローカー向けのデスクトップアプリケーションです。たとえば、いつ株式取引が行われたのかを調べたり、市場で起きたことを早送り/巻き戻し再生したりできるなど、まるでリアルタイムで見ているかのように市場動向をチェックできます。

「私は個人投資家としての経験もあり、NASDAQ Market Replayのようなアプリケーションを開発したいと思っていました。以前は、いくつか株を買ってみたものの、株式取引で見ていた価格と違う価格で購入していることに気づき、“一体、何が起こったんだ?”と頭を抱えてしまうことがあったものです。その後、NASDAQの仕事をするようになり、投資家の方々が市場の動向をより理解しやすいプロダクトを開発するプロジェクトに参加する機会に恵まれました。ただ、市場動向を再現するプロダクトの案をいろいろと提案したのですが、常に指摘された問題は、提案内容のプロダクトでは開発コストが高すぎるということでした」(NASDAQ OMX Global Data Product アソシエイト・バイスプレジデント Claude Courbois)

まず第1に、膨大なデータベースからの何千ものデータリクエストに素早くレスポンスするには、データベースとサーバの性能を拡張しなければなりません。

「そのためには、市場データのすべてをオンラインに保存しておく必要があり、相当なコストがかかります。それでは、お客様に無償でプロダクトを提供することはできません。有償となってしまいます」(Courbois)

ところが、2007年の夏、Courbois氏はインターンを1人雇い、彼に「市場再現アプリケーションの調査と開発」という無理難題を課したのです。そして、そのインターンは、Adobe FlexとAIRベータ版をダウンロードして、プロトタイプの作成を始めました。

3カ月後、稼働するプロトタイプが完成し、Courbois氏はそれをNASDAQの幹部たちに見せました。幹部たちの反応は非常に良く、社内から6人のWebデベロッパーが選ばれ、プロジェクトにフルタイムで取り組み、Courbois氏を手伝うようになりました。

日本語訳を表示 / 非表示

Claude Courbois

NASDAQ Market Replayは、これまでにない方法で市場経過・動向データをチェックできるアプリケーションです。市場関連データは膨大で、非常に多くの株価変更や取引が行われているだけに、みなさん、市場を把握したり、分析したりするのに非常に苦労していたと思います。

長い間みなさんが苦しんでいたこの問題を解決しようと、もっと素早くデータにアクセスして解析し、みなさんの要望に応えることができるようなユーザインターフェイスを構築したいと思っていました。

Oliver Albers

Market Replayは、素晴らしいプロダクトだと思います。NASDAQに勤めて10年になりますが、今までの中で一番エキサイティングなプロダクトですね。使いやすいですし、お客様からは非常によい反応をいただいています。

Claude Courbois

それでは使い方を説明しましょう。まず、株式の銘柄と日付、そして時間を入力して「run」ボタンをクリックすると、画面左下に再生データファイルリストが表示されます。次に「replay」ボタンをクリックすると、再生データがタイムチャートに表示されます。その下にはユーザーのオーダーブック(注文控元帳)、その横には分析情報が表示されます。この分析情報は、サーバからクライアントのユーザインターフェイスへ送信した詳細データを元に計算処理されたものです。

「play」ボタンをクリックすると、リアルタイムでの市場経過を詳細にシミュレートします。また、タイムチャートの一部分をズーム表示でき、すべての価格変動をチェックすることができます。ミリ秒の間に起きた変動も、ちゃんと表示されています。

何年もの間、Market Replayのようなアプリケーションを作りたいと思っていたのですが、そのコンセプトを話すたびに、「かなりのコストがかかりそうだよね。巨大なデータベースを常時オンラインで稼働させなければならないし、とてつもない額の投資になりそうだ」と言われました。

ところが、昨年の夏、1人の従業員が「Adobe AIR」について教えてくれました。その時に思ったのです。Amazon Web Servicesにフラットなファイルとしてデータを保存するというシンプルなデータサービスと、FlexとAIRを使ったフロントエンドを組み合わせれば、もっとパワフルなアプリケーションを作って市場データを解析できる、と。

Alex Zinder

Flexはフレームワークとして非常に役立ち、おかげで開発スピードを上げることができました。また、FlexはUI開発用に完全なオブジェクト指向のインフラストラクチャを持っており、ずっとJavaScript開発を行ってきた私たちにとっては非常にありがたいことで、何か全く新しいことを覚えるという必要がなくて助かりました。

Julia Sears

Flexには、多くのアドバンテージがあると思います。その1つが、「すぐに使える」と言うことです。デザイン面から言えば、Flexコンポーネントをアプリケーションに配置するだけで、すぐさまフィットします。さらに、コンポーネントには自分のスタイルやデザインを使うこともできますし。そうしたエレメントを開発してアプリケーションに配置するためにかかる時間は、これまで使っていた他の機能やグリッドを使った場合と比べて、はるかに短縮できると思うわ。

トレーダーやトレーダーコミュニティと話をして、大きな懸念材料としてあがったことの1つが、「アプリケーションのアップデート版をシームレスにユーザに届けるようにしつつも、デスクトップの性能やランタイムの性能を保持する」ことが確実にできるかどうか、という点でした。その課題にまさに適切なのがAIRでした。AIRを使えば、アプリケーションの新バージョンをデプロイするだけで、ほぼシームレスにユーザは移行することができます。また、ユーザのマシンのプロセッサパワーを活かすことができます。AIRのおかげで、非常にうまくいったと思います。

Oliver Albers

データをダウンロードするのに、2~10秒そこらしかかかりません。ところが、これまでのやり方だと、SASプログラムができるプログラマーを雇って市場を再構築して市場動向を把握しようとしたら、まる一日かかる作業です。

Claude Courbois

このアプリケーションを見せると、みなさん大変驚きます。技術畑の人の場合だと、彼らはどのくらい大きなデータサイズで、それを分析するのがどれくらい大変なことなのかを知っているので、Market Replayが素早くデータにアクセスして再現し、またかなり詳細なデータまでカバーしていることにビックリしています。データの詳細についてあまり知らない、企業幹部の人たちであっても、株式市場がミリ秒単位で動いていることを初めて知って驚く人もいます。

Market Replayの開発は、非常に素晴らしい体験でした。思っていたよりも早く構築でき、思っていたよりコストもかかりませんでした。NASDAQにとっても、非常にいい稼ぎ頭になってくれるのではないでしょうか。

NASDAQ Market Replayを試したい方は、当社のデータストアからダウンロードできます。Adobe AIRで動きますので、どんなプラットフォームでも動作します。

NASDAQ Market Replayの中身

NASDAQのデベロッパーたちは、Adobe Flex、Adobe AIR、そしてAmazon Simple Storage Services (S3)を使って、NASDAQ Market Replayの開発とデプロイを行いました。

  • FlexとFlex Builderを使って、NASDAQ Market Replayのレイアウト/外観/ビヘイビアなど、ビジュアル面をデザイン。
  • ランタイムとしてAdobe AIRを採用し、デスクトップ環境にデプロイ。NASDAQ Market ReplayとAIRは、Amazon S3から回収した市場データの抽出と解析。
  • Amazon S3 を使って、膨大な時系列市場データの回収と保存。

Flexを使う理由

NASDAQは、社内の取引システムや顧客が利用するWebアプリケーションを構築/保守するためのオープンソースフレームワークとして、Flexを使用しています。そして、Adobe AIRがリリースされたことで、同様にFlexを使ってデスクトップアプリケーションを開発しています。

Flexには、UIデザインやアプリケーション開発に役立つコンポーネントのライブラリが用意されています。Flexフレームワークでは、このような予め組み立てられているコンポーネントをブロックとして、構築していきます。たとえば、NASDAQ Market Replayの場合、Flexチャートコンポーネントを単にアプリケーションへとドラッグ&ドロップして、そのコンポーネントとAmazon S3をFlexチャートライブラリでリンクさせ、アプリケーションのプロトタイプを素早く構築しデプロイしています。

「Flexは、開発プロセスをスピードアップするためのフレームワークとして非常に役立ちました。たとえば、チャートコンポーネントやグリッドコンポーネントを使えば、素早く画面上にデータを表示できるので、テキストの変更やデータの更新内容が瞬時に反映されます。ちなみに、このMarket Replayでは、すべての市場動向データを遅れずにちゃんと表示するためには、0.2秒間隔でデータを更新しなければならないと考えています」(NASDAQ OMX プログラマー Alex Zinder)

「“このMarket Replayは、Flexコンポーネントを使って構築している”と説明すると、みなさん驚きます。おそらく、いわゆるFlexアプリらしい外観とは違うからでしょうね」(Courbois)

Flexはオープンソースなので、デベロッパーの方々は、コンポーネントの外観をNASDAQのプロダクトに合うように拡張したりカスタマイズしたりすることができます。たとえば、グリッドラインはbackgroundElementsレンダラーをカスタマイズしたものを実装しています。他にも、選択ボックスや再生ヘッドUIは、メインチャートディスプレイの上部にあるannotationElementsとして実装しています。

データのマネージメント

データは、フラットファイルとしてAmazon S3に保存されています。1つのファイルには、1銘柄について、北米にある任意の取引所で10分間に行われた取引データが記録されています(NASDAQ にはすでに何百万というファイルが存在し、毎日30万ファイル以上が追加されています)。

Adobe AIRは、そのフラットなファイルを読み込み、ファイル内のデータをもとにアニメーションを再現します。そのため、ユーザは、オンライン/オフラインに関係なく、市場動向を再現することができるのです。

「Amazon S3を利用すれば、無制限に膨らむ時系列市場データの保存を手頃なコストでスケーラブルに実現できます。また、Adobe AIRを利用すれば、ユーザのマシンパワーを使って膨大なデータセットを素早く計算処理できるようになるので、まさに理想的なランタイム環境といえます。このようにデータ処理がかさむ場合には、Adobe AIRのメリットが活かされます。デスクトップ側で取引データの処理ができるおかげで、貴重なデータ解析を低コストでみなさんにお届けできています」 (Courbois)

以下のリンクもご参照ください。