この辺の話題をみて、関係があるようなないような、とりあえず連想したこと。

私がTAをやっていたプログラミング演習の講義では、レポートの答案をメールで提出させてその答案にたいしてユニットテストを行い、その結果をメールで返却する、ということをやっていた。試験を含め、全部それで通した。人がまじめに確認するとレポート1通あたり30分くらいかかるので、60人とか出席する授業ではそんなのやってられない、という判断。学生さんの利益としては、

  • 間違いはすぐにわかる
  • 何度でも提出できる

というもの。教員側の利益としては、

  • 採点が楽になる

というもの。プログラミングの講義だったからできた方法であって、他では不可能な手法だけど、まあそこそこ便利だった。学生さんの反応も、教員の反応も、良好だったように思っている。*1

そこで問題になったのが「このメールを出してきたやつはいったい誰なのか?」という問題。メールアドレスは使えない。だって、どこからメール出してくるかわからないから。大学から出してくるかもしれないし、HotmailGMailを使うかもしれない。大学のメールアドレス以外をrejectする、という方法はあるが、それはなんかダサいよね。

問題は3つあって、

  • 提出した人間を特定できること
  • 成りすまし
  • 盗聴

くらい。上二つを確保する方法は、まじめにやるとしたら、直接鍵を手渡ししてもらって、電子署名を行う、という方法ぐらいになると思う。でも、これはちゃんと使い方を学習してもらうコストや、サーバ側のプログラミングのコストを考えて却下することになった。結局のところ、成りすましについては、そういう成りすましを仮定しないというアナログな方法に頼ることにした。「提出したレポートと異なる結果が出ていた場合は、TAまで教えてください」と。盗聴については、メールでレポート提出というのはみんなやってることだから、そのリスクについては無視するというコンセンサスが取れていることだよね。

さて、1年目は深く考えずに、サブジェクトに学籍番号を入れてもらうことにした。ところが、これは失敗。成りすましとか、そういう問題の以前に、「学籍番号を間違えるやつがいる」(苦笑)。試験のときに、レポートを全然提出していないのに、1問だけ回答した人がいて、変だなぁと思ったときにたどり着いたのがその可能性だった。ちなみに、その後どうなったのかはよく覚えてない。一応、間違えた人の不利にはならないようにしたか、それとも間違えた人間の責任ということで処理したか、そのどちらかだと思う。まあ世の中いい加減なもんです。

2年目は、サブジェクトに記入させるのではなく、学籍番号を書いたファイルを添付してもらうことにした。これならば、一度添付ファイルを作ってしまってあとは使いまわせば、間違いは発生しにくいはず。これは比較的うまく行ったようで、おかしなことにはならなかった。


今後、このシステムを改良するとすれば、ちゃんとしたWebインタフェースを作ってログインしてから提出してもらう、という方法があると思う。今年はその講義のTAをやっていないので、多分私はやらないんだけど。あるアカウントと学生さんの対応付けは、やっぱり問題になるけど、そこはアナログに「なにかおかしなことが起きたら教えてください」ですむと思う。所詮数十人しか取らないんだから。


あと、そういえば出欠確認をWebで行う講義もあったように思います。授業の際に、一人一人に違う鍵を渡しておいて、それをWebで入力してもらう、という方式。Webシステムは、履修申請に使うやつと一緒だから、その時点で成りすましやらのセキュリティの問題は、回避できてる、ということかな。

*1:採点システムがバグってて困りました、みたいなコメントはもらったけど。ごめんなさい