FLIP

FLIPFreehand & Letters, Instantly Presented)は、授業やセミナーにおいて、学生がスマートフォンから手書きまたはテキストで回答を送信すると、教員の画面にリアルタイムでグリッド状に一覧表示される回答収集・提示ツールである。WebRTC DataChannelにより各端末からストローク座標や文字列データを集約するだけで動作するため軽量であり、ルームIDを共有するだけでブラウザから即座に参加できる。

クイズ番組のフリップボードのように、学生全員の回答が教員の画面にタイルとして並び、書いている途中の様子もリアルタイムで確認できる。教員はプロジェクターへの画面切り替えタイミングを自分でコントロールすることで、「はい、やめ!」のタイミングで一斉に回答を公開するといった演出が可能である。匿名モードと記名モードを切り替えることで、場面に応じた柔軟な運用ができる。

概要

FLIPは、P2P(Peer-to-Peer)技術を使用したリアルタイム回答収集・提示ツールである。サーバーを必要とせず、教員と学生のブラウザがWebRTC DataChannelを通じて直接通信を行う。各端末から送られるデータは手書きのストローク座標やテキスト文字列であり、軽量に動作する。

授業、セミナー、ワークショップ、研修など、学生や参加者の回答をリアルタイムに収集し、一覧で提示したい場面で活用できる。教員は学生が回答を書いている途中の様子を手元の画面で確認しつつ、プロジェクターに映すタイミングを自分でコントロールできる。

特徴

システム構成

FLIPは、1台の教員端末(PC推奨)と、最大30台の学生端末(スマートフォン推奨)で構成される。学生の各端末が教員の端末に対して1対1のDataChannel接続を張るスター型トポロジを採用している。教員のブラウザが中央ハブとして機能し、全学生の回答データを集約してグリッド状のタイル一覧に反映する。PeerJSの公開シグナリングサーバーがICE候補の交換を仲介するが、接続確立後のデータ通信はP2P直接通信となる。

学生A(スマホ) ✏️ 手書き回答 学生B(スマホ) ⌨️ テキスト回答 学生C(スマホ) ✏️ 手書き回答 学生D(タブレット) ⌨️ テキスト回答 DataChannel (P2P) 教員(PC) ┌──┬──┐ │ A │ B │ 回答タイル ├──┼──┤ グリッド一覧 │ C │ D │ └──┴──┘ 4人接続中 プロ ジェクタ

通信データの種類

FLIPでは、同一のDataChannel上で以下の種類のデータが送受信される。データ種別は type プロパティで判別される。

データ種別 方向 JSON形式 説明
参加 学生→教員 { type: "join", name: "山田太郎" } ルーム参加時に名前を送信
手書きストローク 学生→教員 { type: "stroke", points: [[x,y], ...] } 手書きの1ストローク分の座標配列
手書きクリア 学生→教員 { type: "clear_canvas" } 消しゴムによるキャンバス全消去
テキスト 学生→教員 { type: "text", content: "回答内容" } テキスト入力の内容
リセット 教員→学生 { type: "reset" } 全員の回答をクリアし白紙に戻す

使い方

手順1:教員の準備

  1. 教員用のデバイス(PC推奨)でFLIPにアクセスする
  2. 「🎓 教員」をクリックする
  3. 「ルームを作成」ボタンをクリックする
  4. 表示されるルームID(英数字6文字)を学生に共有する

手順2:学生の接続

学生は、各自のスマートフォン・タブレット・PCで以下を行う。

  1. FLIPにアクセスする(URLを直接入力、またはQRコード読み取り)
  2. 「✏️ 学生」をクリックする
  3. 名前を入力する
  4. 教員から共有されたルームIDを入力する
  5. 「ルームに参加」ボタンをクリックする
  6. 「接続済み」と表示されれば回答の入力・送信が可能
💡
かんたん参加 — URLパラメータ ?room=XXXXXX 付きのリンクやQRコードからアクセスすると、自動的に学生モードになり、ルームIDが入力された状態で表示される。学生は名前を入力して参加ボタンを押すだけでよい。

手順3:回答の入力と確認

学生は画面の入力エリアで手書きまたはテキストにより回答を入力する。入力内容はリアルタイムで教員の画面に反映される。教員は手元のPC画面で全員の回答をタイル一覧として確認できる。

手順4:回答の公開

教員は任意のタイミングでプロジェクターの表示をFLIPの画面に切り替え、学生全員に回答一覧を見せることができる。普段はスライドを映しておき、「はい、やめ!」のタイミングで画面を切り替える運用を想定している。

🎬
演出のポイント — 教員は手元のPC画面で回答状況を確認しながら、全員が書き終わったタイミングでプロジェクターに映すことで、クイズ番組のフリップボードのような一斉公開の演出ができる。

手順5:次の問題へ

教員が「リセット」ボタンをクリックすると、全学生の回答がクリアされ、学生の画面も自動的に白紙に戻る。次の問題にすぐ移行できる。

教員画面

教員画面は、学生全員の回答をリアルタイムで一覧表示するダッシュボードである。手元のPCで回答状況を確認しながら、適切なタイミングでプロジェクターに映して学生全員に公開する。

画面構成

要素 説明
ルームID表示 現在のルームIDを表示。「コピー」ボタンでクリップボードにコピー可能
QRボタン 参加用QRコードをモーダルで表示
接続人数 現在接続中の学生数をリアルタイム表示(例:「12人接続中」)
匿名/記名切り替え 匿名モードと記名モードをトグルで切り替え
回答タイル一覧 全学生の回答をグリッド状に一覧表示するメインエリア
リセットボタン 全員の回答をクリアし、白紙に戻す(確認ダイアログあり)
終了ボタン セッションを終了し、全学生との接続を切断
FLIP AB3X9K コピー QR 12人接続中 記名 リセット 終了
山田太郎
42
佐藤花子
鈴木一郎
東京
田中美咲
未回答
教員画面の表示イメージ(記名モード・4人接続時)

回答タイル一覧

学生の回答は、グリッド状のタイルとして画面に敷き詰められる。1タイルが1人の学生の回答に対応する。

項目 仕様
レイアウト グリッド状のタイル表示。接続人数に応じてタイルサイズが自動調整される
最大表示数 30人(1ルームの最大参加人数)
タイル内容 手書きの場合はキャンバスの描画内容、テキストの場合は入力文字列を表示
名前表示 記名モード時のみ、タイルの上部に学生の名前を表示
リアルタイム更新 学生が手書き中・テキスト入力中の内容がリアルタイムで反映される
空タイル 未回答の学生のタイルは「未回答」と表示される

グリッドレイアウトの自動調整

接続人数に応じて、タイルの列数とサイズが自動で調整される。

接続人数 列数(目安)
1〜4人 2列
5〜9人 3列
10〜16人 4列
17〜25人 5列
26〜30人 6列

匿名モード/記名モード

モード 表示 用途
匿名モード タイルに名前を表示しない。回答内容のみが並ぶ 学生が気軽に回答できる。正解・不正解を気にせず書ける
記名モード タイルに学生の名前を表示する 教員が個別の理解度を把握したい場面。指名して深掘りする場面

切り替えはいつでも可能で、切り替えた瞬間に表示が反映される。

記名モード
山田太郎
42
佐藤花子
東京
匿名モード
42
東京
記名モード(左)と匿名モード(右)の比較

学生画面

学生画面は、スマートフォンでの操作に最適化された回答入力画面である。手書きモードとテキストモードを自由に切り替えて回答を入力できる。

画面構成

要素 説明
接続ステータス 教員との接続状態を表示(「接続済み」「接続中...」「切断」)
モード切り替え 「✏️ 手書き」「⌨️ テキスト」のタブで入力モードを切り替え
入力エリア 手書きモード時はキャンバス、テキストモード時はテキスト入力欄を表示

手書きモード

項目 仕様
キャンバス スマートフォン画面の幅いっぱいに表示される描画エリア
ペン色 黒一色(固定)
ペン太さ 固定(変更不可)
消しゴム キャンバス全体をクリアする消しゴムボタン
入力方法 指でタッチして描画。タッチの軌跡がストロークとして記録・送信される
データ送信 1ストローク(指を離したタイミング)ごとに座標配列を教員に送信
接続済み トップに戻る
✏️ 手書き
⌨️ テキスト
指で描画
🧹 全消去
学生画面の手書きモード表示イメージ

テキストモード

項目 仕様
入力欄 テキストエリア。プレースホルダーに「回答を入力...」と表示
入力方法 キーボードで文字を入力
データ送信 入力内容が変更されるたびに(デバウンス処理あり)テキスト全体を教員に送信

モード切り替え

項目 仕様
切り替え方法 画面上部の「✏️ 手書き」「⌨️ テキスト」タブをタップ
切り替え時の挙動 切り替え前の入力内容はクリアされる。教員画面のタイルも新しいモードの内容に更新される
自由切り替え いつでも何度でも切り替え可能
⚠️
注意 — モード切り替え(手書き↔テキスト)を行うと、切り替え前の入力内容はクリアされる。回答が消えてもよいタイミングで切り替えること。

リセット時の挙動

教員がリセットを実行すると、学生の画面は以下のように変化する。

項目 挙動
キャンバス 白紙にクリアされる
テキスト入力欄 空欄にクリアされる
入力モード 現在のモード(手書きまたはテキスト)が維持される
通知 「リセットされました」と短時間表示される

手書きデータの通信仕様

手書きデータは画像ではなく、ストローク(線の軌跡)の座標配列として送信される。これにより通信データを軽量に保つ。

ストロークデータ

項目 仕様
データ形式 座標ペア [x, y] の配列
座標系 キャンバスの左上を原点 [0, 0] とした正規化座標(0.0〜1.0)
送信タイミング 1ストローク完了時(指を離したタイミング)に送信
1ストロークのサイズ 座標数に依存するが、通常数百バイト〜数KB程度

座標を正規化(0.0〜1.0)することで、学生のスマートフォン画面サイズと教員のPC画面タイルサイズが異なっていても、正しく描画を再現できる。

学生のスマホ画面
[0,0]
[1,1]
正規化座標
[0.1, 0.8]
[0.5, 0.4]
[0.9, 0.3]
教員画面のタイル
正規化座標による画面サイズ非依存の描画再現

消しゴム操作

項目 仕様
動作 キャンバス全体をクリアする(部分消しゴムは非対応)
データ送信 { type: "clear_canvas" } を教員に送信
教員画面 該当学生のタイル内の描画が全てクリアされる

教員画面での描画再現

教員画面の各タイル内にはミニキャンバスが配置され、学生から受信したストロークデータを順次描画する。正規化座標をタイルサイズに変換して描画するため、タイルサイズが変化しても回答内容は正しく表示される。

QRコード・ルーム共有

共有方法

教員は以下の3つの方法で学生にルームを共有できる。

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

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

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

例:

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

このURLをチャットに貼り付けたり、QRコードにしたりすることで、学生はルームIDの手入力なしで接続画面に到達できる。名前の入力と「ルームに参加」ボタンのクリックのみで参加が完了する。

トラブルシューティング

接続できない

回答が教員画面に表示されない

手書きの描画がずれる

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

一部の学生だけ接続できない

学生画面で「接続中...」のまま進まない

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

リセットされたが白紙に戻らない

注意事項

⚠️
使用上の注意
  • インターネット接続が必要(PeerJSシグナリングサーバーへの接続およびP2P接続の確立に使用)
  • 通信が不安定な環境では、手書きストロークの反映に遅延が発生する可能性がある
  • 教員がブラウザを閉じると、全学生との接続が切断される
  • 1ルームあたりの参加人数は最大30人。30人を超える授業では、複数ルームに分けて使用する
  • 回答データはブラウザのメモリ上にのみ存在し、外部サーバーに保存されることはない
  • リセット操作で回答は完全に消去され、復元できない。回答を記録として残したい場合は、リセット前にスクリーンショットを撮影する
  • 手書きモードの消しゴムはキャンバス全体のクリアのみ対応。部分的な消去には対応していない
  • モード切り替え(手書き↔テキスト)を行うと、切り替え前の入力内容はクリアされる
  • NAT越えが必要なネットワーク環境(企業VPN内など)では、P2P接続が確立できない場合がある
  • QRコードリーダーで正しく読み取れない場合は、URLパラメータ付きリンクを直接共有すること