Moodleの課題提出ファイルの一斉ダウンロード+学籍番号とファイル名の対応

Moodleオープンソースの有力なLMS(Learning Management System)だが, 有償のLMS, WebCT/Blackboardと比較すると欠けている機能も多い. 例えば, 課題(単一ファイルのアップロード, ファイルの高度なアップロード)に対して学生から提出されたファイルを(1)学生に対応するファイル名にrenameして, (2)学生全員のファイルを一斉にローカルディスクにダウンロードする機能である. ここでは, 不完全ではあるが(1)(2)をMoodleで実現する方法について述べる.

(2)一斉ダウンロード

(2-1)Firefox Add-on DownThemAll!を使う

本家のFAQにもあるが, 課題の評定の画面で, Firefox Add-on であるDownThemAll!を使えばいい.

(2-2)管理ブロックの「ファイル」でzipしてダウンロード

管理ブロックの「ファイル」のmoddata/assignmentsフォルダには, 課題で提出されたファイルがそのまま, 課題/学生ごとに保存されている. ただし, 課題名や学生名に対応したフォルダ名ではなく, 内部で使用されているidに対応したフォルダ名なので試行錯誤で見つけなくてはならない(ファイル名に最初から課題や学籍番号がついていればだいぶ助かる. (1)参照). 「ファイル」では, ファイルやフォルダをまとめてzipしてダウンロードする機能があるので, これで一斉ダウンロードすることができる.

(1)学籍番号や課題名に基づいたファイル名

(1-1)汎用ヒト型決戦計算機(学生とも言う)の高度な自然言語処理能力を使う

学生にファイル命名規則を示し, 「そういうファイル名で提出してね」, という.

(1-2)Moodle本体にpatchをあてる

[#MDL-18713] Moodle 1.9.x assignment enhancement name convention and filetype filtering (upload and uploadsingle) - Moodle Tracker
http://tracker.moodle.org/browse/MDL-18713

(1-3)DownThemAll!の「別名で保存」機能を利用

(2-1)で触れたFirefox Add-on DownThemAll!には, ファイルを一定の規則でrenameしてダウンロードする「別名で保存」機能があるのでこれを利用する

  • 課題の評定画面で, 学生の画像, 「更新」へのリンクを[-]ボタンで隠す. すると, 学生1名あたりに存在するリンクは, 学生名のプロファイルページへのリンク, 提出ファイル名のファイルへのリンクだけになる.
  • DownThemAll!を起動する
  • 別名で保存, のところで,
*inum*_*flattext*_*name*.*ext*

と指定する. これは, ダウンロード後のファイル名を,

ページの上から数えたリンクの通し番号_リンク対象のテキスト_実際のファイル名.実際のファイル名の拡張子

を意味する. *flattext*を付加することで, 提出ファイルのファイル名には余計な文字列がついてしまうが, プロファイルのページが

通し番号_画像 学生姓名_view.php.html

というファイル名でダウンロードされる.

  • ローカルマシンで見る

ローカルディスクでダウンロード先のフォルダを開いて, "ファイル名でソート"すると, 通し番号*inum*のおかげで,

001_学生1の姓名...html
002_学生1の提出ファイル1.拡張子
003_学生1の提出ファイル2.拡張子
004_学生1の提出ファイル3.拡張子
005_学生2の姓名...html
006_学生2の提出ファイル1.拡張子
007_学生2の提出ファイル2.拡張子
008_学生2の提出ファイル3.拡張子
...

と並ぶことになる. 提出ファイルに学生名,学籍番号が含まれるわけではないが, これで済む用途もあるだろう(済まない用途なら…このフォルダに対するlsの出力から適切にrenameするようなscriptでも書けば?それを言うくらいならMoodle本体にpatchを当てるかGreasemonkey使うかしろって?). ダウンロード先のローカルマシンがMacである場合には, このフォルダに対してQuickLookを使うと便利かもしれない(提出ファイルがQuickLookで評価できる程度のものなら)