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


Yutaka Yasuda (yasuda@bakkers.gr.jp)