これまで SCORM 1.2 のコンテンツを作ってきたのですが、ある LMS が SCORM 2004 にしか対応していなくて、それで 2004 3rd への対応を試みてみました。まだ今のところ上手くできているのか自信はありませんが、作業の記録をします。もっぱら、SCORM Cloud の利用方法の記述になるかもしれません。
最初は、とにかく SCORM 2004 が利用できる環境が必要です。Moodle は対応していません。フリーで利用可能なものには canvas LMS があります。しかし、このインストールは難しくて、Moodle とは比べ物にならない。下記のサイトなどを参考にしてインストールを試みましたが、上手く行きませんでした。
docker を利用するインストール方法は試していません。
行き詰ったのですが、この後 1.2 と 2004 の違いを調べてみました。sample が下記にあります。
日本語の解説があります。下記にあげます。SCORM コンテンツの作成に関する記事も一緒にあげます。
ナビゲーション機能がきちんと定義されたことが大きな変更点のようです。これは、自分の教材が 1 ページのHTMLなので、関係ありません。他には、SCORM ランタイム環境に変更があったようです。これは Moodle などの LMS とデータをやり取りする関数の名称や内容に変更があったということなんですが、こちらは自分の教材にも関係してきます。色々と資料を読んでみると、1.2 の マニフェストファイル(imsmanifest.xml)はナビゲーションの無いものとして扱われるということの様です。2004 で廃止された要素の使用もなかったので、あまり変更しませんでした。結局、imsmanifest.xml は下記のようにしました。
<?xml version="1.0" encoding="UTF-8" ?>
<manifest identifier="course000017" version="1.0"
xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3"
xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3"
xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3"
xmlns:imsss="http://www.imsglobal.org/xsd/imsss"
xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd
http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd
http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd
http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd
http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd">
<metadata>
<schema>SCORM</schema>
<schemaversion>2004 3rd Edition</schemaversion>
</metadata>
<organizations default="sco1">
<organization identifier="sco1" >
<title>SCORM のテスト</title>
<item identifier="item_1" isvisible="true" identifierref="r1">
<title>仮題</title>
</item>
</organization>
</organizations>
<resources>
<resource identifier="r1" type="webcontent" href="index.html" adlcp:scormType="sco">
</resource>
</resources>
</manifest>
metadata タグでは、SCORM のバージョンを指定しています。この記述で良かったような? organizations タグはコンテンツによって変化するところです。この中だけ書き換えれば良いと理解しています。organization(単数)の title と item の中の title がありますが、現在の理解では item のタイトルだけを変更するつもりです(この方針はのちに修正が必要かもしれませんが)。あとは、個々のコンテンツによって変化させる必要はないと理解しています。resources タグの最初の項目に 最初に読み込むサイトが index.html であると記されています。これをコンテンツによって変更するつもりはありません。いつも index.html に固定するつもりです。このへんは自分のコンテンツ固有の事情です。先に紹介したサイトのサンプルでは、resources タグ以下に、コンテンツに含まれるファイル名が列挙されています。しかし、SCORM 1.2 の頃から、これを無視していますが、文句は言われません。
SCORM ファイルは、ZIP ファイルです。展開したときにフォルダーをつくらないタイプです。windows だと勝手にフォルダーを作って、その中に格納してしまうのでよく分からなくなります。上図が zip ファイルを展開したところです。この中で、SCORM 的に必要なファイルは imsmanifest.xml だけです。LMS とデータをやり取りするための関数が書かれている scormfunctions.js も必要なものですが、場所はここでなくても構いませんし、ファイル名も何でもいいです。あと他には、先の imsmanifest.xml に記載してあった最初に読み込む index.html がここにあります。先のようにパスも何もないファイル名だけの記述だと、この一番浅いところを指しています。index.html も含めてですが、あとは自分の教材固有のファイルです。
scormfunctions.js は先にあげたサイトにあるサンプル(Basic Run-Time Calls)のものをほぼそのまま使用しています。必要なものは全部この中にありました。これを index.html から読み込んで利用します。1.2 から 2004 であった変更の例を幾つかあげます。
- win.API;
- 上記が: win.API_1484_11
- API.LMSInitialize(“”);
- 上記が: API.Initialize(“”);
- API.LMSGetValue(“cmi.suspend_data”);
- 上記が: API.GetValue(“cmi.suspend_data”);
最初に気を付けなければならないことは、API の名称変更です。API から API_1484_11 へ変更されています。他の違いとしては、LMS が省略されているものがほとんどですが、対応がないものもあります。
修正をかけた 2004 版のコンテンツを SCORM Cloud で試してみました。上図はログインサイトです。ログインすると下記のような画面が表示されます。すでにいくつか教材を登録しています。
左端のタブ?で、 Library に切り替えます。すでに登録してあるコンテンツが表示されています。
右上隅の Add Content をクリックします。表示されたドロップダウンリストから一番上の Import a SCORM, AICC, xAPI or cmi5 package を選びます。
下記のような画面が表示されます。ここでは choose file とある欄で、アップする SCORM ファイルを指定します。他の項目は操作しませんでした。
Import Course ボタンをクリックするとアップロードされて、下記のような画面になります。アップしたコンテンツの内容などが表示されています。SCORM のバージョンが、上の方に記されています。
少し下にスクロールすると、 マニュフェストファイルの記述に対する評価が書かれています(Congratulations, your manifest looks great!)。誤りがあると、指摘されます。
Launch ボタンを押して、コンテンツを開きます。別の window で表示されました。その為、API の検索は、親のwindow までさかのぼらないと見つかりません。
コンテンツに回答をして、採点します。私のコンテンツ固有の話ですが、採点したときに LMS に点数を書き込みます。
コンテンツのつくりにも依るとは思いますが、私の教材は SCORM から切り離すと、窓が閉じて元の画面に戻ります(下図)。これも固有の話ですが、終了する時に回答内容を LMS に記録します。これには cmi.suspend_data を利用しています。下図を見ると、コンテンツの情報が更新されています。Completion が incomplete となっています。よく分からないのですが、次にコンテンツを再開したときに以前の回答が受け取れるように、Completion を incomplete のままにしています。Success は failed となっていますが、この辺は設定をちゃんとしていないので仕方がない。Score も同じです。この値は最高得点との比率(%)だったと思います。最高得点を指定していないので、こんな表示でも仕方がない。コンテンツを完全に終了させるかどうかとも、関連しているような気がします?
View Registration State ボタンをクリックすると、下記のように記録した点数(cmi.score_raw)や一時保存したテキスト(cmi.suspend_data)などが確認できます。
SCORM Cloud の使い方は、これぐらいしか分かりません。本番でコンテンツを閉じる際の挙動など気になるところは残ります。使用されているタイトルが imsmanifest.xml ファイルの中の organization のタイトルだけですね。item の中のタイトルが見えないというか、出てこない。imsmanifest.xml の書き方に修正が必要かもしれません。
あとは、Moodle と SCORM Cloud の連携の話(dispatch)があるのですが、今のところ上手くいっていません(20250914)。
他の件を試していて気づいたのですが、2004 では点数を記録する際に cmi.score.raw だけに値をセットするだけでは足りないようです。
ScormProcessSetValue("cmi.score.min", "0");
ScormProcessSetValue("cmi.score.max", String(scoreMax));
ScormProcessSetValue("cmi.score.raw", mark);
ScormProcessSetValue("cmi.score.scaled", scaledMark);
上記のように、4種の値をセットする必要があるみたいです。参考サイトを幾つかあげます。
- Manually Reporting Score in SCORM 2004
- SCORM 2004 failing to report score to ScormCloud or Blackboard
- SCORM テキスト
最後にあげた PDF から引用します(37ページ)。
- データモデル要素のうちで最も頻繁に使用されるのが,得点と学習状態に関するデータモデル要素であろう.例えば図3.15 のようなSCO で演習問題全体の得点や合否を記録する場合,これらのデータモデル要素を用いる.SCO で演習問題などを行った結果の得点はSCORM 1.2 では“cmi.core.score.raw”,SCORM 2004 では “cmi.score.scaled” を用いる(SCORM 2004 でも“cmi.core.score.raw” は利用可能であるが, シーケンシングの目的に使うためには“cmi.score.scaled” を使わなくてはならない).これらはいずれも双方向に通信可能なデータモデル要素で,SCO はLMS に送信した値を後で読み出すことができる.
点数が記録されるかどうか、まだ LMS 上で試せていなかったのですが、点数記録に関して(まだ良くわからないけれど)変更があったようです。
2004 を Moodle で利用可能にするプラグインがありました。
インストール方法はこちらに日本語でも書かれています。自由になる Moodle があればすぐに試せます。
プラグインを配置すると、コンテンツを追加する際に、下図のように ELECOA が現れます。
あとは、SCORM コンテンツを追加する場合とあまり変わりません。下図のような感じです。
コンテンツを開きます(下図)。ボタンを押して、開始します。
下図のように、左側にナビゲーションが表示されます。回答して終了します。
ロールを切り替えて、学生としてログインして回答すると、下図のように(ELECOA 6 に)点数が付いています。パーセント表示です。満点なので 100 % となっています。
コンテンツを再開しても、きちんと前回の回答が再現されたので、上手く Moodle と連携しているようです。これで、2004 版のコンテンツの挙動がかなり確認されたように思えます。
(20250915 作成)
記事で挙げてない参考サイト
SCORM CloudでLMSのトラブルシューティングを行う方法
https://www.disce.co.jp/post/how-to-troubleshoot-your-lms-with-scorm-cloud
How to improve SCORM 2004 support for your Moodle LMS
















