MoodleBreakDown ガイド

Yutaka Yasuda

1. はじめに

MBD (Moodle Break Down) は Moodle のバックアップファイルから、利用者の一覧やオンライン提出レポートの結果をテキストファイル形式で得るためのものです。
もしあなたが Moodle に向かって 100 人のレポートを処理するのに何百回もクリックをするのは嫌だ、回収したファイルや提出者のリストだけをくれたら後処理は手元の PC でやりたい、と思うタイプの利用者なら試す価値があるかも知れません。

MBD は Web サービスとして提供されています。MBD サイトにアクセスしてファイルをアップロードし、変換し、結果をダウンロードする格好で利用します。

1.1 免責

やっつけで作ったプログラムなので不完全な動作をするかも知れません。授業運営に支障が出ても悪しからずご容赦下さい。

2. Step by Step

以下に使い方を手順に沿って説明します。

2.1 接続

https://s.ylb.jp/MBD/ にアクセスしてください。
(先頭の https:// は省略できません。いつもの http ではく https であることに注意してください。)

下図のような web ページが現れるでしょう。(ブラウザによってボタンの形や位置が幾らか異なりますが問題ありません。)

ただし下図のような警告が現れる場合があります。

これは SSL と呼ばれる盗聴やなりすましを防止する仕組みを使っているのですが、そのなりすまし防止のための証明書に関する設定が完全でないからです。運営者(安田)の都合で申し訳ないのですが、今はこれを正しくする予定がありませんので、このまま警告を無視して使ってください(この例の場合では「続ける」をクリックする)。

2.2 事前の準備

予め Moodle のバックアップ機能を利用して、backup-xxx-xxx.zip といった格好のバックアップファイルを作成し、手元のコンピュータにダウンロードして下さい。

そこから moodle.xml ファイルを取りだして下さい。バックアップファイルは ZIP 形式の圧縮ファイルになっています。Windows XP, MacOSX ならダブルクリックするだけで展開されますので、その中をチェックしてください [1] 。moodle.xml と書かれたファイルが見つかると思います。(拡張子 .xml は表示されず、単に moodle という名前の表示になっているかもしれません)

2.3 ファイルの登録

MBD のページに接続して画面上の ボタンをクリックしてください。登録するファイルを選択するためのウィンドウが開きます。ここで先ほど取り出した moodle.xml ファイルを選んでください。
ボタンの横あたりに登録したファイルの名前が表示されておれば次に進んで下さい。


2.4 処理項目の設定

続いて必要な処理項目をチェックします。全ての処理をして必要なところだけ使っても良いのですが、処理を限定的にする方が処理待ち時間が短くなります。

以下に各項目について説明します。

Users List:

コースに登録されている利用者一覧が得られます。

assignment info:

設定された課題の一覧が得られます。
対象とする週をポップアップメニューから指定してください。初期状態でもある「Not Need」に設定しておくと、課題の一覧については処理しません。
メニューの選択肢にある「Preface」は Moodle が自動的に作成する第一週のすぐ上にある「ニュースフォーラム」などが含まれるブロックを意味しています。Moodle システムはこれを「第 0 週」として処理しています。

以下の二項目はこの処理を指定したときのみ有効となります

with Online answer list:

オンライン型課題の提出状況と、その提出結果が得られます。
Moodle では受講生が Web 画面上で短いレポートを入力して回答するタイプの課題をオンライン型と呼んでいます。課題ごとの提出者一覧と、その回答結果を HTML で縦覧できるようにしたものが作成されます。

with Uploaded file list:

アップロード型課題の提出状況が得られます。
Moodle では受講生が添付ファイルをアップロードして回答するタイプの課題をアップロード型と呼んでいます。課題ごとの提出者一覧が得られます。

output format:

出力形式を選択します。以下の三つの選択肢が用意されています。

Plain text:

単純なテキスト形式。等幅フォント向けに整形されています。

TAB separated text:

TAB 区切りテキスト形式。表計算ソフトなどで後処理をするのに便利です。

both of them:

上の両方を作成します。

2.5 Do it. 処理開始

Do it ボタンをクリックすれば処理が始まり、下記のような結果報告が現れます。

backupfile: backup-200602440508-20260415-1406.zip
backupdate: 2006/04/15-14:06
coursename: 【春学期木4】断食道場 (200603441548)
category: 木曜日

See the results at ;
https://s.ylb.jp/work/phpwbhoOv85c5d2b087c6b80f3b865812e90f88aa/

上記のようにして示されるリンクに、結果のファイルが出来上がりますのでチェックしてください。
ただし、処理は数分かかる場合があります。もしリンク先をチェックしたときに「Just a moment..」などと表示されていた場合はまだ処理中ですので、しばらく待ってから再読込みをしてください(ブラウザのリロードボタンをクリック)。
下図のようなファイルのリストが現れたら、処理が完了しています。
各ファイルの内容については次節を参照ください。

2.6 作成されるファイル

以下に作成されるファイルについて説明します [1]

出力形式の指定で Plain text を指定した結果作成されたファイルは、下に示すようにファイル名の拡張子が .txt になっています。TAB 形式を指定した場合は .tab という拡張子で作成されます。

なおこれらのファイルは一日ほどで自動的に消去されます。それまでに手元にダウンロードしてお使い下さい。

_assign.txt (or .tab)

設定された課題の一覧。

Example: [ plain text ] [ TAB text ]

_course.txt (or .tab)

コース情報(タイトルおよび参加者リスト)。

Example: [ plain text ] [ TAB text ]

参加者リストに現れる項目の内容は以下の通り。

可視形式 TAB区切り 由来、内容
-------- --------- -----------------------------------------------------------
AUTH     AUTH      pam または manual, 認証形式を示す。一般ユーザは pam。
MDL#     MDL-ID#   Moodle の内部ユーザコード。順不同。
T        TYPE      A or S or T, 管理者、学生、教員を示す。
ID#      ID#       学生番号 or 職員番号。
NAME     NAME1,2   氏名情報(漢字含む)。
USER-ID  USER-ID   Moodle システムへの login 名。
EMAIL    EMAIL     Moodle に登録されているメイルアドレス。
-------- --------- -----------------------------------------------------------

_online.txt (or .tab)

オンライン型課題一覧とその提出者リスト。

Example: [ plain text ] [ TAB text ]

課題ごとの提出者一覧が含まれています。項目の内容は以下の通り。

可視形式 TAB区切り 由来、内容
-------- --------- ----------------------------------------------------------- 
T        TYPE      A or S or T, 管理者、学生、教員を示す。
D        DEPT      0 等数字, セメスタを示しているようだが確信なし。
ID#      ID#       学生番号 or 職員番号。
NAME     NAME1,2   氏名情報(漢字含む)。
DATE     DATE      提出課題の最終更新日時(提出日時)。
USER-ID  USER-ID   Moodle システムへの login 名。
-------- --------- -----------------------------------------------------------

_online_anon.html

オンライン型課題の提出結果を HTML で一覧にしたもの(匿名版、提出順)。

Example: [ HTML ]

_online_name.html

_online_anon.htmlの記名版(氏名つき、番号順)。

Example: [ HTML ]

教員が採点をするといった作業のために用意したつもりです。一般に学生の個人情報を断り無く広く公開するようなことは認められていませんので取り扱いにはご注意ください。受講生に他の受講生の提出結果を見せたい、といった用途には匿名版を利用されると良いでしょう。

_rename_bat.txt

アップロード型提出課題のディレクトリ再構成用スクリプト(Windows/DOS用)。

Example: [ plain text ]

バックアップファイルを展開すると、提出ファイルを取り出すことが出来ます。ただしその配置は下図左のようになっています。moddata という名前のディレクトリがあり、この中の assignment ディレクトリ以下に、設問ごと、提出者ごとにディレクトリを階層化しているのです。
困ったことに設問番号と提出者番号は Moodle 独自の番号体系でつけられていますので、このままでは採点などが非常に難しくなります。

上図右はこれを attached というディレクトリ以下に週・課題番号、学生番号に整理し直したものです。採点にはおよそこの方が便利でしょう。
このファイルはこのような配置換えを自動的に行わせるためのスクリプトです。

_rename_sh.txtを参照。これの MacOSX/Unix 向け shell script。

_rename_sh.txt

アップロード型提出課題のディレクトリ再構成用スクリプト(MacOSX/Unix用)。

Example: [ plain text ]

_rename_bat.txtを参照。これの Windows 向けバッチスクリプト。

_upload.txt (or .tab)

アップロード型課題一覧とその提出者リスト。

Example: [ plain text ] [ TAB text ]

課題ごとの提出者一覧が含まれています。項目の内容は以下の通り。

可視形式 TAB区切り 由来、内容
-------- --------- ----------------------------------------------------------- 
T        TYPE      A or S or T, 管理者、学生、教員を示す。
D        DEPT      0 等数字, セメスタを示しているようだが確信なし。
ID#      ID#       学生番号 or 職員番号。
NAME     NAME1,2   氏名情報(漢字含む)。
DATE     DATE      提出課題の最終更新日時(提出日時)。
USER-ID  USER-ID   Moodle システムへの login 名。
DONE     DONE      高度なファイル提出で「最終提出」操作をすると DONE と表示。
-------- --------- -----------------------------------------------------------

moodle.xml

登録したファイルそのもの [2]

xarchive.zip

これらのファイルの ZIP アーカイブ(まとめてダウンロードしやすいように)。


3. おわりに

このシステムは Moodle が一括処理にまったく適さない仕様であるために作成しました。Moodle は一件一件ひたすらクリックして個別に丁寧に対応する指導方針に沿うよう意図して設計されているため、その機能がないこと自体は不出来といった種類のものでは無いでしょう。ただ私はファイルやメッセージの回収だけを GUI つきシステムに預けて、あとはデータをくれれば何とでもするよ、という使い方が好みなのです。また、数百名の受講生から届いたメッセージを数百回(のN倍)クリックするのはいかにも無理があります。そんな場合は提出物は何とかしてまとめてざっと縦覧したいと思います。

それから、この種のシステムでは一般に問題とされないのかも知れませんが、運営されていたシステムが停止した後、作成または回収したデータにアクセス出来なくなります。一方、大学では成績判定のために用いた資料(テストの回答など)に何年間といった単位での保存義務が(教員に対して)課せられています。つまりシステムの運用方針と教務上の義務が矛盾しているのです。特に我々のサイトでは(私にはその理由が理解出来ませんが)意図的に過年度のデータをシステムから消しています。教務上の義務を果たすためには、全ての提出結果を個別保存するかプリントアウトしなければならない、といったナンセンスなルールをユーザに押しつけるしかありませんが、実に不条理で、無責任です。やはりスタンドアロンで継続的にアクセスできる、satic な HTML や plain text の形式でデータを残すのが適当でしょう。(私が自分で設計したシステムはそのようになっています。)

このシステムが吐き出すデータはそれらの希望をある程度満たせる可能性があります。

オープンなソフトウェアですから、そうした希望はクレームではなく contribution に昇華するのが本当でしょう。しかし私にはそれほどの手間は掛けられないので quick and dirty hack で対応したのがこのシステムです。本当なら運用システムのデータベースを直接触る方が確実で高速処理が可能なのですが、そうした機能の外付けを我々のサイトの運用者は好まないため、システムの外でやっているわけです。もともと MySQL データベースに格納されているデータを XML の構造で再構築して、更にそれを戻してテキスト化しているわけですから大変な回り道と労力の無駄をしているシステムとも言えます。

今回の作業は、Moodle のバックアップデータが XML であるという理由だけで私にとって初めての幾らか大きな Java プログラミングとなりました。全く Objective でない、まるで COBOL で書いた帳票処理のようなコードを千行ほど塗りたくった印象です。それでも勉強になりました。個人的には少し無駄でない部分ができたわけで、ありがたいです。またほとんど利用されないだろうという予想のもとに、 Servlet といったしゃれたものを使わず、負荷・処理速度を無視してコマンドレベルで動作させています。遅いです。

Moodle 自体の仕様を知らず、コードも見ず、運用者の項目設計の意図も知らず、バックアップファイルからリバースエンジニアリング的に起こした空想上の仕様に基づいて組まれています。まともなテストもしていません。

それでも興味のある方はソースコードをお渡しすることに抵抗はありませんので、遠慮無く連絡ください。

動作上の不具合、改善提案なども遠慮無くどうぞ。

謝辞

このドキュメントは三好先生のプログラミングAクラスのために作成されました。私に作成の動機を与えてくれた受講生たちに感謝します。
2006.4

更新情報

-- 2007.4 --
運用されている Moodle のバージョンアップに伴い、バックアップデータファイルの形式が替わったことに対応して修正。

機能的には一点、高度なファイル提出で追加された「メモ」と「採点のための最終提出」機能にそれぞれ対応した。メモは単純に提出リストの中にユーザが書いた内容をそのまま出すだけとした。最終提出については DONE という項目を提出者リストに含めることにした。最終提出操作をした提出課題は、その行の DONE 項目が done となる。かなり汚い修正だが今年はこの程度でどうだろう。

運用されている Moodle のバージョンが 1.5 から 1.6 に上がり、バックアップデータファイルに互換性がなくなりました。また、1.5 の時点でおかしかった XML データファイルの文字コードが正しい UTF-8 になりました。これらの修正と運用上のトラブル防止のために、我々のサイトでは過年度のバックアップデータを新年度のクラスにレストアできない、という問題が生じてしまいました。図らずもスタンドアロンで保存できる機能の重要性が表に出てしまった格好です。

Moodle コミュニティはこの文字化けや非互換性の問題に対して「バックアップFAQ」の項目では「旧バージョンのMoodleシステムを手元に構築して、そこにリストアした後にシステムを新バージョンにアップグレードして変換処理を施し、再度バックアップをすれば新バージョンのMoodleで使えるバックアップデータが得られる」と紹介されていました。残念ながら私のサイトでは大多数のユーザに無理な方法です。

運用者が幾らか対応するようですが、やはりスタンドアロンで扱える形式で手元に残すようにするのが良いでしょう。

Yutaka Yasuda