イベントハンドラの実装

イベントハンドラの実装

 FREDDYデータの受信は、SAXと同じようにイベントハンドラを介して行う。ハンドラのコードは図2(上)のようになる。

 コードを見ると気がつくかもしれないが、JavaのSAXで使うイベントハンドラとほぼ同じコードである。

 「第2回:JSONPとFREDDY(http://www.thinkit.co.jp/article/116/2/)」で紹介したFREDDYフォーマットの関数呼び出しは、データサイズ削減のため、sやeのような短い関数名を使っていた。この関数呼び出しをFREDDYライブラリ内で受けて、startElement、endElementのような、可読性の高い関数名へリダイレクトしている。

 また、FREDDYはxmlからFREDDYへの変換ツールを提供し、さらにクライアント側のコードはSAXとほぼ同じである。つまり、SAXを使ったプログラミングの経験があれば、FREDDYフォーマットや、後述するWebサーバーとWebブラウザ間通信の仕組みを理解せずとも、大規模なデータを使ったWebアプリケーションを実現することができる。

ハンドラの裏で何が行われているか

 ここからは、FREDDYの内部的な動作について説明していく。と言っても、そんなに複雑なことをしているわけではなく、基本的にはDynamic Script Tagを使って各Pageを順に読み込んでいるだけだ。

 図2(下)はFREDDYの動作原理を示している。この図ではxml2freddy.xmlをゲートウェイとして利用し、実行時にXML文書から直接FREDDYフォーマットへ変換し、それを読み込んでいる。

 FREDDYによるデータ通信のポイントは、Dynamic Script Tagによる非同期通信を使ったデータの読み込みと、イベントの送出をほぼ同時に行う点である。

 「第2回:JSONPとFREDDY(http://www.thinkit.co.jp/article/116/2/)」のFREDDYフォーマットの分割を説明した個所で、各Pageの先頭にはnp(PageID, “URL”);という次ページへのリファレンスを記述すると説明した。実はこのコードは次PageをDynamic Script Tagで読み込むための関数を呼び出している。

 つまり、あるPageを読み込むと、最初に次Pageを読み込むリクエストを非同期で発行し、その後、Pageに含まれたイベントをハンドラへ通知している。分かりやすく例えるなら、今、読んでいるこのページを読み始めると同時に、次ページの記事を別のタブとして開いているようなものである。このページはあと数段落で読み終わるが、すでに次のページが読み込まれているので、通信による待ち時間無しに次のページを読み始めることができる。

 また、XMLファイルからFREDDYへの変換も動的に行うことができるので、図2(下)に示したように、XMLの読み込み開始とほぼ同時にFREDDYを介して、そのXML文書のSAXイベントを、Webブラウザ上のイベントハンドラへ届けることができる。この仕組みにより、SAXの特徴である「高速な動作」を、Webアプリケーションでサーバー上のリソースを読み込む場合でも実現することができる。

 次のページでは、同じくSAXの特徴である「低消費メモリ」をWebアプリケーションとして実現する仕組みについて説明する。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30