Moodleに小テストをインポートしたときの記録

## 目次
1. はじめに
1. 概要
1. 実際の作業手順
1. まとめ
1. 参考サイト

## はじめに
この記事はhtmlはなんとなくでしかわからない、Moodleも誤字脱字以外の修正は初めてという状態の人間が、Moodleを利用した社内システムに全数十問の小テストを追加したときの記録です。

最初に少し調べたのですが、一括で問題を登録する簡単な方法を見つけられませんでした。
仕方ないから1問ずつ問題を登録しようとしたのですが、5問目くらいで本当にこれをn倍するの？という疑念が浮かび方法を模索しました。
結局手動に頼った部分もありますし、もっとスマートな方法があるんだろうなとは思いつつ記録として残したいと思います。

なお、フィードバックの登録が不要であったり、問題の細かい設定などをデフォルトから変更する必要がない場合は次の概要に記載した「Aikenフォーマットで問題をインポート」で完了です。
また、HTMLなどに慣れている方は最初からMoodle XMLフォーマットで問題をインポートできるのではないかと思います。

## 概要
1. Aikenフォーマットで問題をインポート
1. インポートした問題を1問だけ最終形態まで設定変更
1. Moodle XMLフォーマットで問題をエクスポート
1. エクスポートしたファイルを最終形態にした問題をもとに修正
1. Moodle XMLフォーマットで修正した問題をインポート

## 実際おこなった作業手順
小テストを追加したいトピックがすでにあることが前提なので、トピックがない場合は新しく作っておいてください。

#### Aikenフォーマットで問題をインポートするための準備
> ※この手順はAikenフォーマットを知るために実施しただけなので、実施する必要はありません。
Aikenフォーマットで問題を記入したファイルを用意して「Aikenフォーマットで問題をインポート」の手順に進んでください。

「活動またはリソースを追加する」→「小テスト」→設定マークのプルダウンから問題バンクの問題を選択します。
![スクリーンショット 2023-12-09 131641.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/0a22339d-e03c-cfe1-9705-d7b680cf6455.png)

まず手動で「新しい問題を作成する」から1問だけ登録します。
![スクリーンショット 2023-12-09 132350.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/423ae675-a861-0768-90d7-03a0f5cdf224.png)

登録できたら登録した問題をエクスポートします。
![スクリーンショット 2023-12-09 132542.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/3d026b34-d45f-6d2e-b8e1-338c6bf9ba94.png)

このときAikenフォーマットを選択します。※これが一番シンプルなフォーマットのようです。
![スクリーンショット 2023-12-09 132608.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/bc39c0de-adc4-d72d-9c90-a300178048e4.png)

エクスポートしたファイルを開き、どのようなフォーマットかを確認して、自分が登録したい問題をこのAikenフォーマットに変更していきます。
私は登録したい問題が少し似たフォーマットだったので置換で割と簡単にAikenフォーマットに修正できました。
※下記がAikenフォーマットの記述方法です。
```
サツマイモは何ですか？
A) 芋
B) 石
C) 魚
D) 色
ANSWER: A

猫は何ですか？
A) 哺乳類
B) 神
C) 概念
D) 宗教
ANSWER: B

一番好きな季節は何ですか？
A) 春
B) 夏
C) 秋
D) 冬
ANSWER: C

```

インポートしたい問題を記入したファイルは文字コードをUTF-8にしておく必要があるので注意です。
別の文字コードだと正常にインポートできませんでした。
※メモ帳なら窓右下に文字コードが表示されます。
![スクリーンショット 2023-12-09 141737.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/9fc70a4b-d3e3-a3bc-6f0a-63a7c28bb5c1.png)

#### Aikenフォーマットで問題をインポート
問題を記入したファイルをAikenフォーマットでインポートします。
![スクリーンショット 2023-12-09 133747.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/601fa25a-c70d-753e-ca8b-a7117a1f20d2.png)

インポートした問題がすべて正常に追加されていることを確認します。
※エラーがでるのはこのタイミングでした。
![スクリーンショット 2023-12-09 133806.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/628ac5de-8d9d-12ce-b113-5b31dc6cfc79.png)

正常に登録できると問題ページで下図のように問題が追加されます。
![スクリーンショット 2023-12-09 133825.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/d9c3b4c2-05d0-0de7-0f34-3e345e64388a.png)

#### インポートした問題を1問だけ最終形態まで設定変更
インポートで登録した問題の1問目の細かい条件を手動で修正します。
私は「選択肢をシャッフルしますか？」「選択肢に番号付けしますか？」の2つをデフォルトから変更しました。
![スクリーンショット 2023-12-09 132524.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/09ffa3d9-eed0-047a-0693-a4e8e53630fb.png)

#### Moodle XMLフォーマットで問題をエクスポート
再度すべての問題をエクスポートします。
このときMoodle XMLフォーマットを選択します。
![スクリーンショット 2023-12-09 133910.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821963/4e7a45b7-a406-ff0f-328e-6ba80c1da3db.png)

#### エクスポートしたファイルを最終形態にした問題をもとに修正
エクスポートしたファイルを開き、1問目だけが目指している形になっているので、2問目以降も置換などを使い1問目と同様の設定値に変更していきます。
今回は下記がデフォルトから変更した箇所をさしていました。
```html
<shuffleanswers>false</shuffleanswers>
<answernumbering>ABCD</answernumbering>
```

> 今回の執筆中にMoodle XMLフォーマットでデフォルトのままの項目を削除しても正常にインポートできるのでは？と思い至り、試してみたらその通りでした。
Moodle XMLフォーマットをシンプルにして良いのであればフィードバックも簡単にインポートで追加できると思います。
どこまでシンプルにしていいかはわかりませんが…

#### Moodle XMLフォーマットで修正した問題をインポート
修正したMoodle XMLフォーマットのファイルをインポートする前に、これまでの作業で登録した未完成状態の不要な問題を削除します。
問題バンクの問題を整理できたら、ファイルをインポートします。

あとは問題が正常にインポートできているかなどを確認して作業完了です。

私は最後に手動で各問題にフィードバックをコピペして登録するという作業を行いました。


## まとめ
結局手動に頼ることになった部分もありましたが、精神的負担はずっと軽減されたので結果的にこの工程を経たことは良かったと感じています。
1回きりの作業だったのでとりあえず問題登録できたらいいやという感じでしたが、もし定期的に発生する作業であったり問題数が3桁近くなるのであれば1回のインポートで完了するように考えます。
文章の整形にはテキストエディタの置換、Excelの関数を使いました。

## 参考サイト
- [Moodle 問題のインポート](https://docs.moodle.org/3x/ja/%E5%95%8F%E9%A1%8C%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88)
- [Qiita 記事の書き方](https://qiita.com/hagi83484/items/895c6e3c3519c05d8cb2)
- [Qiita マークダウン記法 一覧表・チートシート](https://qiita.com/kamorits/items/6f342da395ad57468ae3)