VIBE

VIBEVisible Instant Barometer for Education)は、授業やセミナー中に聴衆が「わかった/わからない」「速い/遅い」をスマートフォンからワンタップで送信すると、登壇者の画面にリアルタイムでゲージが表示されるリアクション収集ツールである。WebRTC DataChannelにより各端末から数バイトのリアクションデータを集約するだけで動作するため非常に軽量であり、ルームIDを共有するだけでブラウザから即座に参加できる。

挙手しづらい日本の教室文化において、匿名でのフィードバック手段を提供することで、登壇者は「今クラスの理解度が40%まで下がった」といった状況を一目で把握でき、説明の補足やペース調整をリアルタイムに行うことが可能となる。さらに、参加者から登壇者への匿名メッセージ送信機能を備えており、リアクションボタンでは伝えきれない具体的な質問や要望をテキストで届けることができる。

概要

VIBEは、P2P(Peer-to-Peer)技術を使用したリアルタイム匿名リアクション収集ツールである。サーバーを必要とせず、登壇者と参加者のブラウザがWebRTC DataChannelを通じて直接通信を行う。各端末から送られるデータは { understanding: "understand", speed: "fast" } のような数十バイトのJSONのみであり、極めて軽量に動作する。

授業、セミナー、ワークショップ、研修など、聴衆の理解度やペースに関するフィードバックをリアルタイムに得たい場面で活用できる。参加者は匿名でリアクションを送信できるため、挙手や発言が心理的に難しい場面でも気軽にフィードバックを提供できる。また、自由記述の匿名メッセージを登壇者に送信する機能も備えており、リアクションボタンでは伝えきれない具体的な質問や要望を届けることが可能である。

特徴

システム構成

VIBEは、1台の登壇者端末と、複数の参加者端末で構成される。参加者の各端末が登壇者の端末に対して1対1のDataChannel接続を張るスター型トポロジを採用している。登壇者のブラウザが中央ハブとして機能し、全参加者のリアクションおよびメッセージを集約してゲージとメッセージパネルに反映する。PeerJSの公開シグナリングサーバーがICE候補の交換を仲介するが、接続確立後のデータ通信はP2P直接通信となる。

参加者A 😊 わかった / 🐇 速い 参加者B 😕 わからない / 💬 質問 参加者C 😊 わかった / 🐌 遅い 参加者D 😕 わからない / 🐇 速い DataChannel (P2P) 登壇者(PC) 📘 理解度ゲージ:50% ⏱ スピードゲージ:62% 📈 スパークラインチャート 💬 メッセージ一覧 4人接続中 N : 1

通信データの種類

VIBEでは、同一のDataChannel上で以下の2種類のデータが送受信される。データ種別は type プロパティの有無で判別される。リアクションデータには type プロパティがなく、メッセージデータには type: "message" が付与される。

データ種別 JSON形式 サイズ目安 説明
リアクション { understanding: "understand", speed: "fast" } 数十バイト ボタン操作によるリアルタイムフィードバック
メッセージ { type: "message", text: "質問があります..." } 数百バイト 自由記述テキスト(最大500文字)

使い方

手順1:登壇者の準備

  1. 登壇者用のデバイス(PC推奨)でVIBEにアクセスする
  2. 「🎤 登壇者」をクリックする
  3. 「ルームを作成」ボタンをクリックする
  4. 表示されるルームID(英数字6文字)を参加者に共有する

手順2:参加者の接続

授業やセミナーの聴衆は、各自のスマートフォン・タブレット・PCで以下を行う。

  1. VIBEにアクセスする(URLを直接入力、またはQRコード読み取り)
  2. 「🙋 参加者」をクリックする
  3. 登壇者から共有されたルームIDを入力する
  4. 「ルームに参加」ボタンをクリックする
  5. 「接続済み」と表示されればリアクション送信・メッセージ送信が可能
💡
かんたん参加 — URLパラメータ ?room=XXXXXX 付きのリンクやQRコードからアクセスすると、自動的に参加者モードになり、ルームIDが入力された状態で表示される。参加者の手間を最小限にできる。

手順3:リアクションの送信と確認

参加者は画面の4つのボタン(わかった・わからない・速い・遅い)からリアクションを送信する。登壇者の画面にはリアクションがリアルタイムでゲージに集約・表示される。

手順4:メッセージの送信と確認

参加者はリアクションボタンの下にあるテキスト入力欄から、匿名メッセージを登壇者に送信できる。送信されたメッセージは、登壇者画面のゲージ下に配置されたメッセージパネルにリアルタイムで表示される。

登壇者画面:ゲージ表示

登壇者画面は、参加者全員のリアクションを集約してリアルタイムに表示するダッシュボードである。プロジェクターやディスプレイに表示しながら、聴衆の状態を常に把握できる。

画面構成

要素 説明
ルームID表示 現在のルームIDを表示。「コピー」ボタンでクリップボードにコピー可能
QRボタン 参加用QRコードをモーダルで表示
接続人数 現在接続中の参加者数をリアルタイム表示
理解度ゲージ 「わかった/わからない」の集約結果を数値・バー・色で表示
スピードゲージ 「速い/遅い」の集約結果を数値・バー・色で表示
スパークラインチャート 各ゲージの過去2分間の推移を折れ線グラフで表示
メッセージパネル 参加者から送信された匿名メッセージの一覧を表示
終了ボタン セッションを終了し、全参加者との接続を切断

理解度ゲージ

リアクションを送信した参加者のうち、「わかった」と「わからない」の比率をパーセンテージで表示する。

意味
0% 回答者全員が「わからない」を選択
50% 「わかった」と「わからない」が半々
100% 回答者全員が「わかった」を選択
— (ダッシュ) 理解度に関するリアクションがない(データ待ち)

パーセンテージの横に回答人数が表示される。

スピードゲージ

リアクションを送信した参加者のうち、「速い」と「遅い」の比率をパーセンテージで表示する。50%が「ちょうどいい」を意味する。

意味
0% 回答者全員が「遅い」を選択
50%付近 ちょうどいいペース(「👌 ちょうどいい」と表示)
100% 回答者全員が「速い」を選択
— (ダッシュ) スピードに関するリアクションがない(データ待ち)

スパークラインチャート

各ゲージの下に、過去2分間(120秒)の推移が折れ線グラフで表示される。2秒ごとにデータポイントが記録され、折れ線グラフと面グラフとして描画される。最新の値には円形マーカーが表示される。「この説明に入った途端に理解度が急落した」「ペースを落としたら理解度が回復した」といった変化を視覚的に把握できる。

📘 理解度
72%
理解度 (回答: 28人)
わからない わかった
登壇者画面の理解度ゲージ表示イメージ

登壇者画面:メッセージパネル

ゲージの下に配置されたメッセージパネルには、参加者から送信された匿名メッセージがリアルタイムで一覧表示される。登壇者はリアクションゲージでは把握できない、具体的な質問や要望をこのパネルで確認できる。

パネル構成

要素 説明
パネルタイトル(💬 メッセージ) メッセージパネルの見出し
メッセージバッジ 受信したメッセージの総数を数値で表示。新着受信時にポップアニメーションで通知
クリアボタン 全メッセージを一括削除(確認ダイアログあり)
メッセージ一覧 受信メッセージをタイムスタンプ付きで表示。最大高さ400pxのスクロール領域
💬 メッセージ 3
クリア
14:32:08
スライド5ページ目の図について、もう少し詳しく説明していただけますか?
14:30:45
具体例を挙げていただけると理解しやすいです
14:28:12
この部分は後で資料を共有してもらえますか?
登壇者画面のメッセージパネル表示イメージ

メッセージの表示仕様

項目 仕様
表示順序 新しいメッセージが上に積まれる(新着順)
タイムスタンプ HH:MM:SS 形式で受信時刻を表示
新着ハイライト 受信直後のメッセージにはアクセントカラーの背景ハイライトが3秒間表示される
表示アニメーション 新着メッセージはスライドイン+フェードインで表示される
空の状態 メッセージがない場合は「参加者からのメッセージがここに表示されます」と表示

メッセージの匿名性

メッセージは完全に匿名で表示される。送信者を識別する情報(PeerID、端末情報など)は一切表示されない。登壇者が見ることができるのは、メッセージ本文と受信時刻のみである。

クリア操作

「クリア」ボタンをクリックすると確認ダイアログが表示され、承認すると全メッセージが削除される。クリア後はメッセージバッジもリセットされる。この操作は元に戻すことができない。

参加者画面:リアクション送信

参加者画面は、スマートフォンでの片手操作に最適化された4つの大きなリアクションボタンと、その下に配置されたメッセージ入力欄で構成される。

ボタン一覧

ボタン 意味 カテゴリ
理解度(排他選択)
😊 わかった 内容を理解できている 理解度
😕 わからない 内容がわからない・ついていけない 理解度
スピード(排他選択)
🐇 速い 進行が速すぎる スピード
🐌 遅い 進行が遅すぎる・もっと先に進んでほしい スピード

「理解度」と「スピード」は独立したカテゴリであり、それぞれ1つずつ、合計最大2つのリアクションを同時に送信できる。たとえば「わかった」と「速い」を同時に選択することが可能である。

操作方法

操作 動作
ボタンをタップ そのリアクションが選択され、即座に送信される。ボタンが光って選択状態になる
同じボタンを再タップ 選択を解除(トグル動作)。リアクションが取り消される
同じカテゴリの別ボタンをタップ 前の選択が解除され、新しいリアクションに切り替わる
👆
操作のポイント — ボタンをタップすると、リップルエフェクトのアニメーションとボタンの発光により、送信されたことが視覚的にフィードバックされる。一度押したらそのまま放置してよい。状態は5秒ごとに自動で再送信される。

匿名性

リアクションは完全に匿名で送信される。登壇者の画面には集約結果のみが表示され、どの参加者がどのリアクションを送ったかは一切表示されない。通信に使用されるPeerIDは自動生成されたランダムな文字列であり、個人を特定する情報は含まれない。

参加者画面:メッセージ送信

リアクションボタンの下に、登壇者へ匿名メッセージを送信できるテキスト入力欄が配置されている。リアクションボタンでは伝えきれない具体的な質問や要望を、匿名のまま登壇者に届けることができる。

入力欄の構成

要素 説明
ラベル(メッセージ) 入力エリアの見出し
テキスト入力欄 自由記述のメッセージを入力するテキストエリア。プレースホルダーに「匿名でメッセージを送信...」と表示
送信ボタン メッセージを登壇者に送信。テキストが空の場合は無効化(グレーアウト)
送信フィードバック 送信成功時に「送信しました」と2秒間表示
メッセージ
匿名でメッセージを送信...
送信
参加者画面のメッセージ入力欄イメージ

操作方法

操作 動作
テキストを入力 入力内容に応じてテキストエリアの高さが自動伸縮する(最大120px)
「送信」ボタンをタップ メッセージが登壇者に送信され、入力欄がクリアされる
Enterキーを押す メッセージが送信される(送信ボタンのタップと同等)
Shift + Enterキーを押す メッセージ内で改行が挿入される(送信されない)

メッセージの仕様

項目 仕様
最大文字数 500文字
匿名性 完全匿名。送信者を識別する情報は一切付与されない
送信上限 なし。何度でも送信可能
空メッセージ 送信不可。テキストが空または空白のみの場合、送信ボタンが無効化される
接続状態 登壇者との接続が確立している場合のみ送信可能

リアクションとの関係

メッセージ送信はリアクション(ボタン操作)とは独立した機能である。リアクションボタンの選択状態に関わらず、いつでもメッセージを送信できる。メッセージ送信がリアクションの選択状態に影響することはない。

想定される利用場面

💬
メッセージの活用ヒント — リアクションボタンで「😕 わからない」を押しつつ、メッセージで「具体的にどこがわからないか」を送信すると、登壇者はゲージの低下とその原因を同時に把握でき、より的確な対応が可能となる。

ゲージの見方と色変化ルール

登壇者画面のゲージは、パーセンテージの数値に応じて色が自動的に変化する。これにより、登壇者は一目で聴衆の状態を把握できる。

理解度ゲージの色

パーセンテージ 数値の色 状態
70%以上 緑色 良好:多くの参加者が理解している
40%〜69% 黄色 注意:理解度が低下している
40%未満 赤色 危険:多くの参加者がわからないと感じている

スピードゲージの色

パーセンテージ 数値の色 状態
40%〜60%付近 緑色(「👌 ちょうどいい」表示) 適切な速度
61%以上 オレンジ色 速すぎる:ペースを落とすことを検討
39%以下 青色 遅すぎる:ペースを上げることを検討

ゲージバーの色

理解度ゲージバーは左端(赤:わからない)から右端(緑:わかった)へのグラデーションで表示される。スピードゲージバーは左端(青:遅い)から右端(オレンジ:速い)へのグラデーションで表示される。バーの塗り幅がパーセンテージに連動する。

理解度ゲージバー
😕
😊
0%50%100%
スピードゲージバー
🐌
🐇
0%(遅い)50%(適正)100%(速い)
ゲージバーのグラデーション構成

リアクションの有効期限と更新

VIBEのゲージは「今この瞬間」の聴衆の状態を正確に反映するため、リアクションデータにはディケイ(自動期限切れ)機構が組み込まれている。

自動期限切れ(ディケイ)

リアクションデータには 15秒 の有効期限が設定されている。参加者がボタンを選択した状態のまま何も操作しなくても、バックグラウンドで 5秒ごと にハートビート(状態の再送信)が自動実行されるため、ボタンを選択し続けている限りリアクションは維持される。

参加者の状態 動作 ゲージへの影響
ボタン選択中 5秒ごとに自動再送信 ゲージに反映され続ける
ボタン未選択(解除済み) 送信停止 15秒後にゲージから自然に消える
ブラウザを閉じた 接続切断 即座にゲージから除外

この仕組みにより、退出した参加者や操作をやめた参加者のデータが自動的にクリーンアップされ、ゲージには常に「今現在」のリアクション状況のみが反映される。

メッセージの保持

メッセージにはディケイ(自動期限切れ)は適用されない。登壇者がセッション中に受信したメッセージは、「クリア」ボタンで手動削除するか、ブラウザを閉じるまで保持される。メッセージデータはブラウザのメモリ上にのみ存在し、外部サーバーに保存されることはない。

履歴の保持

スパークラインチャートには過去2分間(120秒)のデータが保持される。2秒間隔でゲージのスナップショットが記録され、古いデータは自動的に破棄される。セッション中の推移を振り返ることで、どの時点で理解度やペースに変化があったかを確認できる。

QRコード・ルーム共有

共有方法

登壇者は以下の3つの方法で参加者にルームを共有できる。

方法 操作 推奨場面
ルームIDを口頭で伝える 画面に表示された6文字のIDを読み上げる 少人数の教室・会議
コピーボタン 「コピー」ボタンでIDをクリップボードにコピーし、チャット等で共有する オンライン配信・リモート授業
QRコード 「QR」ボタンでQRコードを画面に表示し、プロジェクターに映す 大教室・セミナー会場

URLパラメータによる自動参加

VIBEのURLにクエリパラメータ ?room=XXXXXX を付加すると、参加者はアクセスするだけで自動的に参加者モードになり、ルームIDが入力された状態で表示される。

例:

https://example.com/vibe.html?room=ABC123

このURLをチャットに貼り付けたり、QRコードにしたりすることで、参加者はルームIDの手入力なしで即座に接続画面に到達できる。

トラブルシューティング

接続できない

ゲージが更新されない

「ルームが見つかりません」と表示される

「このルームIDは既に使用中です」と表示される

一部の参加者だけ接続できない

参加者画面で「接続中...」のまま進まない

セッションが突然切断された

メッセージが送信できない

メッセージが登壇者画面に表示されない

注意事項

⚠️
使用上の注意
  • インターネット接続が必要(PeerJSシグナリングサーバーへの接続およびP2P接続の確立に使用)
  • 通信が不安定な環境では遅延が発生する可能性がある
  • 登壇者がブラウザを閉じると、全参加者との接続が切断される
  • 参加者は何人でも接続可能だが、人数が多い場合(目安:100人以上)は登壇者側の通信負荷が増加する。大規模利用の場合は自前のPeerJSサーバーの構築を検討すること
  • 現在、登壇者(ゲージ表示)は1画面のみ対応。プロジェクター等に表示する場合はブラウザのタブを画面共有すること
  • NAT越えが必要なネットワーク環境(企業VPN内など)では、P2P接続が確立できない場合がある。その場合はTURNサーバーの導入を検討すること
  • リアクションデータおよびメッセージデータはブラウザ上でのみ処理され、外部サーバーに保存されることはない
  • セッションのデータ(ゲージの推移履歴、メッセージなど)はブラウザを閉じると消去される
  • QRコードは簡易的なビジュアル表示である。QRコードリーダーで正しく読み取れない場合は、URLパラメータ付きリンクを直接共有すること
  • メッセージ機能は匿名であるため、不適切な投稿が行われる可能性がある。教育現場等で利用する場合は、参加者に対して適切な利用を促すこと
  • メッセージはセッション中に蓄積され続ける。メッセージ数が非常に多くなった場合は、「クリア」ボタンで適宜削除すること