前回Google Visualization APIを使った店舗情報サンプルを作りました。
今回はそのアプリの欠点のひとつ、表示速度の改善を行いたいと思います。

どうやって改善するのか。
なぜ表示速度に問題が出るかというと、リンクを押すごとにスプレッドシートに問い合わせているからですね。
なのでその問い合わせ自体をなくしてしまえば速度は改善できます。
百聞は一見にしかず。とりあえず、下記ふたつのサンプルを試してください。
サンプルプログラム(Google Visualization APIのみ)
サンプルプログラム(Taffy DB併用)

どうでしょう。Taffy版の方がロスなく表示が切り替わると思います。
で、そもそもTaffyって何なんでしょうか。

Taffy DB

簡潔に云うと、TaffyはJSONへのアクセスを補助するライブラリです。
DBとはありますが、フタを開ければただのJSONです。なんでもないです。
クエリに近い感覚でデータを取得できるので、もともとPHPでRDBMSを扱っていた身としては馴染み深いし、コードも簡潔になります。

手順は以下のようになります。

  1. 前回同様にGoogle Visualization APIでデータを取得します。このとき、全データを一気に取得します。
  2. 取得したデータテーブルをループで回し、それを一個ずつTaffyにインサートしていきます。
  3. Taffyに格納したデータをforEach(条件付)で取得、表示させます。

初めの全データ取得時に表示ロスが発生するのみで、あとは極めてスムーズです。
ただし、このやり方がどこまでうまくいくかはまだ試してません。
例えば、全データで何メガもいくようなモノとなると、どうなるか予測できないです。
ただ千件程度なら問題ないでしょう。ようは使いようですね。

ついでに、通常のサーバサイドスクリプトから整形済みのJSONが出力できるのであれば、そのままTaffyにぶち込んで構いません。
僕はうまくいきました。ループで回して云々というのは、Google Visualization APIだからです。
他にもうまいやり方があるのかもしれません。興味があったら試してください。

Leave a Reply