採点と集計(2024)

初めに

NLauthor で作成した問題に対する学生の解答を,採点集計するツールの解説です。数式で回答するコンテンツは自動採点されますが,自由記述等のものは手動での採点となるので,採点用のツールを用意しています。これらのツールは,2種の採点ツール(NLsheet, NLmark)と集計ツール(NLtabulate)で構成されています。加えて作題した問題を蓄える問題バンク(NLportal)もあわせて解説いたします。以下,下記の順で説明を書いてみます。

注:いずれのアプリもサーバー上にテンポラリーフォルダーを作成します。そのフォルダーの有効期限は最短24時間となっています。

 
 

 
「NLmark」は採点用のツールです。下図のコンテンツの採点を例として,利用方法を説明します。コンテンツには自由記述の問題と数式で解答する問題が含まれています。コンテンツのタイトルは「粒子の波動性」です。

 

下図は NLmark を開いたときの画面です。NLmark は各問の解答を一覧表示しながら採点します。LMS に配置された問題を,学生が解答して初めて,NLmark にその問題が表示されます(確認のために,最初に自身で適当な解答を送ることをお勧めします)。採点できるのはその問題を作題した人だけです。作題者以外の NLmark には,その問題は現れません。下記の画像の左側のツリーに,問題のタイトルが表示されています。ツリーのタイトルをクリックすると,タイトルやコンテンツの詳細が各エリアに表示されます。下図では「粒子の波動性」をクリックしました。

 

「Title」にはオーサリングツールでコンテンツに付けたタイトルが表示されます。タイトルを修正したい場合もあるかと思います。そんな場合には此処で書き換えることも可能ですが,コンテンツそのものに変更を加えるわけではなく,仮の変更です。

「Group」は講義名称等を付けることを想定していて,指定するとツリーにフォルダーを作成します。このフォルダーは一階層だけ作成可能です。初期状態は “default” となっていて,どのフォルダーにも入らずツリーの先頭の方にコンテンツ名が表示されます。Grooup名は直接記入することも可能ですが,すでに作成したGroupであれば,ドロップダウンリストからの選択もできます。

「Question ID」はコンテンツを区別する数字です。オーサリングツールによって付与されます。変更はできません。

「Inform」は学生に採点結果を通知するかどうか切り替えものです。初期状態は作題者が設定している初期値によって決まります。初期値を変更するには「Account」ボタンを利用してください。

「Question」では,コンテンツの解答を締め切るかどうか設定します。最初は解答可能と設定されます。コンテンツの解答を締め切るときは,「Question」をLockedとして,採点が終了したら「Inform」をYesとして,学生に点数を知らせます。SCORMコンテンツであることから,学生がコンテンツを開いているときに点数をMoodle 等の LMS に書き込みます。後採点であれば,再度学生がコンテンツを開いたときに書き込みます。しかし教師はLMSの評定とは別に,NLtabulateを利用して学生の点数を集計可能です。Moodle 等の点数を参照する必要はありません。

 

上記の設定は「Update」ボタンを押すことで確定されます。このヘルプでは「Group」を「解説用のコンテンツ」と記入します。「Update」ボタンをクリックするとツリーが更新されて「解説用のコンテンツ」というフォルダーが表示されます。ここで,いったんフォーカスが外れます(操作するターゲットが不定となる)。フォルダーをクリックして開いて,再度「粒子の波動性」の枝をクリックします。

 

次に右側にあるドロップダウンリスト「Question #」で採点する問の番号を選ぶと,右下方の表に,学生の解答内容の一覧が表示されます。最初,表には ID, rand, Student Answer, Count 列が表示されます。ID は通し番号で,解答された順番に付けられます。rand は乱数値の設定を表示しますが,このコンテンツでは特に使用していないので括弧だけで中は空白です。Student Answer は受講者の回答です。Count は同じ解答をした学生の人数を表します。送信されたすべての解答が表示されるので,学生が解答を訂正して変更した場合 Count がゼロとなることはあります。採点の表はソート可能です。ID と Count と書かれたエリアをクリックするとソートされます。昇順降順いずれも可能です。デフォルトでは表示されませんが,この他にも列があって,右中ほどにある項目をチェックをすると表示されます。Tans は表にはありませんが,教師が用意した正解が表示されます。A-mark は自動採点の点数です。AutomaticResponse は自動採点の際の受講生に返すメッセージです。M-mark は手動採点の点数です。これは自動採点の点数を上書きします。Reason は受講生に返す手書きのメッセージです。Status は採点プログラムによって作られるメッセージですが,受講生には返しません。何が書き込まれるかは追々説明いたします。Annotate は手書きのメッセージですが,受講生には返しません。採点の際のメモ的な利用を想定しています。

 

以下の図では,Random のチェックを外し,M-mark,Reason,status,Annotate をチェックしました。初期状態では講義中にこの画面を学生に見せる場合を考えて正解を非表示にしています。この問いは自由記述(none)で,自動採点に関連した列は空白ですから表示させていません。最初の回答の status には,coincide:yes と記入されています。自由記述の場合のデフォルトの Operation コードでは,正解と受講生の回答が一致した場合に coincide という key に yes と記入するようになっています。

 

Operation コードに記述することで,status に key とその値を追加できます。追加された key は What is included in Status: というドロップダウンリストに現れます。

 

What is included in Status: にリストアップされた項目にチェックをすると,その key の値が独立した列として表に現れます。下図では coincide をチェックしました。また下図では,列が多くなりすぎて表示できなくなったので, status を非表示としています。

 

行をクリックすると,M-mark, Reason, Annotate が記入可能となります。書き換えた内容を確定するには,一旦 Accept ボタンを押した後,Submit ボタンをクリックします。Undo ボタンは記入(編集)前の状態に戻します。

 

下図は Submit ボタンをクリックして,編集が完了したときのアラートです。

 

続いて,数式を自動採点するタイプの2番に切り替えます。「Question #」で2番を選びます。表示項目に A-mark, AutomaticResponse をチェックして追加しました。A-mark は stack による自動採点の点数です。AutomaticResponse は STACK からのメッセージが入ります。A-mark も AutomaticResponse も手書きで記入することはできません。繰り返しになりますが,下図に示すように点数は手動で上書きできます。M-mark に記入した点数の方が優先されます。status からMyOwnTans という項目を列に追加しています。これは正解を示す項目です。このコンテンツでは関係がないのですが,乱数等の設定があれば受講生ごとに正解が異なります。その場合 MyOwnTans はそれぞれ異なる値となります。
Accept ボタン,Submit ボタンと押して修正を確定させます。

 

これで採点は終了です。
 

これが宿題としての運用であれば,最初 inform を no として,受講生に解答させます。その場合自動採点であっても受講生に採点結果を知らせません。回答を締め切るときには,Question Locked をチェックします。採点が終了したら inform を yes として学生に採点結果を知らせます。以下でいくらか補足します。
 
Question Locked で inform が No であるときに,学生がコンテンツを開くと下図の様に,赤い Locked マークとともに各問いに Accepted と表示されます。解答が締め切られたが,まだ採点が終了せず結果が公表されていない状態です。解答欄をクリックしても解答を送ることはできません。終了ボタンのみ有効です。

 

Question Locked で inform が Yes となった後は,下図のように学生が最後に送信した解答が採点されて表示されます。

 

メッセージがあれば表示されます。メッセージをクリックすると閉じます。

 

「終了」ボタンを押してコンテンツを閉じます。

 
 

解答のタイプが movie の場合を取りあげます。コンテンツ「動画で回答する例」の枝をクリックします。movie では,採点する際に,解答履歴を検索しません。検索しない場合には特定の受講生が表の行を占有し,status に name という項目が現れます。下図ではその name をチェックして,解答者の名前が表示されています(LMS 上の ID ではありません。SCORM の機能を利用して取得するもので,多くは,漢字名だと思います)。

 

乱数を利用するコンテンツを取りあげます。以下のような問題文です。

乱数の組み合わせは ,以下の二組です。

    {rand[0], rand[1], rand[2]} = {60, 1, 60} あるいは {120, 2, 120}

NLmark の表示です。rand 列に,使用された乱数の組が表示されています。回答履歴を検索するタイプの解答ですが,履歴の検索は rand 列と Student Answer 列を合わせて検索します。そのため解答が同じ値でも乱数の組が異なれば別な解答とみなされます。status の項目にある MyOwnTans を表示させると,そこにはそれぞれの場合の正解が表示されています。

 

続いて,他の機能を紹介します。中央上方にある「Snap」ボタンは 問題文を表示するためのものです。表示させるには 先に SCORM ファイルをアップロードする必要があります。アップロードは,左下方の「SCORM File」でコンテンツファイル選んで「Submit」ボタンをクリックして送信します。送信後は,「Snap」ボタンを押すと問題文が表示されます(最初開いたときは表示が乱れます。大小ボタンをクリックすると修正されます)。

 

「common」 ボタンはすべての解答の処理に共通する設定が表示されます。乱数の内容や,採点処理時に利用される共通するコード(Common Src)などが表示されます。このコンテンツでは Common Src は空白です。

 

「Operation」ボタンは,各設問で解答を処理する maxima や python のコードを表示します。

 

「Edit Tree」ボタンをクリックすると,Treeを編集する画面に切り替わります。ここでは,コンテンツの登録削除や表示順番の変更,Groupの移動が可能です。削除は「Delete」ボタンで,順位やグループの変更はドラッグで行います。コンテンツの表示順が変更できるのは,この画面においてだけです。Treeの更新は「Update」ボタンをクリックします。「Update」や「Cancel」等をクリックすると,Tree編集画面から元の画面に戻ります。

 

「Download」「Upload」ボタンはそれぞれ採点データを保存するとき,過去の採点結果を読み込むときに利用します。下方の「Download」ボタンをクリックすると,(先にアラートが表示されるかも知れません)下図のように,採点結果を XML,CSV ファイルとしたファイルへのリンクが表示されます(ダウンロードする場合にはクリックではなく右クリックをする)。この機能は,翌年コンテンツを一部修正して利用する場合などに採点結果を再利用したり,外部プログラム等で採点をして結果を書き戻したりする場合を想定しています。

 

下図が,採点内容が記録された XML ファイルの先頭の部分です。最初にコンテンツの commonSrc や operation 等の全般的な情報があります。そのあとに,node タグで囲まれていますが,解答の種類ごとの,採点に関するすべての情報があります。

 

採点の XML ファイルを取り込む場合は「Upload」ボタンをクリックします。過去の採点を取り込むだけではなく,いったんダウンロードした XML ファイルを外部で処理して書き戻すような利用方法を想定しています。CSV ファイルは採点の再利用の際には使用できません。

 

 次に,バックアップに関することですが,データーベースのバックアップ機能を付けました。現在の採点状況のスナップをとるイメージです。それぞれの先生に関するデータのすべてを保存します。下図の左下に「Back up」と「Restore」ボタンがあります。「Back up」ボタンを押すことで,現在のデーターベースの自分に関わるすべてを SQL ファイルとして保存します。

 

リストアすると,データベースの内容がスナップをとった時点まで戻ります。スナップ後の採点は失われてしまいます(他の先生のデーターベースへの影響はありません)。そのため当面緊急事態用となっています。宿題の採点が終了したときにでも,とりあえず現状を保存するような使い方を想定しています。今回,新しくバックアップの内容を確認するツール NLsheetView を作成しました。この先,データベースの容量が大きくなりすぎた場合には,いったんゼロにしてもらうことをお願いするかもしれません。

 
 

 

NLsheet は,採点用のツール(Webアプリ)です。紙の解答用紙を一枚ずつめくって採点していく様子を真似てデザインしています。解答欄どおしの関連も見る必要があると考えて作成しました。NLmark と同じように,左側のツリーに,コンテンツのタイトルが表示されています。このアプリが利用するデータベースは NLmark と同じです。そのため NLmark で記入した採点やコメントは,このアプリにも現れます。

 

(1) コンテンツの選択

左側のツリーの枝をクリックして採点するコンテンツ選びます。下記のキャプチャー画面では,クリックした際に,SCORM コンテンツをアップロードしていないというメッセージが表示されています。問題文表示用にSCORMコンテンツそれ自身を利用するのですが,SCORMファイルを送っていない場合はこのメッセージが表示されます。

 

SCORM コンテンツがアップロードされていないので,下記のキャプチャー画面にあるように,解答欄だけが表示されます。

 

左下方にある「Choose」ボタンをクリックして,SCORM コンテンツを選びアップロードします。アップロード後には,下記のように問題文が表示されます。異なる ID のコンテンツをアップロードした場合にはアラートが表示されます。

 

ツリーの下に,コンテンツに関する設定が並んでいます。それらの機能は NLmark と同じですので説明を省略します。

 

(3) 採点

 コンテンツ「加速度の問題Python」を例にして,以下解説します。このコンテンツは乱数値を用いた問いです。ツリーの枝をクリックして対象のコンテンツを切り替えます。中央に問題文と解答欄が表示されています。問題文は乱数値の所がすでに置き換えられたもの(受講生が実際に見る問題文)となっています。解答欄をクリックすると,右方に,その問いに対する受講生の回答や採点処理の内容が表示されます。このエリアで手動の点数(Manual Score)やコメント(Reason),学生には掲示しないメモ書き(Annotate)を設定します。下図では,自動採点なので Score が記入されていますが,Manual Score は空欄です。
 真ん中上方には,ページめくりや表示の縦サイズを変更するドロップダウンリスト,合計点を表示する「Total Score」などがあります。

 

ページめくりをクリックすると,表示が切り替わって受講生それぞれの回答内容が確認できます。「Stu.」は受講生の LMS 上の ID です。「Real」は LMS に登録されている受講生の名称(漢字名)などが表示されます。この「Real」は NLtbulate で編集可能です。「Real」はドロップダウンリストとなっていて,回答した受講生の名前がリストに表示されます(下図)。名前の所をクリックすると,該当の受講生の回答に切り替わります。

 

受講生が複数回,回答を送信したならば,ドロップダウンリスト「History」に,履歴が表示されます。これをクリックすると,最終回答以外のものを確認できます。

 

「Size」は問題文のエリアの縦の長さを変更するドロップダウンリストです。

 

Cmn ボタンを押すと,コンテンツに共通の乱数値などの設定が表示されます。各問いに共通の Operation コードは,特に記述していないので,このコンテンツでは空欄です。

 

not repl. ボタンを押すと,乱数値で置き換える前の問題文が表示されます。rand[0] 等の部分が乱数値で置き換えられるところです。ページめくりで他の受講者の回答に切り替えるなどすると表示は元に戻ります。

 

 解答欄をクリックすると,右方のエリアに解答内容等が表示されます。表示される内容が多いのですが,ここで記入可能なものは,下方にある「Manual Score」,「Reason」,「Annotate」の三つです。他は変更できません。

 欄は,上から順に,

  • Question #   : 問いの順位
  • Operation  : 回答や正解に対する操作とメッセージ作成等のコード
  • Marking Server : 採点を実際に実行するサーバー
  • AnswerTest   : 問いの種類
  • Search     : 解答履歴を検索して採点するかどうか。自動的に決定されます。
  • Allotment   : 配点
  • ATOpt      : 採点オプション
  • Teacher Answer : 先生の用意した正解
  • Student Answer : 学生の解答
  • Score      : 自動採点の点数
  • Status      : 採点に関するいくつかの情報(アコーディオン格納)。operation に記述することで,新たに項目を追加することができます。
  • Manual Score  : 手動での点数記入欄。自動採点を上書きします。
  • Reason      : 解答内容に対するコメント記入欄。受講生に返す。
  • Annotate     : 解答に対する注記。受講者には返さない。

自動採点なのでとくにやることはないのですが,Manual Score に点数を記入すると,Score の点数を上書きします。部分点などを付ける場合などに利用してください。受講生にメッセージを返したいときには Reason にコメントを記入します。Reason に一度記入したコメントは Reason のドロップダウンリストに現れます。同じコメントを記入する場合にはリストをクリックして選択します。Annotate は採点に関するメモ書きです。採点の根拠など受講生に見せられない内容を書き留める場合に利用してください。
 

「Operation」ボタンをクリックすると,受講生の回答(sans)や正解(tans)を処理したコードが表示されます。下図は Python のコードです。乱数を用いて表された正解(rand[2]/rand[0]*rand[1])に,特定の乱数値の組が代入されて,120/120*2 と tans に新たな値が用意されています。このコードで再定義された tans,sans が,この後に続く自動採点のプロセスに送られます。また,この再定義された tans が status の項目の「myOwnTAns」の値となります。

 

「Status」はプログラミング的な処理によって抽出した情報を表示するものですが,クリックするとアコーディオンが開いてその内容が現れます。myOwnTAns は先にも書きましたが,Operation 後の tans の値を示しています。myOperation は先に説明した Operation のコードです。これは先ほどのボタンを押した際に表示されるものと同じ内容です。この他 errors (自動採点などで生じたエラー)などがあります。また Operation に記述することで,新しく項目を追加することも可能です。チェックボックスをチェックするとその項目が表に現れます。

 

ページをめくって別な受講者の解答を表示させます。問題文中の乱数値の部分が変化しています。status にある myOwnTAns にチェックをいれて表示させています。この乱数値の組の場合,正解が 1 と表示されています。問題文に乱数値が含まれている場合には,ページをめくるごとに問題文を再描画しますので,少し表示に時間がかかります。

 

Operation ボタンを押して,処理コードを表示させてみます。rand[0] 等の値に,先ほどとは別の値が代入されていることが分かります。tans の値も 60/60*1 が設定されています。

 

後は,各学生に対して採点を繰り返します。各学生の答案を表示する際に,そのつどデーターベースにアクセスして,その解答内容がすでに採点済みであるかどうか検索します。そのため手動採点などの場合,同じ解答であれば自動的に同じ点数となります。同じような採点を繰り返す必要はありません。また解答が同じであれば,同じコメントが自動的に付加されます。

 

 

NLtabulate は集計用のアプリです。下図はその初期画面です。課題の点数を集計したり,進捗状況を確認するときに使用します。

 

Tree で,集計するコンテンツにチェックを入れて,左下方の「Load Data」ボタンをクリックすると,右側の表に点数などが読み込まれます。「Number of not marked」は採点されていない問いの総数です。「動画で回答する例」を4人分すべて採点していないので,採点していない問いの数が 4 となっています。ここがゼロ以外はまずいです(ゼロ以外なら急いで採点をしなければ)。User は LMS 上の ID です。User 名が重なっても LMS サーバーが異なるならば(大学が異なる場合などでしょうか)ユーザーは区別されます。

 

User の LMS サイトと kanaike サーバー上での ID を表示させるには,上方にあるチェックボックスをチェックします。

 

右下方の「Download」ボタンをクリックすると,集計結果を記録したテキストファイルへのリンクが表示されます。中身は CSV ファイルです。右クリックしてダウンロードしてください。

 

「Real Name」の欄は LMS からもらう漢字名等の名前が記入されますが,行をクリックして選択し直接書き込むこともできます。書き込んだら「Accept」ボタンを押して,その後「Update real name」ボタンをクリックして確定します。

 

また,「Real Name」の欄はCSVファイルから一括して取り込むことが可能です。その際は「Upload real name」ボタンを押して表示される下図のような窓で,読み込むファイルを指定します。

 

読み込む漢字名のファイルは下記のような形式です。ヘッダーは無しで,LMS 上のユーザー名(User欄に書かれている名前),LMSサーバー(LMS Server 欄に書かれている名前),漢字名を横に並べたものです。
fig31
 
 

 

NLportal はコンテンツを蓄え共有するサイトです。このアプリでは,SCORM コンテンツをアップロードして蓄え,それらのコンテンツの内容を確認できます。またコンテンツのダウンロードも可能な問題バンクです。NLportal のデータは NLmark や NLsheet と連動していません。つまり,NLsheet でSCORM コンテンツをアップロードしても,NLportal には表示されません。下図はまだ誰もコンテンツをアップロードしていない状態です。

 

利用方法を順に記述します。最初は,SCORMコンテンツのアップロードです。左下方の「add new SCORM file」をクリックして送信するファイルを選択し,「Submit」ボタンをクリックして送信します。送信に成功すると,ツリーに自分のフォルダーが現れます。そのフォルダー内の該当の枝をクリックすると,下図のように,問題文とコンテンツに関するいくつかの情報が表示されます。SCORM コンテンツは Ver. 4.11 までは受け付けるのですが,それ以前のバージョンは,いったん ver. 4.11 ファイルに変換してからアップロードしてください。Tree において,コンテンツのフォルダー間の移動や,表示順の変更が可能です。この操作方法は “NLsheet”, “NLmark” と共通です。

 

右側の欄の説明をします。title は SCORM コンテンツのタイトルで,変更できません。Group は講義名称等を付けることを想定していて,これは Tree 上でフォルダーとして表示されるものです。空欄であれば,“default”となります。すでに作られた名称があれば,ドロップダウンリストに表示され,そこからクリックして選択することができます。Copyright は著作権に関して記入します。例えば,”creative commmon 3.0″ や,由来する本の名称を記述することを想定してます。一度記入された内容はドロップダウンリストに表れます。Summary はコンテンツの概要を記述します。以上の記述の変更は「Update」ボタンをクリックすることで確定されます。Additional File list は,アップロードして追加する付加的なファイルで,情報がばらばらにならないように一緒に保存したいファイルを登録してください。すぐ下にある 「Choose」 でファイルを指定して,Submit すると「Additional File list」に表示されます。

 

コンテンツをダウンロードして取得するには「Download」ボタンをクリックします。下図の様に,SCORM ファイルへのリンク先が表示されます。ファイル名の最後に “_all” と付いているものは,付加的なファイルを一緒に含んだものへのリンクです。一緒に圧縮されていますので,いったんファイルを解凍して,SCORM コンテンツを取り出してください。

 

「Update」ボタンはコンテンツの所有者でなければ表示されません。付加的なファイルの追加も所有者でなければできません。下図は,自分以外の作題者がアップロードしたファイルを表示した場合です。「Update」ボタンは表示されていませんが,ダウンロードは可能です。

 

ダウンロードしたファイルは所有者が書き換えられて,ダウンロードした人がコンテンツの所有者になります。コンテンツの ID も新しいものになります。

 

 

NLsheetView はバックアップしたファイルを閲覧するために用意したツールです。その内容は NLsheet と同じものですが,使用しているデーターベースが異なります。そのため NLsheetView でデータに処理を加えても, NLsheet には反映されません。逆もしかりです。いずれは,データベースが大きくなって,利用者のみなさんに,いったんデータベースを空にしてもらうときが来るかと思って用意しました。

 

NLsheet か NLmark でバックアップした sql ファイルを読み込みます。Restore ボタンをクリックすると読み込むファイルを選択するダイアログが開きます。

 

ファイルを指定して読み込むと,バックアップされた時点の内容が復元されます。

 

後の操作は,NLsheet と同じです。内容を修正することもできます。修正したらもう一度バックアップを取り直してください。