「Preg問題タイプ」の版間の差分

提供:MoodleDocs
移動先:案内検索
編集の要約なし
21行目: 21行目:
* '''Exact matching''' => Yes
* '''Exact matching''' => Yes


その後は、あなたの[[記述問題タイプ|記述]]問題から答えをコピーすればいいのです。hintingの設定については、[[#Hinting|hinting]]のセクションを読んで理解しておくとよいでしょう。いくつかの図解された、ステップバイステップの、[https://en.wikipedia.org/wiki/K%E2%80%9312 K-12]および大学レベルの使用例については、[[Preg問題タイプの例]]を参照してください。
その後は、あなたの[[記述問題タイプ|記述]]問題から答えをコピーすればいいのです。ヒンティングの設定については、[[#ヒンティング|ヒンティング]]のセクションを読んで理解しておくとよいでしょう。いくつかの図解された、ステップバイステップの、[https://en.wikipedia.org/wiki/K%E2%80%9312 K-12]および大学レベルの使用例については、[[Preg問題タイプの例]]を参照してください。


===正規表現の知識は漠然としているが、パターンマッチングを利用してみたい===
===正規表現の知識は漠然としているが、パターンマッチングを利用してみたい===
55行目: 55行目:
基本的に、この問題タイプは[[記述問題タイプ]]の拡張バージョンです。いくつかの異なる方法でその機能を拡張しています(ほとんどどのような組み合わせでも使用できます)。
基本的に、この問題タイプは[[記述問題タイプ]]の拡張バージョンです。いくつかの異なる方法でその機能を拡張しています(ほとんどどのような組み合わせでも使用できます)。
* '''パターン・マッチング''' - 正規表現を使用して、可能性のある学生の答えを記述する強力なパターンを作成できます。
* '''パターン・マッチング''' - 正規表現を使用して、可能性のある学生の答えを記述する強力なパターンを作成できます。
* '''Hinting''' - 学生が問題に行き詰まったとき、次の正しい単語([https://en.wikipedia.org/wiki/Lexeme lexeme])や文字(ペナルティの可能性あり)を尋ねることを許可することができます。
* '''ヒンティング''' - 学生が問題に行き詰まったとき、次の正しい単語([https://en.wikipedia.org/wiki/Lexeme lexeme])や文字(ペナルティの可能性あり)を尋ねることを許可することができます。


===問題の作業に影響する設定===
===問題の作業に影響する設定===

2021年4月6日 (火) 04:27時点における版


注意: このプラグインは、現在 (2020年2月) Moodleブランチ2.3から3.1のみで利用可能と記載されていますが、プラグイン統計タブでは、このプラグインがインストールされている30以上のサイトのうち、半分が3.2から3.8のMoodleブランチであることがわかります。公式にサポートされていないブランチでも、正規表現プラグインは動作しますが、'オーサリングツール' は利用できません。プラグイン開発者は、このプラグインをアップデートして、この問題を引き起こすJavaScriptの問題を修正するために作業しています。DEVELOPER レベルのデバッグを有効にした場合、サーバに危険を及ぼさない警告が表示されることがあります。これらは将来のリリースで修正されるはずです。

Pregは、正規表現 (regexes)を使用して、学生の回答をチェックする問題タイプです(ただし、ヒント機能のために、正規表現なしで使用することもできます)。正規表現は、問題を作成するときの教師と答えを書くときの学生の両方に、膨大な機能と柔軟性を与えます。最初のセクションでは、このドキュメントの使い方を説明していますが、慎重に使用してください。正規表現の構文についての詳細は http://www.nusphere.com/kb/phpmanual/reference.pcre.pattern.syntax.htm にあります。多くの優れた正規表現のマニュアルがありますが、ここでは繰り返しません。

Preg問題とこのドキュメントの利用方法

正規表現については何も知らない (知りたくない) けど、次の単語 (文字) をヒントにするのは便利そうだな

Preg問題タイプを記述と同じように使うことができますが、正規表現についての知識がなくても、高度なヒントを得ることができます。そのためには、選択する必要があります。

  • Notation => Moodle shortanswer
  • Engine => Finite state automata
  • Exact matching => Yes

その後は、あなたの記述問題から答えをコピーすればいいのです。ヒンティングの設定については、ヒンティングのセクションを読んで理解しておくとよいでしょう。いくつかの図解された、ステップバイステップの、K-12および大学レベルの使用例については、Preg問題タイプの例を参照してください。

正規表現の知識は漠然としているが、パターンマッチングを利用してみたい

正規表現を書くのは大変だけど、その強みをパターンとして利用したい場合、オーサリングツールが問題の作成に大いに役立つでしょう。ツールは正規表現の意味を様々な方法で示してくれます: 表現の内部構造(シンタックスツリー)、マッチングの視覚的なパス(説明グラフ)、そしてテキストの説明です。また、複数の文字列に対して正規表現をテストし、期待通りに動作するかどうかを確認することもできます。あなたの正規表現を実験し、遊び、オーサリングツールの対応する変更を見て、最終的にはあなたが望む正規表現を手に入れてください。

まずオーサリングツールのセクションを読み、その後(おそらく自分でツールを試した後)正規表現を理解するのセクションを読みます。(これは任意ですが、面白いし、大いに役立つでしょう) また、問題の仕組みのセクションも読んで、様々な設定とそれが問題にどのように影響するかを理解しておくと良いでしょう。

正規表現をしっかり学んで、正規表現が許すことなら何でもできるようになるための努力をしたい

さて、あなたは正規表現を知らないけれど、それを理解して複雑な表現を簡単に作りたいと思っています。闇雲に努力するのではなく、このセクションを読んで理解することに時間と労力を費やした方が良いでしょう。そして、オーサリングツールについて少し読み、それらを使って正規表現の作成を試してみましょう。これらのツールを使えば、本当によく理解できているか、期待通りの動作をするかを確認することができます。構文ツリーは、優先順位アリティ の意味を正しく理解しようとするときに特に役立つでしょう。正規表現の原理をよく理解したら、問題の仕組み正規表現のリファレンスのセクションを読んでください (可能性を知るためです。わざわざすべてを理解したり覚えたりする必要はありません。定期的に新しいことを学ぶためにそこを見ればいいのです)。これで、オーサリングツールをあまり使わずに正規表現を書けるようになったはずですが、式をテストするためのテストツールは別です。

私は正規表現をよく知っているので、詳しい説明がなくても自分で書けます

様々な設定とその下での問題の動作を理解するために、問題の仕組みを読むべきです。また、オーサリングツールのセクションの正規表現テストにも興味があるかもしれません。最後に、正規表現リファレンスも参考になるかもしれません。

==対応するMoodleブランチと翻訳==。 このプラグインは、現在 (2018年4月) Moodleブランチ2.3から3.1のみで利用可能と記載されていますが、stats page によると、このプラグインがインストールされている50以上のサイトのうち、半分は3.2から3.4のMoodleブランチです。公式にサポートされていないブランチでは、正規表現プラグインは動作しますが、オーサリングツールは利用できません。プラグイン開発者は、このプラグインをアップデートし、この問題の原因となっているJavaScriptの問題を修正するために作業を行っています。DEVELOPERレベルのデバッグを有効にした場合、サーバに危険を及ぼさない警告が表示されることがあります。これらは将来のリリースで修正される予定です。

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP

すべてのMoodleプラグインと同様に、pregプラグインは、最初は英語で利用できます。現在、ロシア語およびメキシコのスペイン語の翻訳が利用可能ですが、AMOSで他の翻訳を行うことができます。

インストール方法

  • Moodle plugins databaseからダウンロード/インストールしてください。
  • すべてのプラグインの依存関係をインストールしてください。

preg missing dependencies.png

preg pathtodot.png

  • Windowsの場合、path to dotへのパスはC:\Program Files (x86)\Graphviz2.38\bin\dot.exeとなります。
  • Macでpath to docを見つけるには、ターミナルウィンドウを開き、次のように入力します。
which dot
    • そして、そのパス(例: /opt/local/bin/dot)を 'サイト管理 / ▶︎ サーバ / ▶︎システムパス' のPath to dotに入力します。

PREG問題の仕組み

基本的に、この問題タイプは記述問題タイプの拡張バージョンです。いくつかの異なる方法でその機能を拡張しています(ほとんどどのような組み合わせでも使用できます)。

  • パターン・マッチング - 正規表現を使用して、可能性のある学生の答えを記述する強力なパターンを作成できます。
  • ヒンティング - 学生が問題に行き詰まったとき、次の正しい単語(lexeme)や文字(ペナルティの可能性あり)を尋ねることを許可することができます。

問題の作業に影響する設定

答えとして指定したすべての正規表現の大文字・小文字の区別を設定します。なお、正規表現部分の大文字・小文字の区別を設定することもできます。 完全一致 は以下のように問題に影響します。

Yes
最初の文字から最後の文字まで、学生全体 の解答があなたの正規表現と一致する必要があります。
No
学生の解答には、あなたの正規表現に一致する 部分 を含めることができます。例えば、正解が "全体" の場合、"the whole enchilada"、"the whole shebag"、"the whole nine yards"、"the whole world"、"the whole truth" はすべて正しい学生の解答となります。

また、special regex syntaxを使用して、いくつかの正規表現を学生の解答全体にマッチするように設定することもできます。

Notations は、回答の "言語" を指定するものです。

Regular Expression
正規表現のための通常の記法です。正確には、Perl互換の正規表現の方言です。読みやすくするために、複数の文字列で正規表現を書いても構いません。
正規表現(拡張)
本当に複雑な正規表現に便利です。これは、PHP の 'x' 修飾子に似ています。正規表現の中で、文字クラスの中にないエスケープされていない空白を無視します。- これにより、スペースを使って自由に正規表現をフォーマットすることができます。また、改行も無視しますが、便利な例外があります。'#' 文字以降、文字列の最後まではコメントとして扱われます(#はエスケープしてはいけませんし、文字クラスの中にあってはいけません)。
Moodle shortanswer
これを使えば、正規表現の構文を一切使わずに、記述問題の解答をそのままコピーすることができます。ワイルドカードの '*' に対応しています。FAエンジンを選択すると、ヒンティング機能を利用することができます。正規表現についての説明は省略できますが、問題のヒンティング動作を設定するために変更できる様々な設定を理解するために、ヒンティングセクションを必ず読んでください。有用なヒントと動作例については、Preg問題タイプの例を参照してください。
マッチングエンジンは、正規表現によるマッチングを行うプログラムモジュールを指定します。最適なマッチングエンジンというものはなく、使用する機能によって異なります。エンジンにはさまざまな安定性があり、使用できる機能も異なります。