Ajaxで一斉プレゼン

何かプレゼンテーションをするときに、聴衆各自の手元にPC端末があって資料のコピーは見られるんだけど、それだとページの進行自体はユーザに任せなければならなくて不便。何とか進行に合わせて自動的に聴衆のPC上の資料もめくれるようにできないか?と言われて、最初はVGA出力をIP化して流す(そういうソフトがあったはず)とか考えていたけど、そのうちもっと簡単にAjaxを使えばできるかもしれないと思った。

流れはこんな感じ

  1. あらかじめ資料はブラウザが分かる形(HTMLなり画像なり)に変換しておく
  2. 講演者が今どのページを見てるかサーバ側で記録しておく
  3. 聴衆のページにはJavaScriptで定期的にその今見ているページの情報を見に行く
  4. 今見ているページの情報が変わったら、ページの中身をそのページに差し替える

2.はページに番号を振ってしまえばCGIの例題にあるようなアクセスカウンタで十分だし、4.も特にXMLをパースすることもなくinnerHTML=で直にしかるべきHTML(imgなりiframeなり)を書いてしまえばいいだけなので実はものすごい簡単。

で、実際作ってみたものがこれ。CGI設置はしてないので「マスターの画面と同期」にチェックを入れると常に2ページ目に飛ぶようにセットされている。2.で言っているカウンタがcurrent.txtなのでこれをいじるCGIを用意すること、同様のレイアウトの発表者側のページを作って、そちら側では「進む」、「戻る」のアクションの際にcurrent.txtの数字をいじるCGIをかませるように細工することの二つを行うようにするだけで上の要件は満たすようにできる。

問題点としては

  • 1.のところで表示形式に制限を受ける。アニメーションがある場合難しい
  • 3.のところでどのくらいの頻度でページの情報を見に行くか。遅すぎると同期性が失われるし、早すぎてもサーバに負荷がかかる(とりあえず先の例では、サーバ負荷がかからないように5秒間隔をあけているが当然これだと同期性は低いので、実際はもっと短くする)
  • ブラウザの互換性
  • 資料にあわせて、その都度スクリプトを作る必要がある。(もちろんある程度の自動化は可能だが)

まあJava AppletなりFlashなりを使うという方法もあるにはあるが…

サンプルページを作るにあたって、Ajaxを使った日本語IMEのスクリプトを参考にさせてもらいました。

カテゴリー: Ajax, ks. Ajaxで一斉プレゼン はコメントを受け付けていません。
%d人のブロガーが「いいね」をつけました。