授業中に質問を受け付けるシステムと関連ソースコード

質問要望受付システムstudents screen

ここでご紹介するのは、筆者が大学の授業中に質問を受けるために使っている質問要望受付システムです。Webページ経由や携帯メール経由でメッセージを送ると教員の使っているスクリーンや教室の前のプロジェクタースクリーンに学生の生のメッセージが表示されるようになっています。

大学に限らず、授業の内容はあらかじめ自分で予習してくるのが基本です。しかし、講義で難解な専門用語に突然出くわすと、その先、もっとわからなくなることが起こります。またパソコンの操作の演習など実作業や演習でも、ちょっとしたことで遅れをとることがあります。そのため、授業中は「気軽に質問しなさい」「作業が遅れそうなときは待ってくれるよう手を挙げなさい」と助言しています。ただ残念なことに、何度も言っても、授業後に「ここがわからなかった」と言う学生が出ます。大教室では質問しにくい状況があるのも確かです。

そこで「今まさに、この時間、授業時間中に、質問・要望の受付ができるシステム」を考えました。上段、左側の図は授業中の学生のWindowsパソコン画面のスクリーンショットで、画面左部分に授業のWebページと教材、 その右5分の1に質問受付画面が見えています(画像はクリックで大きく表示されます)。 サンプルとして用意した質問要望受付画面(上段、右側の図)をクリックし、何かメッセージを送ってみてください。 後述の質問要望表示画面にそのメッセージがリアルタイムに現れます。

質問要望表示画面

前述の受付画面からメッセージを送ると教員の使っているスクリーンに右のメッセージが表示されます。 右のメッセージの図をクリックすると別ウインドウが開きますので、適当な位置に移動し、大きさを調整してみてください。私は普段、教材をいわゆるホームページ形式で用意し、Webサーバ上に置き、InternetExplorerやFirefoxなどのブラウザを使って表示します。そして自分の使っている画面をプロジェクターでスクリーンに映しながら授業をしています。そのため学生は自分自身が送ったメッセージが私宛に届いたのを確認することもできます。質問要望の送信だけでなく簡単な投票用のボタンを用意し、簡単な集計もできるようになっています。

関連資料とソースコードなど

  1. 質問要望を送るサンプルページ: sample.html
    1. 上記サンプルページを自由にお試しください。私自身には専用別ページがございます。
    2. このページは、ソースを表示させ、別名で保存することで、CGI,javascript,画像のURLを変更しない限り、どのサーバに移動、保存しても動かすことができます。
    3. 質問要望として送信する定型文字列は、HTMLエディタで編集することで、ボタンとして登録できます。%で表示されているURLエンコード後の定型文字列は、Google検索の検索文字列として入力し、URLエンコードされた変換後の文字列をコピー&ペーストすることで望みのものを用意するすることができます。
    4. サンプルページの「教員向け注意」以下は、運用時には削除する方が望ましいと考えます。 理由は、現在の質問要望投票の状況へのリンクが作成してあり、そこをクリックすれば見える 質問要望表示画面(Watchウインドウ)が確認できますが、 このリンクを学生にも見えるようにすると、
      1. 学生もボタンを押すことで投稿内容を消去されてしまい、どのような質問があったか、わからなくなります。
      2. また、授業で相当数の学生が同時に見ることになると、ページが10秒毎の更新なのでサーバへのアクセスが集中する問題があります。
    5. ご自身専用の受付ページが必要な場合は、サーバにCGIのインストールが必要です。
      1. このページに埋め込まれている質問要望を受け取るCGIソース: submit.cgi.txt
      2. カスタマイズできますので何でもご相談ください。
    6. このHTMLには迷惑書き込み防止用の偽CGIが埋め込まれています。コピーするときに一緒にコピーすることで迷惑書き込みを排除することができます。
      1. この質問受付のページは、いわゆるインターネットの掲示板と同じ形で運用しています。今、掲示板は、宣伝などを目的とした迷惑書き込みが行われることが多く、この掲示板もこの対策を行うまでは、ご多分に漏れず被害にあっていました。授業中に書き込みされたのでは、たまったものではありません。
      2. その行為のほとんどは自動投稿ソフトを使って行われていますが、おバカな自動投稿ソフトは、最初に見つかった枠に書くことが多いようなので、ウソの枠を作り、まず、そこへと誘導するようにすると、迷惑書き込みはなくなりました。
        1. 質問受付のフォームの見えているフォームの前に display: none; visibility: hidden;属性で人には見えないよう埋め込まれている偽フォーム部分を取り出したもの:  sample_form.html
        2. また、その中で偽フォームで使用している迷惑書き込み対策用のCGI: real.cgi.txt
          1. そのまま/dev/nullでブラックホールに送ってやっても良いのですが、何か反応が返ればそのまま攻撃を続けると考えて、フォームに入った文字が返るようにしています。
  2. 上記質問受付ページで投稿された現在の質問要望を表示するページ:watch.cgi
    1. 質問を受けた後「何番の質問」と示しやすいよう、プロセス番号下3桁を表示するとともに、いつ送られたかわかるよう、1分以降は「何分前」の表示が出すようにしました。
    2. 確認ページ(Watchウインドウ)内の番号等のボタンを押すことで、対応済、確認済みの質問要望を削除することができます。
    3. メッセージのうち、質問要望(投票以外)は数時間で消えるようになっています。
    4. 時間、見栄えも含め、カスタマイズできますので何でもご相談ください。
    5. ブラウザで授業中、授業の進行に夢中になり、質問要望に気が付かないことがあります。質問要望の表示画面(Watchウインドウ)をバックグラウンドで更新させ、質問要望の書き込みがあった時点で、その面を前面に出す(画面の前面、背面を切り替える)にはJavascriptのWindow.Focus()を使用しています。この機能を使うことには、ブラウザの設定で関連するJavaScriptの部分がONになっている必要があります(特に最近のFirefox!)。
    6. 質問要望を表示するCGIソース: watch.cgi.txt
    7. スタイルシート: sample-style.css
      1. watch.cgiは10秒毎に自分自身をリロードしているので、なるべく軽くするためcssを別立てにしました。cgiのヘッダ部分に組み込んだ方が設置は簡単になると思われます。
  3. パソコンを設置していない教室では携帯のメールから質問要望をメールを受け取ることが可能です 。
    1. メールでWatchウインドウに投稿する場合は以下のアドレス(右のQRコードから読み込み可)に送信します。
      1. QRコードは、Googleで見つかるサイトを利用して作成できます。
      2. メールアドレスはJavaScriptで書いてSPAMが来にくいようにしてありますが、万が一SPAMが来るようになったら、 メールアドレスを変更します。
    2. 質問要望をメールで受け取るスクリプト:sample_mail2web.pl.txt
      1. このスクリプトを/etc/aliasesに書き、メールを受け取った瞬間に動作させます。
      2. unixのwgetlコマンドを使い質問要望を送るページと同様のことができるとようにしています。
    3. メールの場合にはフォームを用いる場合と違い、質問要望なのか、投票なのか区別がしにくいです。そこで、原則として、Subjectに書かれたものは、投票。本文は「質問要望」として扱うようにしました。
      1. 投票は、基本を1文字、最大全角3文字とし、全角文字は半角へと内部で自動変換しています。投票の文字数の例外は「賛成、反対、その他」です。
      2. Subjectに半角6文字、全角3文字以上の場合は、本文と同様「質問要望」として扱います。
      3. 本文に署名など何らかの文字が入っている場合は、Subjectが1文字であっても、質問要望として扱います。
  4. 私が授業で使っている実運用トップページ: index.html
  5. IPC2008@高知大での発表論文: ipc2008_ugawa_08PE09.pdf(866KBytes)

使ってみた実態と感想など

  1. システムを通じて寄せられる質問要望の例(教育大の学生の質問としてふさわしいかどうかを言うと問題ありですが、1年生向けの授業の場合、まだ自覚が足りない学生であり、今後は良くなって行くものとして考えてください。)
    1. 授業環境について
      1. 後ろの電気消して下さい #スクリーンが見にくいとき
      2. 冷房寒いです...
      3. 暑くなってきました
      4. マイク… #電池が切れそうになったとき?
      5. 静かに〜 #授業が始まっているのに周りがうるさいとき
    2. 助言
      1. 添付書類がつかるかどうか になってますよ( ̄∀ ̄)ノ #授業資料の入力ミスを見つけたとき
      2. txtじゃ駄目なんですか。。<br>#私の操作法が間違ったとき、3年
    3. 説明不足のとき
      1. フィリエイトってなんですか? #掲示板の広告の話で
      2. トラックってなんですか? #CDリッピングの話をしたとき
      3. drwxr-sr-x のdって何ですか?#3年生向け授業
    4. 感想
      1. 経験上、絶対メールのほうが話ゎまとめやすいです(・ε・`) #メールよりも話した方が伝わると言ったとき
      2. 悪かったね、ドコモで #docomoよりもauが好きと言ったとき
      3. 先生、実は利用してるんでしょ? #私に来ている迷惑メールを見せたとき
      4. それ本当に迷惑メールですか??? #私に来ている迷惑メールを見せたとき
      5. パスワード書いたら危なくないですか(・・?) #書いてはならないと教えたパスワードを書かせるレポートを出題したとき
      6. 先生は悪人だ #書いてはならないと教えたパスワードを書かせるレポートを出題したとき
      7. 今先生にやられました #書いてはならないと教えたパスワードを書かせるレポートを出題したとき
    5. 質問
      1. Toで2人に送るのと、ToとCcで1人ずつ送るのとでどう違うのですか? #ToとCcの違いの話をしたとき
      2. なぜそんな(他人を装えるような)機能が備わっているのですか?? サーセン!! #Fromを詐称したメールを出せることを話したとき
      3. 何を信じていいか分かりません…… 『他人を装っている』と一発で分かる方法は無いんですか? #同
      4. なんでドットだめなんですか??(・∀・) #ピリオド連続メアドがRFC違反と言ったとき
      5. 携帯でいじめが起こらないようにするには、何をすればよいですか? #携帯のいじめの話をしたとき
    6. 操作に疑問が出たとき
      1. ターミナルでSUN OSと出ません。#3年生向け授業
      2. 2段のままなのですが・・・#同上
    7. 迷惑書き込み対策前
      1. bookmark you thx
      2. cool post dude
  2. 学生の評価
    1. 授業後の感想より
      1. 自分が手を上げて質問しなくても画面上で質問することができるのは良かったです。
      2. 質問、要望を手を挙げずにできるのは、質問しやすかったです。
    2. 授業評価アンケートにも書かれるぐらい評判は良い。実際に質問をしないが、安心感を与えているらしい
    3. ラフな感想も言われるが、それだけ身近に感じてくれているのは良しとするべきと思います。

謝辞

関連リンク

  1. 長谷川孝博先生@静岡大学総合情報処理センターによる改良版、UTF8化、2重投稿防止、パーセンテージの表示など、とても良いものができていますので、是非、お試しください。
    http://jaguar.sys.eng.shizuoka.ac.jp/~hase/sample/

--鵜川義弘