戦闘機対戦ゲームをFREDDYで実装!
FREDDYの研究が目指すゴール
本連載では、「JSON vs. FREDDY:Web軽量通信(http://www.thinkit.co.jp/article/116/)」と題して、静岡大学情報学部石川研究室(http://db-lab.cs.inf.shizuoka.ac.jp/)で筆者が研究開発を進めているFREDDY(http://freddy.yokoyama.ac/index.php/FREDDY)の紹介を行ってきた。最終回の今回は、研究段階にあるFREDDYの実用化に向けた方向性を議論する。また、FREDDYの可能性をデモンストレーションするために作成した「Google Mapsを利用した対戦型の空中戦ゲーム:GFighter」も紹介する。
「第3回:JavaScriptでFREDDYデータを読み込む(http://www.thinkit.co.jp/article/116/3/)」ではXML文書をFREDDY形式に変換するxml2freddy.phpというツールを紹介した。しかしながら、静的なファイルを読み込むことがFREDDYの目指すゴールではない。静的な大きなデータならば関係データベースやXMLデータベースを使って検索を行い、結果の小さなデータのみを読み込めばよく、そもそも検索ルーチンをクライアント側のJavaScriptで実装する必要はない。
もちろんAdobe AIR(http://www.adobe.com/jp/products/air/)やMicrosoft Silverlight(http://www.microsoft.com/japan/silverlight/)など、Web技術を主軸に、単なるWebアプリケーションを超えた高度な処理を行う枠組みも登場しつつあり、その方向性としては、FREDDYを利用してデータベースエンジンそのものをJavaScriptで組むというのもチャレンジとしては面白いと思う。だが、筆者らの研究プロジェクトで取り組もうとしていることは、もう少し現実的な応用である。
「FREDDYのアプリケーションは何なのか?」
実際、これはよく聞かれる問いである。筆者らはその答えとなるツールや技術の研究開発を現在行っている。
FREDDYのアプリケーション
図1には、現在研究開発中のFREDDYの応用を概念的に記した。この図に描かれているように、大きく分けて、3つのアプリケーションの構築を目指している。それぞれについて説明しよう。
1つ目が「ストリーミングデータの処理基盤」だ。ストリーミングデータ、とりわけセンサーデータの出力を直接Webで扱う基盤技術をFREDDYで構築する予定である。FREDDYは大きな文書を細かく分割し、それを順次読み込んでいく手法をとるが、この手法はそのまま、動的なストリーミングデータの読み込みに利用することができる。
2つ目が「分散データのクローリング基盤」だ。FREDDYフォーマットの分割されたデータの破片は、Dynamic Script Tagでデータを読み込むため、それぞれが別のWebサイトにあっても良い。しかもFREDDYはデータの分割の仕組みを利用者から隠ぺいし、あたかも1つのリソースのようにアクセスすることができる。この仕組みを分散環境に応用すれば、インターネット上に分散して存在するリソースを、Webブラウザから仮想的な1つのリソースとしてアクセスすることができる。
3つ目が「Webブラウザ同士の連携基盤」だ。現在のFREDDYはWebサーバーからWebブラウザへの一方向のデータ通信技術であるが、今後の課題として、双方向通信を実現したいと考えている。さらに複数の双方向通信を束ね、異なるWebブラウザ間通信の枠組みを構築したい。これはいわばWebブラウザ上におけるオーバレイネットワークである。
筆者らはこの3つの課題のうち、最後に挙げた「複数のWebブラウザの連携基盤」に最も注力している。次ページではFREDDYによるWebブラウザ連携のデモンストレーションとして、対戦ゲームのWebアプリケーションを紹介したい。