VIBE
VIBE(Visible Instant Barometer for Education)は、授業やセミナー中に聴衆が「わかった/わからない」「速い/遅い」をスマートフォンからワンタップで送信すると、登壇者の画面にリアルタイムでゲージが表示されるリアクション収集ツールである。WebRTC DataChannelにより各端末から数バイトのリアクションデータを集約するだけで動作するため非常に軽量であり、ルームIDを共有するだけでブラウザから即座に参加できる。
挙手しづらい日本の教室文化において、匿名でのフィードバック手段を提供することで、登壇者は「今クラスの理解度が40%まで下がった」といった状況を一目で把握でき、説明の補足やペース調整をリアルタイムに行うことが可能となる。さらに、参加者から登壇者への匿名メッセージ送信機能を備えており、リアクションボタンでは伝えきれない具体的な質問や要望をテキストで届けることができる。
概要
VIBEは、P2P(Peer-to-Peer)技術を使用したリアルタイム匿名リアクション収集ツールである。サーバーを必要とせず、登壇者と参加者のブラウザがWebRTC DataChannelを通じて直接通信を行う。各端末から送られるデータは { understanding: "understand", speed: "fast" } のような数十バイトのJSONのみであり、極めて軽量に動作する。
授業、セミナー、ワークショップ、研修など、聴衆の理解度やペースに関するフィードバックをリアルタイムに得たい場面で活用できる。参加者は匿名でリアクションを送信できるため、挙手や発言が心理的に難しい場面でも気軽にフィードバックを提供できる。また、自由記述の匿名メッセージを登壇者に送信する機能も備えており、リアクションボタンでは伝えきれない具体的な質問や要望を届けることが可能である。
特徴
- サーバー不要 — WebRTC DataChannelによるP2P直接通信のため、専用サーバーを用意する必要がない
- ブラウザ動作 — 専用アプリケーションのインストールが不要で、ブラウザだけで動作する
- 完全匿名 — 参加者の個人情報は一切送信されず、登壇者には集約結果のみが表示される
- 超軽量 — 1回のリアクション送信は数十バイトのみ。低速回線でも問題なく動作する
- 2軸フィードバック — 「理解度」と「スピード」の独立した2軸で、多角的なフィードバックを収集できる
- 匿名メッセージ — 自由記述テキストで具体的な質問や要望を匿名で登壇者に送信できる
- リアルタイム集約 — リアクションは即座にゲージに反映され、推移はスパークラインチャートで表示される
- 簡単参加 — ルームID共有、QRコード、URLパラメータの3つの方法で参加者を招待できる
- 自動クリーンアップ — 15秒のディケイ機構により、退出した参加者のデータが自動的に除外される
システム構成
VIBEは、1台の登壇者端末と、複数の参加者端末で構成される。参加者の各端末が登壇者の端末に対して1対1のDataChannel接続を張るスター型トポロジを採用している。登壇者のブラウザが中央ハブとして機能し、全参加者のリアクションおよびメッセージを集約してゲージとメッセージパネルに反映する。PeerJSの公開シグナリングサーバーがICE候補の交換を仲介するが、接続確立後のデータ通信はP2P直接通信となる。
通信データの種類
VIBEでは、同一のDataChannel上で以下の2種類のデータが送受信される。データ種別は type プロパティの有無で判別される。リアクションデータには type プロパティがなく、メッセージデータには type: "message" が付与される。
| データ種別 | JSON形式 | サイズ目安 | 説明 |
|---|---|---|---|
| リアクション | { understanding: "understand", speed: "fast" } |
数十バイト | ボタン操作によるリアルタイムフィードバック |
| メッセージ | { type: "message", text: "質問があります..." } |
数百バイト | 自由記述テキスト(最大500文字) |
使い方
手順1:登壇者の準備
- 登壇者用のデバイス(PC推奨)でVIBEにアクセスする
- 「🎤 登壇者」をクリックする
- 「ルームを作成」ボタンをクリックする
- 表示されるルームID(英数字6文字)を参加者に共有する
手順2:参加者の接続
授業やセミナーの聴衆は、各自のスマートフォン・タブレット・PCで以下を行う。
- VIBEにアクセスする(URLを直接入力、またはQRコード読み取り)
- 「🙋 参加者」をクリックする
- 登壇者から共有されたルームIDを入力する
- 「ルームに参加」ボタンをクリックする
- 「接続済み」と表示されればリアクション送信・メッセージ送信が可能
?room=XXXXXX 付きのリンクやQRコードからアクセスすると、自動的に参加者モードになり、ルームIDが入力された状態で表示される。参加者の手間を最小限にできる。
手順3:リアクションの送信と確認
参加者は画面の4つのボタン(わかった・わからない・速い・遅い)からリアクションを送信する。登壇者の画面にはリアクションがリアルタイムでゲージに集約・表示される。
手順4:メッセージの送信と確認
参加者はリアクションボタンの下にあるテキスト入力欄から、匿名メッセージを登壇者に送信できる。送信されたメッセージは、登壇者画面のゲージ下に配置されたメッセージパネルにリアルタイムで表示される。
登壇者画面:ゲージ表示
登壇者画面は、参加者全員のリアクションを集約してリアルタイムに表示するダッシュボードである。プロジェクターやディスプレイに表示しながら、聴衆の状態を常に把握できる。
画面構成
| 要素 | 説明 |
|---|---|
| ルームID表示 | 現在のルームIDを表示。「コピー」ボタンでクリップボードにコピー可能 |
| QRボタン | 参加用QRコードをモーダルで表示 |
| 接続人数 | 現在接続中の参加者数をリアルタイム表示 |
| 理解度ゲージ | 「わかった/わからない」の集約結果を数値・バー・色で表示 |
| スピードゲージ | 「速い/遅い」の集約結果を数値・バー・色で表示 |
| スパークラインチャート | 各ゲージの過去2分間の推移を折れ線グラフで表示 |
| メッセージパネル | 参加者から送信された匿名メッセージの一覧を表示 |
| 終了ボタン | セッションを終了し、全参加者との接続を切断 |
理解度ゲージ
リアクションを送信した参加者のうち、「わかった」と「わからない」の比率をパーセンテージで表示する。
| 値 | 意味 |
|---|---|
| 0% | 回答者全員が「わからない」を選択 |
| 50% | 「わかった」と「わからない」が半々 |
| 100% | 回答者全員が「わかった」を選択 |
| — (ダッシュ) | 理解度に関するリアクションがない(データ待ち) |
パーセンテージの横に回答人数が表示される。
スピードゲージ
リアクションを送信した参加者のうち、「速い」と「遅い」の比率をパーセンテージで表示する。50%が「ちょうどいい」を意味する。
| 値 | 意味 |
|---|---|
| 0% | 回答者全員が「遅い」を選択 |
| 50%付近 | ちょうどいいペース(「👌 ちょうどいい」と表示) |
| 100% | 回答者全員が「速い」を選択 |
| — (ダッシュ) | スピードに関するリアクションがない(データ待ち) |
スパークラインチャート
各ゲージの下に、過去2分間(120秒)の推移が折れ線グラフで表示される。2秒ごとにデータポイントが記録され、折れ線グラフと面グラフとして描画される。最新の値には円形マーカーが表示される。「この説明に入った途端に理解度が急落した」「ペースを落としたら理解度が回復した」といった変化を視覚的に把握できる。
登壇者画面:メッセージパネル
ゲージの下に配置されたメッセージパネルには、参加者から送信された匿名メッセージがリアルタイムで一覧表示される。登壇者はリアクションゲージでは把握できない、具体的な質問や要望をこのパネルで確認できる。
パネル構成
| 要素 | 説明 |
|---|---|
| パネルタイトル(💬 メッセージ) | メッセージパネルの見出し |
| メッセージバッジ | 受信したメッセージの総数を数値で表示。新着受信時にポップアニメーションで通知 |
| クリアボタン | 全メッセージを一括削除(確認ダイアログあり) |
| メッセージ一覧 | 受信メッセージをタイムスタンプ付きで表示。最大高さ400pxのスクロール領域 |
メッセージの表示仕様
| 項目 | 仕様 |
|---|---|
| 表示順序 | 新しいメッセージが上に積まれる(新着順) |
| タイムスタンプ | HH:MM:SS 形式で受信時刻を表示 |
| 新着ハイライト | 受信直後のメッセージにはアクセントカラーの背景ハイライトが3秒間表示される |
| 表示アニメーション | 新着メッセージはスライドイン+フェードインで表示される |
| 空の状態 | メッセージがない場合は「参加者からのメッセージがここに表示されます」と表示 |
メッセージの匿名性
メッセージは完全に匿名で表示される。送信者を識別する情報(PeerID、端末情報など)は一切表示されない。登壇者が見ることができるのは、メッセージ本文と受信時刻のみである。
クリア操作
「クリア」ボタンをクリックすると確認ダイアログが表示され、承認すると全メッセージが削除される。クリア後はメッセージバッジもリセットされる。この操作は元に戻すことができない。
参加者画面:リアクション送信
参加者画面は、スマートフォンでの片手操作に最適化された4つの大きなリアクションボタンと、その下に配置されたメッセージ入力欄で構成される。
ボタン一覧
| ボタン | 意味 | カテゴリ |
|---|---|---|
| 理解度(排他選択) | ||
| 😊 わかった | 内容を理解できている | 理解度 |
| 😕 わからない | 内容がわからない・ついていけない | 理解度 |
| スピード(排他選択) | ||
| 🐇 速い | 進行が速すぎる | スピード |
| 🐌 遅い | 進行が遅すぎる・もっと先に進んでほしい | スピード |
「理解度」と「スピード」は独立したカテゴリであり、それぞれ1つずつ、合計最大2つのリアクションを同時に送信できる。たとえば「わかった」と「速い」を同時に選択することが可能である。
操作方法
| 操作 | 動作 |
|---|---|
| ボタンをタップ | そのリアクションが選択され、即座に送信される。ボタンが光って選択状態になる |
| 同じボタンを再タップ | 選択を解除(トグル動作)。リアクションが取り消される |
| 同じカテゴリの別ボタンをタップ | 前の選択が解除され、新しいリアクションに切り替わる |
匿名性
リアクションは完全に匿名で送信される。登壇者の画面には集約結果のみが表示され、どの参加者がどのリアクションを送ったかは一切表示されない。通信に使用されるPeerIDは自動生成されたランダムな文字列であり、個人を特定する情報は含まれない。
参加者画面:メッセージ送信
リアクションボタンの下に、登壇者へ匿名メッセージを送信できるテキスト入力欄が配置されている。リアクションボタンでは伝えきれない具体的な質問や要望を、匿名のまま登壇者に届けることができる。
入力欄の構成
| 要素 | 説明 |
|---|---|
| ラベル(メッセージ) | 入力エリアの見出し |
| テキスト入力欄 | 自由記述のメッセージを入力するテキストエリア。プレースホルダーに「匿名でメッセージを送信...」と表示 |
| 送信ボタン | メッセージを登壇者に送信。テキストが空の場合は無効化(グレーアウト) |
| 送信フィードバック | 送信成功時に「送信しました」と2秒間表示 |
操作方法
| 操作 | 動作 |
|---|---|
| テキストを入力 | 入力内容に応じてテキストエリアの高さが自動伸縮する(最大120px) |
| 「送信」ボタンをタップ | メッセージが登壇者に送信され、入力欄がクリアされる |
| Enterキーを押す | メッセージが送信される(送信ボタンのタップと同等) |
| Shift + Enterキーを押す | メッセージ内で改行が挿入される(送信されない) |
メッセージの仕様
| 項目 | 仕様 |
|---|---|
| 最大文字数 | 500文字 |
| 匿名性 | 完全匿名。送信者を識別する情報は一切付与されない |
| 送信上限 | なし。何度でも送信可能 |
| 空メッセージ | 送信不可。テキストが空または空白のみの場合、送信ボタンが無効化される |
| 接続状態 | 登壇者との接続が確立している場合のみ送信可能 |
リアクションとの関係
メッセージ送信はリアクション(ボタン操作)とは独立した機能である。リアクションボタンの選択状態に関わらず、いつでもメッセージを送信できる。メッセージ送信がリアクションの選択状態に影響することはない。
想定される利用場面
- 「スライド5ページ目の図についてもう少し説明してほしいです」
- 「具体例を挙げていただけると理解しやすいです」
- 「この部分は後で資料を共有してもらえますか?」
- 「○○と△△の違いがわかりませんでした」
ゲージの見方と色変化ルール
登壇者画面のゲージは、パーセンテージの数値に応じて色が自動的に変化する。これにより、登壇者は一目で聴衆の状態を把握できる。
理解度ゲージの色
| パーセンテージ | 数値の色 | 状態 |
|---|---|---|
| 70%以上 | 緑色 | 良好:多くの参加者が理解している |
| 40%〜69% | 黄色 | 注意:理解度が低下している |
| 40%未満 | 赤色 | 危険:多くの参加者がわからないと感じている |
スピードゲージの色
| パーセンテージ | 数値の色 | 状態 |
|---|---|---|
| 40%〜60%付近 | 緑色(「👌 ちょうどいい」表示) | 適切な速度 |
| 61%以上 | オレンジ色 | 速すぎる:ペースを落とすことを検討 |
| 39%以下 | 青色 | 遅すぎる:ペースを上げることを検討 |
ゲージバーの色
理解度ゲージバーは左端(赤:わからない)から右端(緑:わかった)へのグラデーションで表示される。スピードゲージバーは左端(青:遅い)から右端(オレンジ:速い)へのグラデーションで表示される。バーの塗り幅がパーセンテージに連動する。
リアクションの有効期限と更新
VIBEのゲージは「今この瞬間」の聴衆の状態を正確に反映するため、リアクションデータにはディケイ(自動期限切れ)機構が組み込まれている。
自動期限切れ(ディケイ)
リアクションデータには 15秒 の有効期限が設定されている。参加者がボタンを選択した状態のまま何も操作しなくても、バックグラウンドで 5秒ごと にハートビート(状態の再送信)が自動実行されるため、ボタンを選択し続けている限りリアクションは維持される。
| 参加者の状態 | 動作 | ゲージへの影響 |
|---|---|---|
| ボタン選択中 | 5秒ごとに自動再送信 | ゲージに反映され続ける |
| ボタン未選択(解除済み) | 送信停止 | 15秒後にゲージから自然に消える |
| ブラウザを閉じた | 接続切断 | 即座にゲージから除外 |
この仕組みにより、退出した参加者や操作をやめた参加者のデータが自動的にクリーンアップされ、ゲージには常に「今現在」のリアクション状況のみが反映される。
メッセージの保持
メッセージにはディケイ(自動期限切れ)は適用されない。登壇者がセッション中に受信したメッセージは、「クリア」ボタンで手動削除するか、ブラウザを閉じるまで保持される。メッセージデータはブラウザのメモリ上にのみ存在し、外部サーバーに保存されることはない。
履歴の保持
スパークラインチャートには過去2分間(120秒)のデータが保持される。2秒間隔でゲージのスナップショットが記録され、古いデータは自動的に破棄される。セッション中の推移を振り返ることで、どの時点で理解度やペースに変化があったかを確認できる。
QRコード・ルーム共有
共有方法
登壇者は以下の3つの方法で参加者にルームを共有できる。
| 方法 | 操作 | 推奨場面 |
|---|---|---|
| ルームIDを口頭で伝える | 画面に表示された6文字のIDを読み上げる | 少人数の教室・会議 |
| コピーボタン | 「コピー」ボタンでIDをクリップボードにコピーし、チャット等で共有する | オンライン配信・リモート授業 |
| QRコード | 「QR」ボタンでQRコードを画面に表示し、プロジェクターに映す | 大教室・セミナー会場 |
URLパラメータによる自動参加
VIBEのURLにクエリパラメータ ?room=XXXXXX を付加すると、参加者はアクセスするだけで自動的に参加者モードになり、ルームIDが入力された状態で表示される。
例:
このURLをチャットに貼り付けたり、QRコードにしたりすることで、参加者はルームIDの手入力なしで即座に接続画面に到達できる。
トラブルシューティング
接続できない
- すべてのデバイスがインターネットに接続されているか確認する
- ルームIDが正しく入力されているか確認する(英数字6文字、大文字で入力)
- ブラウザを最新版に更新する
- 登壇者が先にルームを作成しているか確認する
- 企業や学校のファイアウォール環境では、WebRTC通信がブロックされる場合がある
ゲージが更新されない
- 参加者が接続済みか確認する(登壇者画面の「○人接続中」を確認)
- 参加者がリアクションボタンを選択しているか確認する
- リアクションは15秒で期限切れになる。参加者がボタンを選択し続けていれば自動更新される
「ルームが見つかりません」と表示される
- ルームIDの入力ミスがないか確認する
- 登壇者がルームを作成済みか確認する
- 登壇者がブラウザを閉じたり、セッションを終了していないか確認する
- 接続試行は12秒でタイムアウトするため、再度試す
「このルームIDは既に使用中です」と表示される
- 前回のセッションが残っている可能性がある。自動的に新しいルームIDが生成されるので、そのまま待機する
一部の参加者だけ接続できない
- 該当デバイスのネットワーク接続を確認する
- ブラウザのキャッシュをクリアして再試行する
- 別のブラウザで試す(Chrome、Edge、Safari、Firefoxに対応)
- モバイルデータ通信とWi-Fiを切り替えて試す
参加者画面で「接続中...」のまま進まない
- ネットワーク接続を確認する
- ルームIDが正しいか再確認する
- ページを再読み込みして再接続を試みる
セッションが突然切断された
- 登壇者がセッションを終了した可能性がある
- ネットワーク接続が不安定な場合に切断されることがある
- 「トップに戻る」ボタンを押して最初からやり直す
メッセージが送信できない
- 接続状態が「接続済み」になっているか確認する
- テキスト入力欄が空の場合は送信ボタンが無効化される。テキストを入力する
- メッセージは最大500文字まで。文字数を超えている場合は短くする
- ネットワーク接続が不安定な場合、送信に失敗することがある。接続を確認して再送信する
メッセージが登壇者画面に表示されない
- 参加者が接続済みか確認する
- 登壇者画面のメッセージパネルを確認する(ゲージの下に配置されている)
- メッセージ一覧がスクロールされていて新着メッセージが見えていない場合は、一覧を上にスクロールする(新着は上に表示される)
注意事項
- インターネット接続が必要(PeerJSシグナリングサーバーへの接続およびP2P接続の確立に使用)
- 通信が不安定な環境では遅延が発生する可能性がある
- 登壇者がブラウザを閉じると、全参加者との接続が切断される
- 参加者は何人でも接続可能だが、人数が多い場合(目安:100人以上)は登壇者側の通信負荷が増加する。大規模利用の場合は自前のPeerJSサーバーの構築を検討すること
- 現在、登壇者(ゲージ表示)は1画面のみ対応。プロジェクター等に表示する場合はブラウザのタブを画面共有すること
- NAT越えが必要なネットワーク環境(企業VPN内など)では、P2P接続が確立できない場合がある。その場合はTURNサーバーの導入を検討すること
- リアクションデータおよびメッセージデータはブラウザ上でのみ処理され、外部サーバーに保存されることはない
- セッションのデータ(ゲージの推移履歴、メッセージなど)はブラウザを閉じると消去される
- QRコードは簡易的なビジュアル表示である。QRコードリーダーで正しく読み取れない場合は、URLパラメータ付きリンクを直接共有すること
- メッセージ機能は匿名であるため、不適切な投稿が行われる可能性がある。教育現場等で利用する場合は、参加者に対して適切な利用を促すこと
- メッセージはセッション中に蓄積され続ける。メッセージ数が非常に多くなった場合は、「クリア」ボタンで適宜削除すること