e-Learning におけるソフトウェア開発をしています。
(20240209追記)下記の記事では,もう動かなくなっているサンプルがあります。
- 数式を用いた解答と自動採点が可能なシステムの構築
- 自由記述問題に対応した SCORM 準拠の e-Learning システムの構築
- 初等的な物理のコンテンツの作成
- 自動採点と手動採点を兼ねるコンテンツの作成
- 動画によって回答するコンテンツの作成
数式を用いた解答と自動採点が可能なシステムの構築
例えば,下記のような物理の問題を考えます(すでに答えられていますが . . . )。
このような数式での解答を要求する問題に対して,数式で答えて数式として採点する学習コンテンツを開発しています。
問題となるのは解答の多様性です。正解を “v - g * t
” とするとして,解答には,項の順番が入れ替わったもの “- g * t + v
“,スペースがないもの “v-g*t
” など様々なパターンが考えられます。数式としてみた場合に,これらの解答はいずれも正解ですから,このような解答の多様性を吸収して,いずれも同じものと判断する機能が必要です。こういった機能は数式処理ソフトといわれるもので実現されていて,我々のシステムも採点時にMaximaという数式処理ソフトが動いています。
コンテンツをひとつずつ手作りしていては,効率が悪いですし,コンテンツ作成者に,例えば,Javascript等の知識が必要となってしまいます。そこで,特別な知識を必要とせずコンテンツが作成可能な,オーサリングツールをあわせて開発しています。
オーサリングツールの静止画キャプチャー
オーサリングツールに関心のある方はご連絡ください。
作成したコンテンツはSCORMという規格に対応しています。moodleなどSCORM対応のLMSがあれば,すぐに利用できます。
コンテンツの仕上がりは紙に書かれた問題をイメージしています。e-Learningのコンテンツでは問題文と解答欄の位置が離れていたりして,直感的に解答方法が把握しづらい場合があります。それを避けるために,これまでの紙に印刷された問題のイメージを再現するようにしました。
以前は,flashを用いてコンテンツを作成していたのですが,最近のスマートフォンの普及を考慮して,HTMLとJavascriptでコンテンツを作成するよう変更しました。そのため,特にパソコン教室でなくても,講義中にコンテンツを利用可能です。下の写真はipodで利用しているところです。
ただし,windowsでIEを使用する場合には,他のサーバーと通信するところで flash を利用しています(20140124 : 採点サーバーを https としたことにより,IE においてもクロスドメイン通信が可能となって Flash が必要なくなりました)。
数式の表示には,MathJax を利用しています。MathJax を利用すると,Web上で下記のような数式の表示が可能です(式を右クリックすると色々と設定ができます)。
\( \displaystyle x = \frac{-b \pm \sqrt{b^2 – 4 \, a \, c}}{2 \, a}\)
問題文中で数式を書く場合には,TeXの書き方に従います。しかし,コンテンツに解答する場合には,TeX のソースではなくて,一般的な四則演算の式で記入します。つまり”1/2″と入力するだけで,解答は自動的にTeXのソース “\frac{1}{2}” に変換されて,解答欄には\(\displaystyle \frac{1}{2}\)と表示されるようになっています。
コンテンツを利用する場合は,主に3カ所,つまり,利用者のパソコン(あるいはモバイル機器),コンテンツがある大学のサーバー,採点をするサーバーの3カ所が連動して動作します。下図に概略図を書いてみました。
コンテンツのひな形を作ること,オーサリングツールを作ること,採点を担当するサーバーを構築することが主な仕事です。
関連資料
数式自動採点コンテンツ開発の経緯
開発のきっかけ
最初は自分の講義の中で,e-Learning を利用したことがきっかけでした。受講生に課題を課す際に,択一問題や数値で答える問題は出題できるのですが,数式をもちいた解答ができません。
物理の問題の多くは数式による解答です。これでは,教材を数値で答える問題に書きあらためなければなりません。選択肢のタイプの問題はテストには利用できても,演習には不向きです。他にも,問題文と解答欄が離れていて,どこに答えたら良いのか直感的に分かりづらいのも気になりました。このような不便さは多くのLMS(learning management system)に共通でした。
それで開発を始めたのですが,数式の解答を数式として採点することは,数式処理ソフトをもちいれば可能です。数式処理ソフトを使用すれば,文字を含んだ数式の計算ができます。それ故,解答に多少の表現の違いがあったとしても,それを正解と比較することは可能です。それまでにMathematicaという数式処理ソフト を利用したことがあったので,採点は可能だと予想しました。調べてみると,すでにMathematica や他の数式処理ソフト Maple を用いた e-learning のコースがありました。ただ,これらを利用するにはお金が必要です。それ故,今現在でも,このような有料のソフトを利用した,e-learning コンテンツを自分の目で見たことがありません。
無料で利用できる数式処理ソフトとして Maxima があります。本などの資料もそろっているようでしたので,Maxima を利用してソフトを書いてみることにしました。
まず,問題文を何を用いて表現するか考えました。最近の知識が無くて以前にHTMLを書いた経験からでしたが,問題文をHTMLで書くと,ブラウザの種類や,ウインドウの大きさに表示が影響されるのではないかと予想しました。安定して表示させるには問題文にPDFを用いた方が良いと考えて,PDFを利用するなら,問題本体(コンテンツ)を flash を使おうと思いました。そこで flashの開発環境としてflex Builder を使用して,コンテンツを試作してみることにしました。 実際は,HTMLで問題文を書いても大きな問題はありませんし,この後PDFも利用しなかったのですが,flashは,自由度が高く,開発環境としては優れています。現在はバージョンが上がって,製品名も flash builder と変わっています。また大学等を対象とした無料のライセンスがあります。
コンテンツの試作
まず最初に,問題文をどのように表示するか検討しました。PDFを利用することは意外に難しく,さらにその上に解答欄を配置することは困難でした。そこで,問題文には当面GIF画像を用いることにしました。flashであれば,GIFの問題文の上に解答欄を配置することは容易です。配置した解答欄にクリック属性を付けておいて,クリック時に解答記入用のインターフェースをポップアップ表示するという流れで考えました。要するに,紙に印刷された問題を再現するイメージで,そこにインタラクティブな要素を加えました。
解答は Maxima に分かるような形式であれば良いのですが,これは特殊な入力を要求しません。四則演算は + – * / を利用します。関数も sin(x), tan(x) などと記述します。下付は少し特殊で x[1] と記述しますが,他はとくに不自然なところはありません。ただし, \( \frac{1}{2} g \, t^2\) を正解としたときに,画面の表示が 1/2*g*t^2 では,何を解答したのか,回答者本人に分かりづらいです。回答者が記入する文字列は 1/2*g*t^2であっても,解答欄にはTeXで組み版された\( \frac{1}{2} g \, t^2\) と表示したいところです。Maxiam にはTeXのソースに変換する関数 tex() があります。回答者が入力した数式を Maxima に渡して, tex() で変換し,その後 eqn2gif (TeXのソースからGIFの数式画像を作成するツール)を利用して,数式のGIF画像を作成するようにしました。
flash コンテンツは,それぞれの回答者のパソコンで動作しますが,Maxima や eqn2gif は別にサーバーを用意して,そちらで動かします。flashコンテンツから送られてきた解答をサーバー側で処理して,作成した数式画像のURLを回答者に返すようにサーバー側の準備をしました(flash と Maxima との橋渡しは php を利用します)。
解答の採点はMaxima をもちいて数式比較をします。数式処理ソフトなので,解答と正解を引き算してゼロとなれば正解です。引き算してゼロとならなかった場合には,念のために、式の中の変数に数値を代入して,解答と正解の値を比べるルーチンも加えました。これらの評価もサーバー側の処理です。
だいたい,この辺でひとまず形になりました。
コンテンツの改良
問題文や回答がGIFの画像であるのは非常に不便です。ビットマップの画像は,伸縮するとかすれてしまう場合があって,そのためコンテンツのサイズを最初から厳重にデザインしていく必要がありました。加えて,画面表示では問題ないのですが,プリンターで印刷してみるとクオリティーの低さが目立ちます。そこでまず,画像のベクター化を図りました。問題文も数式も TeX を用いて作成されているので,最初は dvi ファイルです。これをいったんPDFに変換して,最後に swftools というソフトでSWFのベクター画像に変換します。これによって,問題文のサイズやレイアウトの取り扱いが,自由になりました。
次に,回答者の数式から,TeXのソースを作成する部分を改良しました。これまで Maxima の tex() を利用して TeX ソースに変換していたのですが, Maxima に数式を渡してしまうと, Maxima は数式を自身の持っているオーダーで並べ替えてしまいます。例えば, “速度 x 時間” の意で ” v * t ” と回答しても, Maxima はこれを ” t * v ” と並び替えて,結局得られる数式は ” \( t \, v\) ” となってしまいます。これでは,数式が何を意味するのかわからないし,記入した順番を変更すると,回答者が回答を確認する際にも戸惑います。そのため,順番を入れ替えることなく,数式を TeX のソースに変換するコードを用意しました(php をもちいて作成)。
もう一つは,オーサリングツールを用意するための準備として,各問題固有の設定を,メインのプログラムから分離して,別のファイルとしました。プログラムが起動するときに(flashが読み込まれるときに),この設定ファイルを読み込んで,その内容に合わせてコンテンツ自身が構築されるようにしました。設定ファイルの中には,質問が何問あるか,それぞれの問題の正解や評価方法,問題文の画像ファイルの名前,採点を担当するサーバーのURLなどを記入します。このように,各コンテンツ固有の設定を分離しておけば,コンテンツを作成するオーサリングツールの形が見えてきます。これまで,コンテンツは flex builder で,それぞれ作成していましたが,オーサリングツールをWEBアプリとして用意すれば,とくに flex builder をインストールしていなくても,コンテンツの作成が可能となります。
この後,コンテンツのメインとなる部分のデザインを考えました。問題文のサイズ,解答欄をどこに配置するか,いうなれば,コンテンツのひな形のデザインを考えてみました(最終的には,後で述べるscorm規格に対応したときに,案が固まりました)。下記の画面キャプチャーは解答欄の表示非表示を切り替えるコンテンツです(こうすることで,問題文の矩形領域を固定することができて,かつ画面を有効に利用できるかと考えましたが,最終的にはこのアイディアは破棄)。
他には,数式で採点する機能を利用する例として,因数分解の問題を自動的に作成するコンテンツ等を作成しました。因数分解の採点は物理の採点とは異なります。正解と解答を恒等式かどうか比較するのではなく,式の変形が最後までなされているか,評価しなければなりません。そのため新しく判定のプログラムを書く必要がありました。この後,高校数学への応用がひとつの目標となりました。
LMSとの融合
単独で利用するアプリを作成しても,あまり意味がありません。LMS上で利用可能とする必要があって,例えば成績などの学習履歴はLMSの機能を利用して記録するなど,LMSと連動して動くようにしたいと考えていました。LMSとどのように融合させるか,方法はいくつかあると思いますが,私たちはSCORMという e-Learning の規格に対応することで,LMSとの融合を図りました。こうすれば,moodleやwebclass,Black Board など,scorm規格に対応した,どのLMS上でも利用できます。
これにあたって,まずひな形となるコンテンツをシンプルなものに書き換えました。紙一枚のプリントをイメージして,解答欄は自由に配置可能と設定しました。scorm用のjavascript(成績などの通信用のAPI)も中に組み込みました。
各コンテンツに必要なものは,問題文と解答欄の情報の二つだけです。これらの作成をターゲットとするオーサリングツールを準備しました。
オーサリングツール自体もwebアプリです。問題文は TeX で書いて,解答欄はドラッグアンドドロップで配置します。ボタンクリックで,scorm対応のコンテンツが作成されます。また,このscormコンテンツを再び読み込んで再編集することも可能です。
この後,実際に講義でコンテンツを使用することになりました。使用するにあたっては,サーバー上で動くphpの処理能力を上げるために,コードの書きかえが必要となりました。50人程度の講義で実際に使用してみると,cpu使用率が100%となるなど,かなりの負荷がサーバーにかかりましたが,ハングアップすることもなく,無事終了しました。この後,実際に使用しながら,ひな形コンテンツに修正を加えていきました。
数学の計算問題に対応したいと考えていたのですが,stackというプロジェクトが,これに対応していることを知りました。現在私たちのコンテンツの採点部分は,この stack のコードを利用しています。
関連ページ
この後は,flash builder 4.5 への対応や,選択肢の問題の改良などがありましたが,現在のところ,flashでのコンテンツの開発は停止しています。
HTMLとJavascriptへの対応
iPadは非常に魅力的なデバイスだと思っていたのですが,iOSはflashをなかなかサポートしなかったので,flashでの開発がおおかた終了した頃から,同じようなコンテンツをHTMLとJavascriptで作成することを試みました。
古いHTMLの知識しかなかったものですから,flashと同じような表現が可能かどうか調査するところから始めました。画面上に表示されるオブジェクトの上に,他のオブジェクトを重ねて表示できるのかどうか,そのような基本的なところからの調査でした。
まず,問題文です。flash の画像が使用できないことと,共通して利用できるベクター画像の形式がSVGぐらいであることから,日本語は通常のフォントで,数式は他のもので書くことになりました。数式は,jsmathというプロジェクトを利用しました(現在はmathjaxを利用しています)。数式以外の文章の部分はHTMLで記述しますが,数式の部分はJsMathで TeXでの記述となって,HTMLとTeXが混在することになりました。また,表示にフォントを利用するので,画面上の情報量は増えました。
問題文の上に,解答欄を配置することは問題文を div というタグに入れておけば,他の div 要素を重ねて書くことは可能でした。これで問題文の上に解答欄を配置できます。
解答欄に関しては,クリックして回答用のインターフェイスが開くところは簡単に実現できますが,iPadなどでは,マウスが利用できません。以前のように,問題文上に入力用の窓を表示してしまうと,下の問題文が隠されてしまいます。ドラッグして移動させないと,問題文が見づらくなります。モバイルデバイスではドラッグという動作はあまり一般的ではないので,入力用の窓は問題文の左側に表示するように変更しました。問題文が右にスクロールして,空いた左の領域に解答用のインターフェースが現れます。
解答欄の上下左右の真ん中に数式を表示することが,以外に難しかった。これはHTML5に対応した場合に,実現できるかどうか今も分かりません。現在は,特殊なヘッダーを書いて,切りぬけています。
サーバーとの通信にjQueryを利用しています。HTMLでは元々,form等を利用してメッセージを送信するときには,画面表示が切り替わって,別のURLに移動します。これでは,コンテンツとして利用しづらい。採点をするたびに他のページに移動しては問題として不自然です。flashを利用しているときには,このような画面遷移なしに通信が可能で,そのせいか form のこのような振る舞いを忘れていたぐらいでした。ただ,現在ではJavascriptでも,jQuery などのツールをもちいて,画面遷移なしに通信が実現されていました。このプロジェクトでは,jQuery を通信の他にも至る所で利用しています。
関連ページ : ファイルをアップロード (jQuery.upload)
webでの通信は非同期通信が基本です。webでページを閲覧するときに,画像の表示(ダウンロード)がまだ終了していないときでも,ボタンやリンクなどの要素がすでに表示されていれば,その要素をクリック可能ですが,これは非同期通信の動作です。ただし,繰り返し通信をしようとして,プログラムのループの中に非同期通信を書いてしまうと,先の通信が終了する前に次の通信が始まるなど,動作が複雑になりがちです。同期通信にするという方法も考えられますが,通信中に画面がフリーズしますし,別なやっかいごとも生じます。そのため,通信は一回の非同期通信ですむようにプログラムを変更しました。通信に利用するデータはXMLで記述してまとめて一度に送ります。受け取りもXMLでまとめて受け取ります。XMLとは下記のように,タグをもちいてデータを表記するものです。XMLには,その取り扱いに便利な多くのツールがあります。
関連ページ : XMLを利用する
実際にコンテンツを利用する場合には,コンテンツのあるサイトと,採点を担当するサーバーのサイトは異なるものとなります。こういった場合の通信はクロスドメインリクエストと言われますが,セキュリティー上の理由から制約があります。この点はブラウザによって対応が異なり,多くのブラウザではjQueryを用いた通信と,返信のヘッダーを適切なものに設定することで対応できました。ただ,windowsのインターネットエクスプローラー(IE)だけは,対応が難しく,別な方法をとることになりました。コンテンツが,ブラウザをIEだと判断した場合には,通信の機能を埋め込んだflashを読み込みます。このflashの機能を利用して,クロスドメイン通信を実現しています(IE ver.10 ではクロスドメイン通信に対応する予定だそうです)。flashを読み込んだ場合,コンテンツの右下のところに Powerd By Flash の文字が表示されます。
関連ページ : クロスドメインリクエスト
数式の表示には,JsMathというJavascriptを利用する予定でした。これはサイズが6MB程度あるので,それぞれのコンテンツに含めるのはあまりにも無駄が多すぎます。できれば採点サーバーに置いて,そこへアクセスするように考えていました。しかしこの場合,ブラウザがIEだと,コンテンツが置いてあるサーバーが https であれば,アクセスするサーバーも https である場合のみ通信可能となるようです。自前のサーバーを https へと変更するのは色々と手続きを踏まないといけません。そのため,JsMathの使用をあきらめて,MathJaxを利用するように変更しました。MathJaxは自由に利用して良いサイトがあります。そのサイトには https 版も用意されています。
関連ページ MathJaxをローカルにインストール
ただ,これもまたIE においてなのですが,Javascript を読み込むとキャッシュされます。再度 MathJax で処理をしようとしたときに,IE ではなぜか数式への変換が上手くいきません。キャッシュをクリアすると上手くいきます。そのため, キャッシュされないように工夫が必要となりました。これに対しては,存在しないJavascript ファイルを読み込ませて,わざとエラーを生じさせることで解決しました。偶然見つけたのですが,このようにしておくとキャッシュされないようです。
この辺で,だいたいflashで実現していた機能が再現できたのですが,flashでは必要なくて,Javascript を利用した場合にのみ必要となる機能として,暗号化があります。正解は,コンテンツ自身に含めておきたいと考えています。そうすると採点の際には,解答と,正解を一緒に採点サーバーに送って評価します。flashでは通信内容を見ることができないのですが,Javascript を用いた通信では容易に見ることが可能です。そのため,正解を暗号化して,コンテンツに含めておく方が安全です。これにはRSA暗号を利用することにしました。オーサリングツールでコンテンツを作成するときに,正解を暗号化したうえで作成します。評価の際には,これを復号化して利用するようにしました。
関連ページ
この辺が,現在の開発状況です。オーサリングツールも用意しました(利用チュートリアル)。図は jpeg 画像を利用します。svg のベクター画像への対応が各ブラウザで安定していません。もう少し様子を見る必要がありそうです。
すでに実際の講義で利用していて,何とか実用レベルにはあると考えています。iPad や iPod ,アンドロイドの機器で検証しながら,細かな修正を加えている所です。
追記(2013/03/27)
いくつかの評価項目を並べて、採点するという機能を組み込みました。下記の例では、
(1)ある座標を通るか。
(2) \(x\) の2次式であるか。
この2項目で評価する問があります。両方とも満足させた場合に正解となります。 それぞれの評価項目の正否によって、メッセージを返すことも可能です。
また、先の話に含まれていますが、答えを採点する前にmaximaで処理することが可能となりました。例えば、座標(1,2)を通る式 \(y=f(x)\) を答えなさいという場合は、正解がひとつに定まりませんが、解答の式に、\(x=1\) を代入して \(y\) の値を評価可能です。
コンテンツの例(http://zairyo.susi.oita-u.ac.jp/wordpress_extra/simple_question_recursion/)。
オーサリングツールも対応しました。
評価は maxima で記述しなければなりません。このような機能は もともと stack には含まれています。ただ今回はうまくその機能を利用できなかったので、独自のコードとなりました。
追記(2013/05/10)
Internet Explorer が ver. 10 になって,仕様が変更されました。今まで利用していた,条件付コメントが利用できなくなったことが大きな変更です(記事を書きました)。このページからリンクしているコンテンツのサンプルも動かなくなっています。サンプルを修正するのにはしばらくかかります。
追記(2013/06/26)
複数の項目で評価する採点方法に関して,いずれかの条件を満足すれば正解とみなす採点方法(論理和)を組み込みました。
下記が,出来上がったコンテンツです。2次方程式の解のうち,どちらかを答えると正解となります。\(x = -1\)であるか,\(x = -2\)であるか,二つの判断をして,そのどちらかが成立していれば正解と判断します。
今回,解答と正解の両方を maxima で処理できるようにしました。これは,ある条件(文脈)のもとでの評価に対応するためです。具体的に書きます。
例えば,上記の問題では sqrt(2*h/g) を正解としていますが,代数等価の採点ではこれまで,sqrt(2*h)/sqrt(g) と記述した場合を正解と採点することができませんでした。ただし, h と g の2変数に,正という仮定 ( h > 0, g >0 )をすると,等価と判断するようになります(maxima では assume(h>0,g>0) と記述)。この様な処理のために,解答と正解の両方を同じ文脈で評価できるよう,正解も maxima で処理できるように変更しました(コンテンツへのリンク。)。
この他に,解答欄の透明化を組み込みました。
追記(2013/07/14)
ルートの入った正解の場合の採点方法の続きです。下記のような問題を考えます。\(\sqrt{a^2 + b^2}\) という解答を正解と設定します。
代数的な処理で解答の正否を判定したいところですが,例えば \(a \, \sqrt{1 + \left( \frac{b}{a} \right)^2}\) を正解と判断できません。変数を正と仮定しても判断できません。下記に maxima で,変数を正と仮定した場合の式を取り扱う様子をあげます。
(%i3) assume(a > 0,b > 0)
(%o3) [a > 0,b > 0]
(%i4) f:a*sqrt(1+(b/a)^2)
(%o4) a*sqrt(b^2/a^2+1)
(%i5) g:sqrt(a^2+b^2)
(%o5) sqrt(b^2+a^2)
(%i6) f-g
(%o6) a*sqrt(b^2/a^2+1)-sqrt(b^2+a^2)
maxima はとくに式変形をしていないようです(特別な指示もしていないのですが)。この例は,無理して変数をルートの前に括りだしましたが,一般的にはルートの中を整理するために変数を括りだすことはありえます。ルートのある式は式変形において,一般的には最終的な形がありません。例えば有理化をするかしないか,あるいは何処までやるか等任意です。maxima で,最終的な形を指示することはできますが,そのように正解と判定する幅を狭く限定することは,解答者に要求すべきではないと思います。そこで,このプロジェクトの目的からすると邪道ですが,変数に値を代入して,数値として相対比較をすることで対処します(コンテンツへのリンク)。
上図がオーサリングツールで,採点方法を指定しているところです。どの変数に代入するか,何を代入するかなど,問題ごとに指定をしなければなりません。そのためミスが入り込む余地が大きいですが,今のところ方法がこれしかありません。
追記(2013/09/09)
mp3 等の音声や動画をコンテンツの問題文内に配置できるように修正しました。これまで,配置自体は可能でしたが,クリックなどのイベントを問題文のレイヤーに渡していませんでした。そのため,配置はしてもリンクは機能しませんし,メディアのコントロールもできませんでした。
コンテンツは階層構造となっていて,一番上の階層に解答欄のレイヤー(大きな div)があります。問題文はこれより下の層にあって,クリックなどのイベントは解答欄の層で伝播が止まっていました。問題文は iframe の中に配置してあります。これは MathJax をきちんと動かすために,そうすることが必要となっているからです。iframe の中であることから,イベントの伝播などは難しいと考えて,解答欄のために特別にレイヤーを用意せず(空中に配置する感じで心もとないですが)ドキュメントのルートに直接配置するように変更しました(多少座標がずれます。コンテンツのデザイン(外枠)を変更した際には,再びこのずれを修正する必要あり)。
メディア制御用のボタンの画像をデフォルトでコンテンツに含めています。他の変更点としては,コンテンツ内のフォルダー構成を変更して,問題文関連のファイルをひとつの フォルダー(htmlというフォルダー名)に収めるようにしました。利用できるメディアの最大サイズには注意が必要です(オーサリングでの upload の時とLMSサーバーの許容するサイズで引っかかるかもしれません)。
音声が利用できるということで,英語学習のコンテンツを何か考えてみたいところです。
下記は,動画を張り込んだコンテンツです。
ビデオは adobe media encoder で変換して,下記の出力形式を選びました。apple ipad 用となっているのですが,Windows の IE や Firefox,Mac の Safari,iOS のSafari,Android で再生できています。
追記(2014/01/07)
採点サーバーを https へ,変更しました。これにより,IE においてもクロスドメイン通信が可能となって,Flash が必要なくなりました。最新の FireFox で,http コンテンツと https コンテンツの混在がブロックされて表示できなかったのですが,これへの対応もできるようになりました。詳しくは下記の記事を参照ください。
関連記事(https への対応と Flash 利用の停止)
追記(2014/04/22)
複数の解答欄を連携させて採点する機能を,(多少)組み込みました。実験等の場合に,測定値から偏差を計算するような場合を想定した機能です。
記事を書きました。
関連記事(他の欄の入力を利用する)
SCORMファイルをストックするサイトを構築しました(使用方法の記事です)。コンテンツの画面キャプチャーを見る機能がメインです。画面の左側にそれぞれのユーザーのコンテンツのタイトルがツリー表示されます。ツリーの枝をクリックすると,そのコンテンツが右側の領域に表示されます。ツリーは,jQuery のプラグインで EasyUI のツリーを少し書き換えて利用しました。
下記は,問題をアップロードするときの画面です。付加的なファイルも一緒にストックできるようになっています。手書きの解答をスキャンしたファイルなどを一緒に保管できます。ツリー表示において,フォルダーの階層はひとつです。フォルダーの中にフォルダーは作成できません。下記の「classification」で例えば,「力学」などと講義名称を記入すると,「力学」というフォルダーがツリーに現れます。
ダウンロードのときの画面です。コンテンツは最新のバージョンとなります。
アップロードしたファイルはMySQL に,格納されます。下記は,phpmyadmin での表示です。各ユーザーごとに,このようなテーブルが作られます。
ダウンロードしたSCORMファイルに日本語名のファイルがあると,windows7などで解凍したときに,文字化けします。これに関しては,記事を書きました。
コンテンツを複数同時に開かせないように,改めました。詳しくはこちらをご覧ください。これにともなって,LMSへの解答や点数の書き込みが,最後の「送信」ボタンを押したタイミングで書き込まれるように変更しました。
自由記述問題に対応した SCORM 準拠の e-Learning システムの構築
数式を採点するコンテンツを作り始めた当初から,自然言語の採点を強く意識していました。
物理の問題でも,例えば「力」「摩擦」「自己誘導」など,日本語で解答する問題もあります。これに対しては,教科書の索引に表れる用語すべてを持つ選択肢を作成して対応しました。その際,「類似語サーバー」とでも呼んだらいいのか,二つの語句が同じ意味を持つという判定をしてくれるサーバーでもあればと思ったのですが,そのような道具はありません。採点に用いるとなると,ほぼ100%判定間違いがないことが要求されます。人の誤り(採点ミス)は仕方がありませんが,コンピューターの採点ミスは成績を評価する上では許されません。
数式で答えるコンテンツに,音声を利用したいという要望があって,コンテンツの雛形に修正を加えました。HTMLで書かれたものですから,音声や動画を利用することは簡単です。冗談で,外見だけ英語の問題をひとつ作成してみたのですが,IEで表示したその問題に何かの調和を感じて,英語に関するコンテンツを作成してみたいと考えるようになりました。
自由に記述された自然言語は,もちろん自動採点はできません。理由は言うまでもなく,一般的に正解とみなせる答えが多種多様あって,そのすべてをまえもって予測することが難しいからです。つまり自由記述は人間のみに採点可能です。ただ,入試で英作文などを採点する場合など,自然言語を用いても意外に解答の範囲が限定されているという印象を受けることがあります。しばしば,同じ解答に同じ点数を付ける作業を繰り返します。そうであれば,その採点の履歴をデーターベースに記録して,次に同じ解答が来たときに自動的に採点するようなシステムを作ってみても良いのではないかと考えました。
上記のシステムは,当然即時採点ではなく,後採点となります。採点の履歴が蓄えられていくにつれて,自動的に採点される範囲が拡大します。数式で答えるコンテンツに関して,コンテンツを共有するサイトを構築しているのですが,この自然言語を相手にするコンテンツでは,問題だけでなく採点内容も共有することが考えられます。
以下,作成したアプリの内容を解説します。
まずはオーサリングツールです。オーサリングツールは数式を対象としたものとそれほど大きな変更はありません。もっぱらテキストを扱いますが,数式,化学式も扱えます。ただし,数式の自動採点の機能は省いています。問題文中で音声や動画を扱える点は変更ありません。
下図は問の設定画面です。”Filter” と呼んでいるのですが,扱える問題の種類が下図のドロップダウンリストに表示されています。”none” が通常のテキストによる解答を対象としたものです。音声が扱えるということで,ディクテーション(”Dictation”)を用意しました。
解答されたテキストに関して,いくらか処理をします。前後の空白を削除,英数字を半角に変換するなどの処理を用意しました。下図ではいくつかの処理が選択されています。正解は一応設定しますが,人が採点するため正解のもつ意味は薄れています。
次に,採点用のツールです。採点用のツールには2種類あります。ひとつは紙の解答用紙をイメージして,学生ひとりひとり採点していくもの(”NLsheet”),もうひとつは,全員の解答を一覧表にまとめて採点していくものです(”NLmark”)。
まずは,NLsheet からです。下図に示すように,ある学生の解答が”紙の解答用紙のように”表示されていて,一枚ずつめくりながら採点します。ただし,一度採点された解答は,その次には,採点され点数が付されて表示されます。そのため,同じ採点を繰り返す必要はありません。
解答欄をクリックすると,下図のような窓が表示され,ここで点数やコメントを記入して採点します。
次は,NLmark です。これはコンテンツの各問に対する解答を一覧表にして採点するものです。もともとはこちらを先にイメージしていて, NLsheet よりも先に書きました。これは採点以外にも利用方法があります。講義中にコンテンツを演習課題として利用して,学生の解答をプロジェクターに表示するという使用法です。大人数の講義では学生に発表させることが難しくなってくるので,このツールを利用して学生のレスポンスを得ることができる思います。
採点結果はXMLファイルとしてダウンロードできます。翌年同じ問題を利用する場合など,前年の採点結果が利用できます。利用すれば利用するほど自動的に採点可能な範囲が広がります。
続いて,集計用のツール(NLtabulate)です。左側の Tree において,集計するコンテンツにチェックを入れて指定し,点数を集計します。CSVファイルを作成しますので,ダウンロードした後,Excel などでご利用ください。
最後に,問題バンク(NLportal)です。コンテンツの共有サイトです。作題者間でお互いにコンテンツを相互利用する目的で作成しました。コンテンツの問題文が表示されるので,他の作題者の問題を一つずつ閲覧しながら,適当なものがあれば,コンテンツをダウンロードして利用します。
この他,アプリとデータベースの連動など,また後ほど書きます。
資料
初等的な物理のコンテンツの作成
3年ほど前から,College Physics にある問題を日本語に訳して,簡単な物理の問題を作成してきました。
先日,力学分野の問題がある程度できあがりました。高校で授業中に演習として利用するレベルの問題です。下記に問題バンクのサイトのキャプチャーをあげます。このサイトからダウンロードして利用します。著作権としては,元の College Physics がクリエイティブ・コモンズ 4.0 なので,同じで結構です。
URL を公開できないので,関心があれば下記へご連絡ください。
SCORM に準拠したコンテンツで,どの LMS (Moodle, WebClass, BlackBoard and etc)でも利用できます。数値による解答がほとんどで,自動採点です。採点のときにはこちらの研究室の採点サーバーと通信します。採点サーバーへのアクセスは学内外から可能です。http アクセス,https アクセス両方可能で,外部のサーバーとの通信が可能な LMS サーバーであれば,いずれの大学においても(大学には限りませんが)コンテンツが利用可能です。
他の電磁気学等の領域も問題を作成していく予定です。
自動採点と手動採点を兼ねるコンテンツの作成
自動採点のコンテンツと手動採点のコンテンツを合体させました。ひとつのコンテンツの中で両タイプの問いが可能です。下図の問1は手動採点で問2は自動採点となっています。コンテンツは SCORM 教材です。
作成したWebアプリは,コンテンツ作成用のツールと採点用のツール2種,点数を集計するツール,コンテンツを蓄えるツールです。ヘルプへのリンクを下記にあげます。
学生用のチュートリアル
コンテンツ作成用ツールの利用方法
Moodle でのコンテンツの利用方法
採点,集計,問題バンクの使用方法
これまでの数式を自動採点するコンテンツは,e-Learning らしいもので,もっぱら自習用の教材でした。宿題として課すならば,即時に採点結果を返さない方が良いです。手動採点は当然後採点な分けですが,今回はこの二つが合体したので自動採点でありながら採点結果を返さず宿題提出を締め切ってその後で結果を返すという利用方法が可能となりました。下図は自動採点タイプの問いを採点しているところです。宿題の提出は締め切られて(Question が Locked になっている)学生には結果を返さない(Inform が No になっている)設定になっています。自動採点が上手く機能せずエラーが生じている場合には,手動採点の欄を表示して点数を上書き可能です。採点が終了したら,「Inform」を Yes にして採点結果を学生に返します。
上図のアプリは先のバージョンの手動採点のアプリの頃からあるものですが,授業中に演習を課し学生に解答を送らせて,上の図のアプリを用いて(正解を隠して)学生の解答をスクリーンに表示させるという使い方もしていました。今度からは,瞬時に採点して結果を学生に見せることが可能です。
手動採点では,学生の解答をデーターベースに記録していました。今回は自動採点の結果もデーターベースに記録されます。そのため自動採点タイプと言えど最初はデーターベースの採点履歴を検索し,ヒットすれば自動採点のプログラムは呼ばれません。そのためいくらか採点が速くなると思います。採点結果がデーターベース上にあるので,点数を集計する際に Moodle 等 LMS の機能を利用する必要がありません。下図は集計用の Web アプリ NLtabulate です。
動画によって回答するコンテンツの作成
動画によって回答する教材を作成できるようになりました。数式,自由記述,動画による回答を同時にひとつのコンテンツで扱えるようになりました。動画の撮影には WEBRTC という技術を利用します。ブラウザが対応していない場合には予め撮影された動画をアップロードしてもらうことで対応します。採点は手動採点なので,自由記述の採点などと同じ手順となります。
下図は撮影中の様子です。ブラウザからカメラが利用可能な場合です。
下図は作題中のオーサリングツールのキャプチャーです。正解の設定はありません。
自分の講義では,「ガウスの法則を説明しなさい」のような口頭で答えさせる課題を課してみようと考えています。
version 4.1 となって,コンテンツ関連のヘルプを更新しました。リンクを下記にあげます。
学生用のチュートリアル
コンテンツ作成用ツールの利用方法
Moodle でのコンテンツの利用方法(変更無し)
採点,集計,問題バンクの使用方法