SCORMとはeラーニングにおける標準規格で、LMS(学習管理システム)と教材を組み合わせるための仕様を定義しています。SCORMに準拠した教材であれば、SCORMに準拠したLMSで利用できます。SCORMは米国のAdvanced Distributed Learningによって策定され、日本国内においては、日本イーラーニングコンソシアムがLMSやコンテンツの認証および、SCORM関連資格の認定を行っています。

QuizGeneratorはSCORM1.2とSCORM2004の両方に対応した教材です。合否や得点のみならず、設問毎の正誤や回答内容もLMSに送信します。

QuizGenerator(β)はSCORM1.2に対応したLMSです。Optionalな項目を含めSCORM1.2で定義されている全てのデータモデルを受け取ることが出来ます。(今後SCORM2004への対応も検討しております)

SCORMの2つの役割

SCORMには、2つの役割があります。

  • 教材をシステムに登録する
  • 教材とシステムの間で成績等をやり取りする

これらが標準仕様として定められていることで、異なるベンダーの教材とLMS(学習管理システム)を組み合わせて利用できます。

教材をシステムに登録する

SCORMの教材は、ZIP形式でまとまられています。ZIPの中には教材を構成するファイル(主にHTML、JavaScript、画像ファイル、動画ファイルなどから構成されます)と、教材の構造を定義するメタデータのファイル(imsmanifest.xml)が入っています。imsmanifest.xmlは必ずZIPアーカイブのトップディレクトリに保存されています。imsmanifest.xmlには、教材のタイトル、階層構造、合格点、学習順序に関する制約などが記述されており、LMS(学習管理システム)はこのファイルの中身を解釈しシステムに教材をシステムに登録します。

QuizGenerator(β)では、HTMLやJavaScript、画像ファイルなどはAmazon S3に、教材名や教材の構造などはAmazon RDSというリレーショナル・データベースに保存しています。

上記の図で、SCORMによって規程されているのは、赤色の矢印の部分だけです。それ以外の部分はLMS(学習管理システム)ごとに実装されています。

教材とシステム(LMS)の間で成績等をやり取りする

SCORMの教材を開くと、教材はシステムのAPIを探索します。具体的にいうと、教材は自身のフレーム(iframeやframe)の親フレームを探索していき、APIという名前のオブジェクトを探します。教材はAPIを通してユーザIDや受験者名を取得できます。また学習が進むと、教材はシステムに対して設問毎の正誤、得点、かかった時間などを送信します。SCORMのAPIを介して情報をやり取りすることで、異なるベンダーのシステム(LMS)と教材との間で成績などをやりとりできるのです。

SCORMに準拠したLMSの構成は概ね上記の図のようになります。この中でSCORMが規程しているのは赤の矢印の部分で、残りの青い矢印に関してはLMSごとに独自に実装されている部分です。青い部分の仕様は、LMSの利用者は知る必要はありませんし、一般的に公開されていません。一方、赤の矢印の部分はSCORMのAPIとして標準化されており、この部分の仕様がSCORMそのものと言っても過言ではありません。

SCORMを使った教材の例

QuizGeneratorはSCORMに準拠した教材ですが、QuizGeneratorは複雑で解説し辛いので、cardgeneratorを例に解説します。cardgeneratorは2017年2月にリリースしたばかりの暗記カード作成サービスです。QuizGenerator(β)のバージョン1.2以降であればコース内の教材としてご利用いただけます。

暗記カードでの通信内容

暗記カードのSCORM通信の内容を以下に示します。

  • Initialize #起動時に初期化します
  • GetValue(cmi.suspend_data) #cmi.suspend_dataを取得します。どのカードが暗記済かを復元します。
  • SetValue(cmi.core.lesson_status, completed) #成績にcompletedを送信します
  • Commit #APIとサーバを同期します
  • SetValue(cmi.suspend_data, 1100000) #覚えたをチェックすると暗記状況を送信します。
  • SetValue(cmi.core.lesson_status, completed) #成績にcompletedを送信します
  • SetValue(cmi.core.score.raw, 29) #得点を送信します
  • Commit #APIとサーバを同期します
  • Terminate #APIを終了させます

上記のような通信を行うことで、どのカードの「覚えた」をチェックしているかという情報を保存したり、どれだけの割合のカードに覚えたをチェックしているかをLMS(学習管理システム)に通知できます。

CardgeneratorをLMSの外で使った場合は、ブラウザのCookieにcmi.suspend_dataの内容を保存するようにしています。そのため、LMSの外で利用してもcardgeneratorの「覚えた」チェックマークや、QuizGeneratorのMasterモードの攻略済問題などの情報は保存されます。

ヒント: CardgeneratorやQuizGeneratorをLMS外で使用した場合、DummyAPIがロードされ、SCORMの通信内容がブラウザのコンソールに表示されます。SCORMに興味がある方はCardGeneratorやQuizGeneratorで出力されるZIPファイルをPC上で展開し、index.htmlをWebブラウザで開くことでSCORMの理解につながります<。

ヒント: このページに設置されている暗記カードもLMS外に設置されているので、ブラウザのコンソールには通信内容が表示されています。F12キー(Windowsの場合)などでコンソールを開くと通信内容を確認できます。※厳密にいうとDummyAPIには通信機能は存在しないので、通信はしていません。

このページのコンソールを開くと上記のような通信内容が表示されます。

SCORMを使うメリット

SCORMに準拠することで、LMS(学習管理システム)と教材(コンテンツ)相互運用を実現できます。SCORM登場以前は、A社の作った教材は、A社のLMSでしか利用できませんでした。A社とB社が業務提携をして仕様を共通化していたりすれば別ですが、基本的にA社のコンテンツはA社のLMSでしか使えない、B社のコンテンツはB社のLMSでしか使えない。SCORMが登場するまでは、それが当然でした。

SCORMを使うデメリット

SCORMを使うデメリットとしては、開発コストと、SCORMで想定していない仕様の組み込みにくさが挙げられます。

開発コスト

択一問題だけサポートした簡単なeラーニングシステムを作りたい。SCORMなどの標準仕様を気にせず、サーバサイドのプログラミングだけで作るのであれば、実力のあるプログラマであれば1ヶ月もかからずシステムを完成させてしまうかもしれません。しかし、SCORMに準拠したLMSと教材を開発するとなると、SCORMの仕様を理解するだけで1ヶ月はかかってしまうでしょうし、それぞれの開発に数ヶ月ずつは必要でしょう。そのため、社内で使うだけの簡易なシステムに、SCORMを導入するのはあまりよい考えではありません。QuizGeneratorは開発スタートから5年に、QuizGenerator(β)は開発スタートから1年余りになります。

SCORMで規程されていない仕様の組み込みにくさ(1)

SCORMで想定されていない動作をさせようと思うなら、SCORMを使うべきではありません。

例えば、1個目の教材(SCO)で問題に解答させ、2個目の教材(SCO)で1問目の正誤によって異なる解説文を表示させるといったことはSCORMでは想定されておらず、まっとうな方法では実現できません。SCORMでは教材(SCO)と教材(SCO)は独立した存在で、独立しているが故、再利用性を担保できるのですが、そのことについては深く触れません。とにかくSCORMが想定している教材構成や動作環境とかけ離れたシステムを使う場合、SCORMを採用すると後悔する可能性があります。SCORMを採用するかどうかは、SCORMの仕様をしっかり理解し、要件に適合しているか判断する必要があります。

SCORMで規程されていない仕様の組み込みにくさ(2)

随分昔の話になるのですが、eラーニングシステムをガラケーに対応させるという開発を行ったことがあります。ガラケーはJavaScriptに対応しておらず、そのためSCORMをまともに実装することはできず、サーバ側で特殊な対応をせざるを得ませんでした。今は、スマホアプリ内であってもWeb系のコンポーネントを組み込み素直な実装でSCORM対応できるようになりましたが、技術的な制約でSCORMは適さないということは、今後も発生するかもしれません。

SCORMで規程されていない仕様の組み込みにくさ(3)

スピーキングのテストを実施したい。課題提出機能を実装したい。実はSCORMのデータモデル(送信できる変数のようなもの)は、原則としてテキストだけであるため、こういった機能をSCORMだけで実装するのは不可能です。多数の教材の一部としてこういった教材があるのであれば、全体的にはSCORMベースで開発しておき、SCORMで対応できない部分だけ独自APIを使ったり、別画面を表示させることで対応すればよいですが、SCORMで規程されていない部分のほうが多いようなeラーニングの仕組みを作りたいのであれば、そもそもSCORMを採用するべきではありません。

SCORMを使ったLMSの例

SCORMに準拠した(日本イーラーニングコンソシアム)が認定したLMSの一覧を以下のURLで確認いただけます。
SCORM適合LMS一覧

QuizGenerator(β)は日本イーラーニングコンソシアム認定のLMSではありませんが、APIはRTE3相当の実装になっております。現時点では、コースという概念が実装されていないため、他社のLMS向けに開発されたコンテンツを移植する際は弊社技術スタッフとの連携が必要になります。