はじめに
hkob の雑記録の第154回目は、Moodle からダウンロードしたファイルを適切な場所に自動的に展開する Moodle extract Workflow を解説します。
Moodle extract Workflow
私の授業では、moodle の課題の評価を実施しています。課題は zip としてまとめられてダウンロードすることができます。以前は、自分で展開して適切な場所に移動していたのですが、面倒になったのでスクリプトを作成しました。Workflow は以下のようになっています。実際にはただのスクリプトなのですが、いちいちターミナルを立ち上げるのは面倒なので、Alfred から起動しているだけです。

Keyword は me としました。引数はありません。

ターミナルから実行することもあるので、その moodle_extract.rb スクリプトを Terminal command で呼んでいるだけです。

ちなみに moodle_extract.rb は以下のようになっています。今年度の moodle の科目名には 25-XXX のように省略名を付けているので、XXX の部分を見て保存先のディレクトリを選択するようにしています。移動後に展開先のフォルダを開くので、その後にスペースキーをタイプするだけで、QuickLook が起動して課題をすぐに確認できます。
#!/usr/bin/env ruby require "fileutils" STORE_DIR = "/Users/hkob/Library/CloudStorage/Dropbox/by_kind/00.Lecture.localized/Lecture2025".freeze DOWNLOAD_DIR = "/Users/hkob/Downloads".freeze def extract(file) file =~ %r{^(.*)\/25-([^-]+)-(.*)\.zip} dir = Regexp.last_match(1) lec = Regexp.last_match(2) name = Regexp.last_match(3) p [file, dir, lec, name] system("open '#{file}'") sleep 3 Dir.chdir "#{DOWNLOAD_DIR}/25-#{lec}-#{name}" # system("/Users/hkob/bin/ren2024.rb") move_dir = { "pr2" => "024.プログラミングII", "pr1" => "023.プログラミングI", "sd1" => "012.sd1.localized", "ip3" => "018.情報処理III", "exp1" => "022.情報システム実験実習", "db" => "025.データベース", "mp" => "017.マルチメディア処理6000", }[lec] dir = "#{STORE_DIR}/#{move_dir}" FileUtils.rm_rf("#{dir}/25-#{lec}-#{name}") FileUtils.mv("#{DOWNLOAD_DIR}/25-#{lec}-#{name}", dir) FileUtils.rm("#{file}") system(%Q[open "#{dir}/25-#{lec}-#{name}"]) end Dir.glob("#{DOWNLOAD_DIR}/25-*.zip").each do |file| extract file end
おわりに
moodle の科目名に適切なルールをつけることで、自動的にエビデンスとなる課題ファイルを適切なディレクトリに展開できるようになりました。ダウンロードした zip ファイルなども自動的に削除されるので、ダウンロードフォルダがゴミ置き場になることを回避できています。この課題ファイルをさらに効率的に閲覧し続ける仕組みを明日解説します。