Category Archives: SCORM1.2コンテンツ開発 実践

SCORM1.2コンテンツ開発 実践

SCORM1.2 LMSのデータモデルのバージョンを取得したい

cmi._version を利用すると、LMSによってサポートされているデータモデルのバージョンを取得することができます。また、この要素は、適合性カテゴリに含まれていないため、動作しないLMSもあるかもしれません。

書式

LMSGetValue(“cmi._version”);

戻り値
CMIデータモデルを定義するIEEEのドキュメント、P1484.11.2のバージョンを返します。3.4の場合、ドキュメントのバージョンが3.4であることを意味します。

3.4

動作例

サンプルコンテンツ
SCORM12_cmi_version.zip

{tab=SCORM Cloud}
3.4を返す

{tab=Moodle2.3}
3.4を返す

{tab=ILIAS4.2.1}
動作せず

{tab=Moodle+ELECOA}
1.0を返す

※ELECOAのバージョン 2012年6月12日版
{/tabs}

SCORM1.2コンテンツ開発 実践

SCORM1.2 LMSがサポートするcmi.core要素を取得したい

cmi.core._children を利用すると、LMSがサポートするcmi.core要素を一覧で取得することができます。動作させるLMSで、どの要素が利用できるか、一つの目安になりますが、取得できた要素が、正しく動作するかまでは判断できません。LMS内で要素が存在しているか、していないか、分ることはそこまでです。

書式

LMSGetValue(“cmi.core._children”);

戻り値
カンマで区切りで取得できます。

student_id,student_name,lesson_location,credit,lesson_status,entry,total_time,lesson_mode,exit,
session_time,score

動作例

サンプルコンテンツ
SCORM12_cmi_core_children.zip

{tab=SCORM Cloud}
すべて対応

student_id,student_name,lesson_location,credit,lesson_status,entry,total_time,lesson_mode,
exit,session_time,score

{tab=Moodle2.3}
すべて対応

student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,lesson_mode,
exit,session_time

{tab=ILIAS4.2.1}
すべて対応

student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,
lesson_mode,exit,session_time

{tab=Moodle+ELECOA}
動作せず

※ELECOAのバージョン 2012年6月12日版{/tabs}

cmi.core._childrenから得られた、要素の動作状況

対応 ○ 未対応 ×

cmi.core._children SCORM Cloud Moodle2.3 ILIAS4.2.1
student_id
student_name
lesson_location
credit
lesson_status
entry
score
total_time
lesson_mode
exit
session_time
SCORM1.2コンテンツ開発 実践

SCORM1.2 学習者の氏名を取得したい

cmi.core.student_name を利用すると、学習者の氏名を取得することができます。
書式

LMSGetValue(“cmi.core.student_name”);

戻り値
姓(lastName)、名(firstName)の順番でカンマで区切られます。

Taguchi,Kunihiko

動作例

サンプルコンテンツ
SCORM12_student_name.zip

LMSのアカウント管理で、名(firstName)+姓(lastName)の順序で管理されていても、SCORM上では、姓(lastName)+名(firstName)の順序になるところが、少しまぎわらしいかもしれません。

{tab=SCORM Cloud}

アカウントの登録状態

{tab=Moodle2.3}

アカウントの登録状態

{tab=ILIAS4.2.1}

アカウントの登録状態

{tab=Moodle+ELECOA}
ELECOAでは、ユーザ名を取得します。ユーザ名は、氏名ではないので、不具合の可能性もあります。

アカウントの登録状態

※ELECOAのバージョン 2012年6月12日版
{/tabs}

SCORM1.2コンテンツ開発 実践

SCORM1.2 APIWrapper、SCOFunctionsを利用したSCOの起動と終了

APIWrapper.js、SCOFunctions.jsを利用して、簡単なSCOを作成してみましょう。

SCOのHTMLファイルにAPIWrapper.js、SCOFunctions.jsを読み込みます。

<script language="JavaScript" src="APIWrapper.js"></script>
<script language="JavaScript" src="SCOFunctions.js"></script>

APIアダプタの探索から、LMSInitialize()の処理は、onload時にloadPage()を実行します。

<script language="JavaScript">
window.onload = function(){
loadPage();
}
</script>

loadPage()で、APIWrapper.jsのメソッドが呼び出され、APIアダプタのパスの取得、LMSInitialize()の実行、cmi.core.lesson_statusをincomplete、学習時間を計測するタイマーが開始されます。

終了時は、unloadPage()を実行します。

<script language="JavaScript">
window.onunload = function(){
unloadPage();
}
</script>

unloadPage()で、cmi.core.exitをlogout、タイマーを終了して保存、LMSCommit()、LMSFinish()が実行されます。

このように、ライブラリを利用すると簡単に作成することができますが、どういったメソッドがあり、機能するかは、コードを読んで把握する必要があります。

SCORM1.2コンテンツ開発 実践

SCORM1.2 APIWrapper、SCOFunctionsの概要

便利なライブラリ

APIアダプタとやり取りを行う、SCOは、定番的な処理がいくつかあります。そうした処理は、毎回ゼロからプログラムを書くのではなく、まとめておいた方が便利です。インターネット上には、そうしたライブラリを配布しているサイトも存在しています。

ADLが配布しているサンプルコンテンツを見るとそのような処理をまとめた
APIWrapper.jsSCOFunctions.jsというJavaScriptの外部ファイルを利用しています。

APIWrapper.js APIアダプタの階層パスの取得から、LMSInitialize()などメソッドを実行するときの、エラー処理が追加されています。実用上、最低限の処理のかたまりです。
SCOFunctions.js APIWrapperに対してさらに機能拡張として処理が付加されています。例えば、LMSInitialize()を実行したらcmi.core.lesson_status(学習状況のステータス)をincomplete(未修了)にしたり、起動したSCOの学習時間を計測するスクリプトが書かれています。

ライセンスは、基本的に自由に利用できる独自ライセンスですが、API Wrapperは、2011年9月7日、手直され、クリエイティブコモンズ(CC BY-SA 3.0)として単独で公開されました。ADLが公開しているサンプルファイルは、それ以前に作られたものなので、ライセンスは独自ライセンスのままです。

手直しは、JavaScriptのアラートウインドウが、console.logに変更されています。IE7など古いブラウザは未対応のため旧APIWrapper.jsの方がいい場合があるかもしれません。
SCOFunctions.jsは、独自ライセンスのままです。CCの配布はないようです。

ADLによるサンプルコンテンツの配布
SCORM 1.2 Content ExamplesのSCORM 1.2 Content PackagesにSCOFunctions.js、SCOFunctions.jsを含むサンプルがあります。
SCORM Version 1.2 Resources ダウンロード

ADLによるAPI Wrapper ファイルの配布 (クリエイティブコモンズ版)
ADL Releases SCORM Version 1.2 and SCORM 2004 API Wrapper Files ダウンロード


APIWrapper、SCOFunctionsのライセンス

ADLのサンプルで使用されている、APIWrapper、SCOFunctionsの独自ライセンスの条文です。

Concurrent Technologies Corporation (CTC) grants you (“Licensee”) a non-exclusive, royalty free, license to use, modify and redistribute this software in source and binary code form, provided that i) this copyright notice and license appear on all copies of the software; and ii) Licensee does not utilize the software in a manner which is disparaging to CTC.

(意訳)
コンカレントテクノロジーコーポレーション(CTC) は、あなたに包括的、ロイヤルティフリーとして、このソフトウェアを以下の条件のもとで、ソースとバイナリコードの修正と再配布のライセンスを保証します。
i) この著作権表示とライセンスは、コピーしたソフトウェア上にすべて表示します。
ii) ライセンス授与者がCTCに不利益な形でソフトウェアを使用しない。

訳の内容保障はいたしません、参考程度にして判断してください。

SCORM1.2コンテンツ開発 実践

SCORM1.2 学習者のStudent IDを取得したい

cmi.core.student_id を利用すると、学習者を識別する一意の値を取得できます。ログインIDを返すLMSが多いですが、一意な文字列であれば何でも良いため、必ずしもログインIDが返されるとは限りません。

書式

LMSGetValue(“cmi.core.student_id”);

戻り値
LMSがログインIDをStudent IDと定めた場合、norausagiでLMSにログインするとnorausagiの文字列を返します。

norausagi

動作例

サンプルコンテンツ
SCORM12_student_id.zip

{tab=SCORM Cloud}
ログインIDを返す。SCORM Cloudでは、ログインIDは、登録メールアドレスのため、戻り値はメールアドレスが表示される。

{tab=Moodle2.1}
ログインIDを返す。

{tab=ILIAS4.1.7}
usr_idの値を返す。※ norausagiでログインしている。

ILIASでは、loginではなく、usr_idがcmi.core.student_idとして設定される。(usr_dataテーブル)

{tab=Moodle2.3+ELECOA}
idの値を返す。※ norausagiでログインしている。

ELECOAでは、usernameではなく、idがcmi.core.student_idとして設定される。(mdl_userテーブル)

※ELECOAのバージョン 2012年6月12日版
{/tabs}