The SCORM Run-Time Environment
Sharable Content Object Reference Model (SCORM™) Version 1.2
SECTION 3.1Run-Time Environment 概要
SCORM™ の目標の一つは、学習リソースを複数の Learning Management System (LMS) 間で再利用可能かつ相互運用可能にすることである。これを実現するためには、学習リソースを起動するための共通の方法、学習リソースが LMS と通信するための共通の仕組み、そしてその通信の基礎となる事前定義された言語ないし語彙が必要となる。図 3.1a に示すように、Run-Time Environment のこれら 3 つの側面が、Launch、Application Program Interface (API)、Data Model である。
Launch の仕組みは、LMS が Web ベースの学習リソースを起動するための共通の方法を定義する。この仕組みは、配信される学習リソースと LMS との間で通信を確立するための手順と責務を規定する。通信プロトコルは共通の API を通じて標準化される。
API は、学習リソースの状態(initialized、finished、エラー状態など)を LMS に通知するための通信メカニズムであり、LMS と Sharable Content Object (SCO) との間でデータ(スコア、制限時間など)の取得・設定を行うために使用される。
Data Model は、学習リソースのステータスなど通信される情報を定義するための、データ要素の標準セットである。最も単純な形では、Data Model は LMS と SCO の双方が「知っている」べき要素を定義する。LMS はセッションをまたいで必須データ要素の状態を保持しなければならず、複数システム間での再利用を成立させるためには、学習コンテンツはこれら事前定義されたデータ要素のみを使用する必要がある。
SECTION 3.2Launch
共通の Launch スキームを採用することで、LMS の内部実装を規定することなく、複数の LMS 間で学習リソースの配信動作の一貫性を担保できる。なお本節における「LMS」とは、学習リソースの配信を管理する機能を含むシステムを指す用語として用いている。この Launch スキームは、学習体験の文脈において、SCO および Asset の形式で配信される Web ベース学習リソースを対象とする。
3.2.1 学習リソースの起動
Content Aggregation Model に記述されているとおり、SCORM Content Model は次の 3 つのコンポーネントから構成される:
- Asset
- SCO
- Content Aggregation
LMS が起動できる SCORM Content Model のコンポーネントは、Asset と SCO の 2 つである。起動する学習リソースの種類によって、起動時の要件は異なる。Launch メカニズムは、LMS が学習リソースを起動するための共通の方法を定義する。配信された学習リソースと LMS との間で通信を確立するための手順と責務は、起動する SCORM 学習リソースの種類によって異なる。
content package で定義された content structure に基づき、学習リソース間の sequencing および navigation を管理することは LMS の責務である。LMS は、学習リソースに定義された前提条件の達成状況に基づいて、シーケンスを適応的に決定してもよい。特定の学習体験を構成する学習リソースの進行は、LMS の能力に応じて、シーケンシャル、非シーケンシャル、ユーザー主導、またはアダプティブのいずれかとなる。現時点では、SCORM は学習リソース間の sequencing と navigation の標準化を扱わない。したがって、sequencing に関連するビジュアルコンポーネントの look and feel についてもガイドラインを定めていない。これらは SCORM の将来のバージョンで取り扱う予定である。
たとえば、LMS は content aggregation 内をユーザー主導で navigation できるメニューをレンダリングしてもよい。このメニューは、メニュー内に表示される各学習リソースの起動位置(launch location)をターゲットとするハイパーリンクの一覧として表示できる。
あるいは、LMS は学習者のパフォーマンスに基づいて学習リソースの起動順序を適応的に決定する、サーバーサイドの配信メカニズムを備える、または利用するという形でもよい。この場合、配信を担当するサーバーサイドコンポーネントは、該当する学習リソースに指定された launch location に基づき、直接または間接にその学習リソースを提供することになる。
何らかのイベントを契機として、起動すべき学習リソースを決定するのは LMS(またはその配信コンポーネント/サービス)の責務である。LMS は、content structure で定義されたシーケンス内の次の学習リソースを起動してもよいし、ユーザーが選択した SCO を起動してもよいし、学習者のパフォーマンスに基づいて起動する SCO をアダプティブに決定してもよい。起動すべき学習リソースが決まったら、LMS は content package で定義された launch location の URL を用いて、その URL へ遷移するか、または現在表示されている学習リソースを launch location 上の学習リソースに置き換える。
LMS は Launch を任意の方法で実装してよく、必要に応じて実際の起動責務を LMS のクライアント側またはサーバー側のいずれかに委ねてもよい。ただし、実際の起動は HTTP プロトコルを用いて行わなければならない。最終的に、content package 内の launch location で識別される学習リソースが起動され、クライアントブラウザに配信される。
3.2.1.1 Asset
Asset を表す学習リソースの場合、SCORM の Launch モデルが要求するのは、LMS が HTTP プロトコルで Asset を起動することのみである。Asset は API および Data Model を介して LMS と通信する必要がないため、LMS が提供する API Adapter を Asset 側で探索する必要はない。
3.2.1.2 Sharable Content Object (SCO)
SCO を表す学習リソースの場合、SCORM の Launch モデルは、LMS が同時に 1 つの SCO のみを起動し、同時にアクティブな SCO も 1 つだけであることを要求する。さらに、SCO を起動できるのは LMS のみであり、SCO が別の SCO を起動することはできない。
LMS は、API Adapter を Document Object Model (DOM)27 オブジェクトとして公開している LMS ウィンドウの子ウィンドウまたは子フレームとなるブラウザウィンドウで、SCO を起動しなければならない。API Adapter は LMS が提供しなければならない。
API Adapter が見つかるまで、親ウィンドウおよび/または opener ウィンドウの階層を再帰的に探索することは SCO の責務である。API Adapter が見つかれば、SCO は LMS との通信を開始できる。
SECTION 3.3Application Program Interface (API)
3.3.1 API 概要
SCORM は、AICC の CMI001 Guidelines for Interoperability4 文書で定義された Run-Time Environment 機能を直接ベースとしている。ADL は AICC のメンバーおよび参加者と協力して、共通の Launch および API 仕様を策定するとともに、Web ベースのデータ要素を採用した。以下では、SCORM に関連する AICC API 仕様の主要な要素について概説する。
3.3.2 SCO–LMS 通信 API の概説
共通の API を採用することで、相互運用性と再利用性に関する SCORM の上位要件の多くが満たされる。API は、SCO が LMS と通信するための標準化された手段を提供しつつ、特定の通信実装の詳細をコンテンツ開発者から隠蔽する。最も単純に言えば、API とは「SCO が利用可能であることを前提にできる、事前定義された関数の集合」にすぎない。API は実装の詳細を SCO から隠蔽することで、再利用性と相互運用性を促進する。
API Adapter とは、API が定める関数を実装し公開する機能ソフトウェアである。コンテンツ開発者にとって API Adapter の内部実装は、同一の public interface を介してアクセスする限り問題にならない。LMS が提供する必要があるのは、API の機能を実装し、そのインタフェースをクライアント SCO に公開する API Adapter のみである。
API の重要な性質は、SCO が LMS と通信できるようにする通信メカニズムである、という点にある。SCO がいったん起動された後は、LMS との間で情報を get / set できることが前提となる。API Adapter と SCO 間のすべての通信は SCO 側から開始される。LMS 側から SCO に実装された関数の呼び出しを開始する仕組みは、現時点ではサポートされていない。API Adapter オブジェクトの関数の役割は、次の 3 つに大別される。
-
Execution State
API 関数のうち
LMSInitialize("")とLMSFinish("")の 2 つが、実行状態を扱う。 -
State Management
エラーを扱うために 3 つの関数が用意されている。
LMSGetLastError()、LMSGetErrorString(errornumber)、LMSGetDiagnostic(parameter)である。
※ 原文では State Management の見出しの下にエラー処理関数が列挙されているが、これは原文のまま訳出している。 -
Data Transfer
残りの 3 つの API 関数は、LMS との間でデータを転送するために使用される。
LMSGetValue(data model element)、LMSSetValue(data model element, value)、LMSCommit("")。なお、API は外部の Data Model によって個別に定義されたデータ値の取得・設定を行うように設計されている。AICC 仕様はそのような Data Model の一つとして「cmi」を定義しているが、本 API とともに用いる Data Model を別途開発・利用することも可能である。
3.3.2.1 SCO–LMS 通信 API 詳細仕様
SCO–LMS 通信 API の詳細を以下に示す。
Execution State
SCO が LMS と通信を開始することを API Adapter に通知する関数。これにより LMS は LMS 固有の初期化処理を行うことができる。SCO は、他のいかなる API 関数を呼び出すよりも前に、本関数を呼び出すことが必須である。
LMSInitialize(parameter)
"" 本標準に準拠するためには、空文字列を渡さなければならない。"" 以外の値は将来の拡張のために予約されている。
boolean を表す文字列。
"true"はLMSInitialize("")が成功したことを示す"false"はLMSInitialize("")が失敗したことを示す
"false" が返された場合、これは「LMS が不明な状態にあり、以降の API 呼び出しが LMS 側で処理されない」ことを SCO に対して示す。
var result = LMSInitialize("")
if (result == "false")
{
// エラー処理
}
else
{
// SCO の実行を継続
}
SCO は API Adapter に対して、コンテンツが LMS との通信を確立したい旨を伝える。典型的な戻り値は "true" である。
過去のいずれかの時点で LMSInitialize の呼び出しに成功した SCO が、これ以上 LMS との通信を必要としないと判断した場合に、本関数を呼び出さなければならない。本呼び出しは次の 2 つを意味する。
LMSSetValue()で設定した任意のデータが、LMS によって永続化されたことを SCO に保証する。- SCO が LMS との通信を終了したことを示す。
LMSFinish(parameter)
"" 本標準に準拠するためには、空文字列を渡さなければならない。"" 以外の値は将来の拡張のために予約されている。
boolean を表す文字列。
"true"はLMSFinish("")が成功したことを示す"false"はLMSFinish("")が失敗したことを示す
"true" が返された場合、SCO はそれ以降、他のいかなる API 関数も呼び出してはならない。
"false" が返された場合、これは「LMS が不明な状態にあり、以降の API 呼び出しが LMS 側で処理される保証がない」ことを SCO に対して示す。
var result = LMSFinish("");
Data Transfer
SCO が LMS から情報を取得するための関数。次の用途で使用する:
- data model 内の各種カテゴリ(グループ)および要素の値
- サポートされている data model のバージョン
- 特定のカテゴリまたは要素がサポートされているかどうか
- 配列または要素リスト内の現在の項目数
完全なデータ要素名およびキーワードをパラメータとして渡す。要求された data model パラメータの現在の値が返される。1 回の呼び出しで返される値は常に文字列 1 つだけである。
LMSGetValue(parameter)
datamodel.group.element
指定された要素の値を返す。
datamodel._version_version キーワード。LMS がサポートする data model のバージョンを取得するために使用する。
datamodel.element._count_count キーワード。配列内の現在の要素数を取得するために使用する。返されるのは配列の要素総数であり、配列の最終位置のインデックス番号ではない。
datamodel.element._children_children キーワード。LMS がサポートしているグループまたはカテゴリ内のすべての要素を取得するために使用する。
すべての戻り値は文字列である。
LMSGetValue(datamodel.group.element)
要求された要素またはグループの現在の値を表す文字列を返す。
LMSGetValue(datamodel._version)
LMS がサポートする data model のバージョンを表す文字列を返す。
LMSGetValue(datamodel.group._children)
指定したグループまたはカテゴリ内で LMS がサポートしているすべての要素名を、カンマ区切りリストで返す。要素に子要素はないがサポートされている場合は、空文字列 ("") を返す。要素自体がサポートされていない場合も空文字列 ("") を返す。続けて LMSGetLastError() を呼び出すことで、要素がサポートされていないかどうかを判別できる。エラー 401 - Not implemented error は、要素がサポートされていないことを示す。
LMSGetValue(datamodel.group._count)
要素リストまたは配列内の現在の項目数を示す整数を返す。
var value = LMSGetValue("cmi.core.student_name")
典型的な戻り値の例:"Hyde, Jackson"
var value = LMSGetValue("cmi.core.lesson_status")
典型的な戻り値の例:"incomplete"
var value = LMSGetValue("cmi._version")
CMI data model を定義する IEEE ドキュメントの現行ドラフト規格は Draft Standard for Computer Managed Instruction と題され、ID は P1484.11.2、バージョン番号は 3.4 である。本呼び出しはこの IEEE ドキュメントのバージョン番号 3.4 を返す。
var value = LMSGetValue("cmi.student_preferences._children")
これはカテゴリのサポート情報を求めるリクエストである。典型的な戻り値の例は "audio,speed,text"。空文字列 ("") が返された場合、student_preferences はサポートされていない。続けて API 呼び出しでエラーを確認することで、これを検証できる。
SCO が LMS に情報を送信するための関数。API Adapter は、情報を即座に LMS に転送するように設計されることもあれば、別の方式で情報を転送するように設計されることもある。
本関数は、data model 内の各種カテゴリ(グループ)および要素の現在値を設定するために使用する。
第 1 パラメータでデータ要素名とそのグループを指定し、第 2 パラメータで設定したい新しい値を渡す。1 回の呼び出しで送信される値は 1 つのみである。
LMSSetValue(parameter, value)
data model で定義された完全修飾要素の名前。引数は大文字小文字を区別する。引数は引用符で囲まれた文字列として渡す。
このパラメータが取り得る形式の例:
datamodel.element
Data Model で定義されたカテゴリまたはグループの名前。例:"cmi.comments"。
datamodel.group.element
Data Model で定義された要素の名前。例:"cmi.core.lesson_status"。
datamodel.group.n.element
要素配列の n 番目(0 ベースインデックスで n−1 番目のメンバー)におけるサブ要素の値。
Value:第 1 パラメータで指定したデータ要素について、本標準で定義されたデータ型に変換可能な文字列でなければならない。
boolean を表す文字列。
"true"はLMSSetValue()が成功したことを示す"false"はLMSSetValue()が失敗したことを示す
var result = LMSSetValue("cmi.core.score.raw", "95");
cmi.core.score.raw を "95" に設定する。続けて LMSGetValue("cmi.core.score.raw") を呼び出すと、"95" が返されなければならない。
API Adapter が LMSSetValue() 経由で SCO から受信した値をキャッシュしている場合、本呼び出しは LMS によってまだ永続化されていない値の永続化を要求する。
実装によっては、API Adapter は受信した設定値を即座に永続化し、クライアント上にキャッシュしないこともある。そのような実装では本 API 呼び出しは冗長であり、API Adapter は追加の動作を行わない。本呼び出しは、LMSSetValue() 経由で送信されたデータが、LMSCommit() の完了時点で LMS により永続化されることを SCO に対して保証する。
LMSCommit(parameter)
"" 本標準に準拠するためには、空文字列を渡さなければならない。"" 以外の値は将来の拡張のために予約されている。
boolean を表す文字列。
"true"はLMSCommit("")が成功したことを示す"false"はLMSCommit("")が失敗したことを示す
"false" が返された場合、これは「LMS が不明な状態にあり、以降の API 呼び出しが LMS 側で処理される保証がない」ことを SCO に対して示す。
var result = LMSCommit("");
SCO が以前に LMSSetValue() で設定したものの、LMS によってまだ永続化されていないキャッシュ値の永続化を要求する。
State Management
SCO は、与えられた API 呼び出しが成功したかどうか、また成功しなかった場合は何が問題だったかを判別する手段を持たなければならない。本関数は、直前の API 呼び出しに起因するエラーステータスコードを返す。LMSGetLastError、LMSGetErrorString、LMSGetDiagnostic の 3 つのエラー関数を除く API 関数が呼ばれるたびに、エラーコードはリセットされる。SCO はエラー関数を何度でも呼び出してエラーコードを取得できるが、コードは次の API 呼び出しが行われるまで変化しない。
LMSGetLastError()
なし
戻り値は文字列で、整数に変換するとエラーが次のいずれのカテゴリに分類されるかを識別できる:
- 100 番台:一般エラー(General errors)
- 200 番台:構文エラー(Syntax errors)
- 300 番台:LMS エラー(LMS errors)
- 400 番台:data model エラー(Data model errors)
エラーメッセージとして利用可能なコードは次のとおり:
- 0 — No error
- 101 — General exception
- 201 — Invalid argument error
- 202 — Element cannot have children
- 203 — Element not an array — cannot have count
- 301 — Not initialized
- 401 — Not implemented error
- 402 — Invalid set value, element is a keyword
- 403 — Element is read only
- 404 — Element is write only
- 405 — Incorrect Data Type
追加コードは TBD。
var errorCode = LMSGetLastError();
本関数により、コンテンツはエラーコード番号で表されるエラーのテキスト記述を取得できる。
LMSGetErrorString(errornumber)
エラーコードを表す整数値。
エラーの文章的記述を表す文字列。
var errorString = LMSGetErrorString("403");
errorString には "Element is read only" が格納される。
本関数により、ベンダー固有のエラー記述を実装し、コンテンツから取得できる。通常は、エラーに関する追加の詳細情報を提供する。
LMSGetDiagnostic(parameter)
パラメータは次の 2 つの形式のいずれかを取る:
- エラーコードを表す整数値。指定されたエラーコードに関する追加情報を要求する。
""(空文字列)。直前に発生したエラーに関する追加情報を要求する。
戻り値は、要求されたエラーまたは直前のエラーに関するベンダー固有の追加情報を表す文字列である。
var moreInfo = LMSGetDiagnostic("403");
moreInfo には、"Element is read only" エラーに関するベンダー固有の追加情報が格納される可能性がある。
3.3.2.2 SCO–LMS 通信 API Adapter の状態遷移
SCO–LMS 通信 API Adapter は、SCO の特定のインスタンスに対して、実行時に複数の状態を遷移する(図 3.3.2.2a)。API Adapter の状態は、特定の入力イベントに対する API Adapter の応答を規定する。各状態において SCO が行いうる活動は異なる。API が経由する状態は Not Initialized、Initialized、Finished の 3 つである。
Not Initialized:SCO が実際に起動された後、SCO が LMSInitialize("") API 関数を呼び出すまでの間の状態。この状態の間、LMS が提供する API Adapter を探索することは SCO の責務である。SCO が API Adapter を見つけたら、SCO は次の API 関数を呼び出すことが許可される:
LMSInitialize("")LMSGetLastError()LMSGetErrorString()LMSGetDiagnostic()
Initialized:SCO が LMSInitialize("") API 関数を呼び出した後、LMSFinish("") API 関数を呼び出すまでの間の状態。SCO が Initialized 状態にあるとき、LMSInitialize("") を除くすべての API 関数を呼び出すことが許可される。
Finished:SCO が LMSFinish("") API 関数を呼び出した後の状態。LMSFinish("") の呼び出しに対して API Adapter が "false" を返した場合、SCO は次の API 関数を呼び出すことが許可される:
LMSGetLastError()LMSGetErrorString()LMSGetDiagnostic()
LMS API Adapter が "false" を返した場合、それ以降の API 関数呼び出しに対して LMS API Adapter が適切に応答する保証はない。
3.3.3 API エラーコードの使用法
SCO は、与えられた API 関数呼び出しが成功したかどうか、また成功しなかった場合は何が問題だったかを判別する手段を持たなければならない。LMSGetLastError() 関数は、直前の API 関数呼び出しによって発生したエラーの種類を判別するためのエラーコードを返す。
Syntax:LMSGetLastError()
Parameters:なし
Return Type:String — 値は次表に示す整数に変換可能である。
| Code | Description | Usage |
|---|---|---|
| "0" | No error | エラーなし。API 呼び出しは成功。 |
| "101" | General Exception | 一般的な例外を示すために使用する。 |
| "201" | Invalid argument error |
存在しない SCORM Run-Time Environment データモデル要素への呼び出しが行われた場合に使用する。 API 経由で無効な引数が渡された場合に使用する。
|
| "202" | Element cannot have children |
|
| "203" | Element not an array. Cannot have count. |
|
| "301" | Not initialized |
|
| "401" | Not implemented error |
LMS がサポートしていない Data Model 要素への呼び出しが行われた場合、または SCORM Run-Time Environment Data Model 以外の Data Model が使用された場合に使用する。
|
| "402" | Invalid set value, element is a keyword |
キーワードに対して
|
| "403" | Element is read only. |
読み取り専用要素に対して
|
| "404" | Element is write only |
書き込み専用要素に対して
|
| "405" | Incorrect Data Type |
誤ったデータ型で要素を設定しようとした場合に使用する。
|
3.3.4 API 一般ルール
以下に API 使用上の一般的なルールを示す:
- 関数名はすべて大文字小文字を区別し、常に表示どおりに正確に記述しなければならない。
- 関数のパラメータまたは引数は大文字小文字を区別する。すべてのパラメータは小文字である。
- エラーハンドリング関数を除く API 関数の各呼び出しは、エラーコードをリセットする。
3.3.5 LMS 責務
3.3.5.1 API Adapter
SCORM は、前節で説明した必須の API 機能を実装した API Adapter を LMS が提供することを要求する。この Adapter は、Adapter 固有の実装の詳細から SCO を隔離しなければならない。これにより SCO は、基盤となる通信インフラの知識を持つ必要がなく、標準化された LMS Application Program Interface の存在のみに依拠できる。API Adapter の使用に関する要件は次のとおり:
- LMS は、API Adapter を含む LMS ウィンドウの子ウィンドウまたは子フレームとなるブラウザウィンドウで SCO を起動しなければならない。
- API Adapter は LMS が提供しなければならない。
- SCO からの API インタラクションがサポートされる唯一のメカニズムは、ECMAScript (JavaScript) の呼び出しである。
- API Adapter は、DOM27 経由で
"API"という名前のオブジェクトとしてアクセス可能でなければならない。
例として、API Adapter は次のようなシグネチャを持つ Java アプレットとして実装できる:
public class API extends Applet
{
public String LMSInitialize( String parameter )
{ . . . }
public String LMSGetValue( String element )
{ . . . }
public String LMSSetValue( String element, String value )
{ . . . }
public String LMSCommit( String parameter )
{ . . . }
public String LMSFinish( String parameter )
{ . . . }
public String LMSGetLastError()
{ . . . }
public String LMSGetErrorString( String errorCode )
{ . . . }
public String LMSGetDiagnostic( String errorCode )
{ . . . }
}
なお、API Adapter は C++ などの他のプログラミング言語で実装することもでき、たとえばブラウザプラグインとして読み込むこともできる。API Adapter の実装は LMS 固有のものとなる。上記のコード片はあくまで一例であり、LMS API Adapter の実装方法はさまざまである。
3.3.6 SCO 責務
3.3.6.1 Find API
SCO は、最低限 LMSInitialize("") および LMSFinish("") の API 呼び出しを発行する責務を負う。これを行うためには、コンテンツが LMS から提示される API Adapter を見つけられなければならない。LMS は、SCO が親ウィンドウおよび/または opener ウィンドウの階層を再帰的に探索して API を見つけられるよう、DOM ウィンドウ階層に API Adapter を配置する責務を負う。LMS の API Adapter を見つけて通信を確立するのはコンテンツの責務である。SCO がこれをどのように行うかは SCORM では規定しない。
以下のコード例は、SCO が LMS の API Adapter を見つけるために使用できるアルゴリズムを示す。これらの関数の使用は SCORM が課す要件ではなく、SCO は他の方法で LMS の API Adapter を見つけてもよい。
<SCRIPT LANGUAGE=JAVASCRIPT>
var findAPITries = 0;
function findAPI(win)
{
// win に API が含まれているかをチェックする。
// win に API が含まれず、かつ win に親ウィンドウがあり、
// 親ウィンドウが win 自身と異なる場合にループを継続する。
while ( (win.API == null) &&
(win.parent != null) &&
(win.parent != win) )
{
// 探索回数をインクリメント
findAPITries++;
// 注:7 は任意の値だが、十分すぎるはず
if (findAPITries > 7)
{
alert("Error finding API -- too deeply nested.");
return null;
}
// 探索対象のウィンドウを現ウィンドウの親に切り替えて再探索
win = win.parent;
}
return win.API;
}
function getAPI()
{
// まず現在のウィンドウから API を探す
var theAPI = findAPI(window);
// API が見つからず(現ウィンドウに無く)、
// 現ウィンドウに opener が存在する場合
if ( (theAPI == null) &&
(window.opener != null) &&
(typeof(window.opener) != "undefined") )
{
// 現ウィンドウの opener から API を探索
theAPI = findAPI(window.opener);
}
// API がまだ見つからない場合
if (theAPI == null)
{
// API Adapter が見つからない旨をユーザに通知
alert("Unable to find an API adapter");
}
return theAPI;
}
</SCRIPT>
SECTION 3.4Data Model
3.4.1 Data Model 概要
共通の Data Model を確立する目的は、SCO に関する所定の情報セットを、異なる LMS 環境間で追跡できるようにすることにある。たとえば、学習者のスコアを追跡することが一般的な要件として求められる場合、コンテンツが LMS にスコアを報告するための共通の方法を確立する必要がある。SCO が独自のスコア表現を使用すると、LMS はその情報をどのように受信・保存・処理すべきかを判断できない可能性がある。
各種コミュニティおよび標準化団体において、複数の Data Model の開発が進められている。これらのドラフト Data Model 仕様は、SCO と LMS 環境の間で交換される情報セットを機能的にグルーピングしようとするものである。例として、学習者プロファイル情報、設問・テストインタラクション、状態情報、評価などが挙げられる。本バージョンの SCORM のリリース時点では、これらのドラフト Data Model セットはまだ開発途上にあり、広範な実装やテストは行われていない。
3.4.1.1 SCORM Run-Time Environment Data Model
本節で定義する Data Model は、AICC CMI Guidelines for Interoperability4 に記述された AICC CMI Data Model から直接派生したもので、SCORM Run-Time Environment Data Model として定義される。AICC CMI Data Model が SCORM に採用されたのは、定義が明確で、過去に実装実績があるためである。将来的には新しい Data Model セットが採用され、SCORM に組み込まれることが想定されている。本バージョンの SCORM で定義されたデータ要素は、新しい Data Model セットが定義・採用された際にマッピング可能であると想定される。現行の Data Model から新しい要素へのマッピングは、将来の Data Model への移行を比較的スムーズにするはずである。
使用中の Data Model を識別するため、本節で記述するすべての要素名は "cmi" で始まる。これは実装者に対して、これらの要素が AICC CMI Data Model の一部であることを示すシグナルとなる。今後開発される代替 Data Model は、異なる識別子で始まることになる(例:cmi.elementName ではなく adl.elementName)。
SCORM のテストおよび評価フェーズで、AICC および IEEE のメンバーは、AICC CMI Data Model の要素数を大幅に削減することを決定した。これは、開発中の新 Data Model への移行を容易にするためと、削除された要素の多くがほとんどの実装者によって実際には実装されていなかったためである。SCORM Version 1.0 に含まれていた AICC CMI Data Model から削除された要素のリストは Appendix C に要約されている。本書に含まれる SCORM Run-Time Environment Data Model は、削減後の AICC CMI Data Model セットと一致する。
3.4.1.2 Data Model 一般ルール
以下に Data Model の一般的な使用ルールを示す:
- データ要素名の最初のシンボルが、その Data Model を識別する。例:
"cmi"は AICC CMI Data Model を示す。これにより同一 API を他の Data Model でも利用できるよう機能を拡張している。 - 予約キーワードが 3 つある。いずれもすべて小文字で、アンダースコアで始まる:
_version:LMS がサポートする Data Model のバージョンを取得するキーワード_children:LMS がサポートする Data Model 要素を取得するキーワード_count:リスト内の現在の要素数を取得するキーワード
- すべての配列は 0 ベースの配列である。要素は配列内に順次配置されるべきである。
- Data Model の要素名は大文字小文字を区別する。
- Data Model は SCO 単位で実装される。あるSCO が他の SCO のデータ要素にアクセスすることはできない。
3.4.2 Data Model 要素
Data Model 要素は次の 2 つのカテゴリに分けられる:必須(mandatory)と任意(optional)。AICC CMI001 Guidelines for Interoperability4 文書は、LMS による必須実装が要求される要素と、任意で実装する要素を規定している。
必須 Data Model 要素はすべて LMS によってサポートされなければならない。LMS 環境は、任意 Data Model 要素のすべて、または一部のサポートを実装してもよい。
SCO による Data 要素の使用は、すべて任意である。SCO に必須なのは API 関数 LMSInitialize("") および LMSFinish("") の使用のみであり、LMSSetValue() や LMSGetValue() の使用は要求されない。SCO は非常に小さく、詳細な追跡を想定しない設計でも構わない。ただし、追跡を行う場合は、複数 LMS 環境間での再利用性を確保するため、共通の Data Model に準拠しなければならない。
3.4.3 リストの取り扱い
リストまたは配列として現れるデータ要素がいくつかある。例として「objectives」がある。コンテンツ内で扱われる目標は複数あり得るし、学習者が同じ目標を複数回経験することも許される場合がある。
リスト内の値を取得・設定するには、インデックス番号を使用する。インデックス番号を省略できるのは、リストにメンバーが 1 つしかない場合のみである。インデックス番号付けは 0 から始まる。リストに値を追記する場合、SCO は最後に使用したインデックス番号を把握していなければならない。配列要素はすべて順次的に追加されなければならない。SCO は配列値のリストを構築する際に配列番号をスキップしたり、配列要素を空のままにしたりしてはならない。リスト内の現在のレコード数を取得するには _count キーワードを使用する。たとえば、現在保存されている objective レコード数を取得するには、次の API 呼び出しを使用する:
var numOfObjectives = LMSGetValue("cmi.objective._count");
SCO が objective レコードの数を把握していない場合、現在の学習者カウントを 0 から開始することもできる。これは、最初のインデックス位置に保存されている objective に関する情報を上書きすることになる。上書きするか追記するかは、SCO 作成者が SCO を作成する際に判断する。
リスト内の要素はドット番号表記(.n で表す)で参照する。たとえば、SCO 内の最初の objective の status 要素の値は "cmi.objective.0.status" として参照される。4 番目の objective の status 要素は "cmi.objective.3.status" として参照される。
※ 訳注原文中の例 cmi.objective._count、cmi.objective.0.status、cmi.objective.3.status はいずれもタイポであり、正しくは複数形の cmi.objectives._count、cmi.objectives.0.status、cmi.objectives.3.status である(3.4.4 の Data Model 表で正しく定義されている)。本翻訳は原文の表記を維持するが、実装時は複数形を使用すること。
3.4.4 SCORM Run-Time Environment Data Model
以下、各データ要素の詳細仕様を示す。各要素ブロックには、データ型・必須/任意の別・SCO のアクセス権・対応 API 呼び出しを併記する。
cmi.core 系列
すべての LMS が必須でサポートしなければならない情報。SCO が起動時に依拠できる情報。
cmi.core の子要素:student_id、student_name、lesson_location、credit、lesson_status、entry、score、total_time、lesson_mode、exit、session_time
Definition
_children キーワードは、LMS がサポートする core カテゴリ内のすべての要素を取得するために使用する。子を持たないがサポートされている要素については、空文字列が返される。要素自体がサポートされていない場合も空文字列が返される。続けて last error を要求することで、その要素がサポートされていないかどうかを確認できる。
Usage
LMS がどの cmi.core データ要素をサポートしているかを判定するために使用する。
Format
戻り値は、LMS がサポートする core カテゴリ内のすべての要素名のカンマ区切りリスト。
LMS Behavior
- Initialization: このグループのサポート対象子要素のセットを初期化する。
LMSGetValue()要求に対して適切なリストを返せるようにする。 - LMSGetValue(): サポートされている要素のカンマ区切りリストを返す。
- API 呼び出し例:
LMSGetValue("cmi.core._children") - 典型的な戻り値:
"student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,exit,session_time" - Error Code:401 — Not implemented error。本要素は必須なので LMS がサポートしなければならない。
- API 呼び出し例:
- LMSSetValue(): 本要素はキーワードのため、設定不可。402(Invalid set value, element is a keyword)を返す。
SCO Usage Example
var coreChildren = LMSGetValue("cmi.core._children");
if (coreChildren.indexOf("student_name") != -1)
{
studentName = LMSGetValue("cmi.core.student_name");
}
Definition
LMS の単一ユーザーを参照する一意な英数字コード/識別子。
Usage
学習者を一意に識別するために使用する。
Format
スペースを含まない最大 255 文字の英数字。ハイフンとアンダースコアは使用可。ピリオドは使用不可。大文字小文字は区別しない。
LMS Behavior
- Initialization: 学習者登録に基づき LMS が責任を持つ。
- LMSGetValue(): LMS が学習者について保持する現在値を返す。
- 戻り値の例:
"Joe_Student1"、"JS-2000"、"joe2000-3" - Error Code:401 — Not implemented error(必須要素のためサポート必須)
- 戻り値の例:
- LMSSetValue(): 読み取り専用。403(Element is read only)を返す。
SCO Usage Example
var coreStudentID = LMSGetValue("cmi.core.student_id");
Definition
通常はコース名簿で使用される学習者の正式名。ファーストネームのみではなく完全な名前。
Usage
学習者の正式名を表すために使用する。
Format
姓、名、ミドルイニシャルの順。姓と名はカンマで区切る。名前内のスペースは保持される。
LMS Behavior
- Initialization: 学習者登録に基づき LMS が責任を持つ。
- LMSGetValue(): LMS が保持する現在値を返す。
- 戻り値の例:
"Student, Joseph A."、"Student, Mike A. Jr."
- 戻り値の例:
- LMSSetValue(): 読み取り専用。403 を返す。
SCO Usage Example
var coreStudentName = LMSGetValue("cmi.core.student_name");
Definition
学習者が前回 SCO を経験した際に LMS に渡された SCO の出口点に対応する。学習者が以前に離脱した位置から SCO に戻れるようにする 1 つの仕組みとなる。すなわち、本要素は学習者の出口点を識別でき、その出口点を SCO は次回起動時の入り口点として利用できる。
Usage
学習者が SCO 内で最後にどこにいたかを表す。SCO がセッション中に「ブックマーク」として保存する用途に使える。SCO が中断され後で再開された場合、SCO は lesson_location を使って学習者を離脱位置に戻すことができる。
Format
実装依存。LMS は本データを保持し、学習者が再入する際に SCO が要求すれば返す。SCO が LMS に渡したものがそのまま返される。フォーマットは SCO が期待する形式(SCO 自身が作成する)。SCO への初回入場時、または推奨開始位置がない場合、lesson_location は空文字列 ("") でよい。
LMS Behavior
- Initialization: LMS は空文字列に設定すべき。SCO が任意で値を設定し、SCO 再入時に取得できる。
- LMSGetValue(): LMS が保持する現在値を返す。Error Code 401。
- LMSSetValue(): 渡された値でデータモデル要素を設定する。値はデータ型に一致しなければならない。Error Code:405(Incorrect Data Type)、401。
SCO Usage Example
// HTML のアンカーを使う SCO の例(onLoad で呼び出す関数)
var coreSCOLocation = LMSGetValue("cmi.core.lesson_location");
if (LMSGetLastError() == "0")
{
// coreSCOLocation には HTML 内のアンカー名が入っている
// 学習者を前回離脱位置から再開させる
window.location.hash = coreSCOLocation;
}
else
{
// エラー処理
}
Definition
学習者がこの SCO のパフォーマンス(合否やスコア)に基づき LMS によって credit(評価)を付与されるかどうかを示す。
Usage
学習者が SCO を credit 対象として受講しているかどうかを LMS が示すために使用する。cmi.core.credit は lesson_mode と組み合わせて使用される。詳細は cmi.core.lesson_mode を参照。cmi.core.credit は lesson_status の決定にも使用される。詳細は cmi.core.lesson_status を参照。
Format
定義済み語彙のいずれか:
"credit":学習者は SCO を credit 対象として受講している。SCO が LMS にデータを送信した場合、LMS は学習者にそれを credit する。"no-credit":学習者は SCO を no-credit で受講している。現在の credit(たとえばスコア 80 でpassed)は、この SCO のパフォーマンスによって変更されない。
LMS Behavior
- Initialization: 学習者がコースを credit/no-credit のどちらで受講しているかは LMS が決定する。SCORM では credit/no-credit の指定方法を定義していないため、実装は LMS 固有となる。
- LMSGetValue(): 現在値(
"credit"または"no-credit")を返す。Error Code 401。 - LMSSetValue(): 読み取り専用。403。
SCO Usage Example
var creditFlag = LMSGetValue("cmi.core.credit")
if (creditFlag == "credit")
{
// credit 対象。それに応じた処理
}
else
{
// no-credit 対象。それに応じた処理
}
Definition
LMS が判定する現在の学習者ステータス。可能な値は 6 つ。
Usage
通常、SCO 自身がステータスを決定し LMS に渡す。次の挙動に注意:
cmi.core.creditが"credit"で、manifest にadlcp:masteryscoreがある場合、LMS は学習者のスコアと mastery score の比較に応じて、ステータスを"passed"または"failed"に変更できる。- manifest に mastery score がない場合、LMS は SCO が決定したステータスを上書きできない。
- 学習者が SCO を no-credit で受講している場合、
lesson_statusは変更されない。ただし例外として、lesson_modeが"browse"の場合、no-credit であってもlesson_statusは"browsed"に変更されることがある。
Format
定義済み語彙のいずれか:
"passed":必要数の objective に習熟した、または必要なスコアを達成した。SCO 完了かつ合格。"completed":合格/不合格に関わらず、SCO 内のすべての要素を経験した。たとえば、合格判定が LMS 側のスコアに依存し、SCO は素点しか把握していない場合に使う。"failed":SCO に合格しなかった。すべての要素を完了していない場合もある。SCO 完了かつ不合格。"incomplete":SCO を開始したが完了していない。"browsed":初回試行時、LMS モード「Browse」で SCO を起動した。"not attempted":SCO を開始すらしていない(目次や概要のみを見て、まだ準備ができないと判断した等)。"not attempted"から"incomplete"への移行判定アルゴリズムは SCO 内で任意に決定できる。
LMS Behavior
- Initialization: 初回試行時、LMS は
"not attempted"を初期値として設定する。SCO がcmi.core.lesson_statusを設定しない場合の追加要件:- 初回起動時、LMS は
cmi.core.lesson_statusを"not attempted"に設定する。 LMSFinish()を受信、または学習者が画面遷移した場合、LMS はcmi.core.lesson_statusを"completed"に設定する。"completed"設定後、LMS はcmi.student_data.mastery_score(サポートされていれば)または manifest に mastery score が指定されているかチェックする。指定があり SCO がcmi.core.score.rawを設定していれば、LMS は raw スコアと mastery score を比較して"passed"または"failed"に設定する。指定がなければ"completed"のままとする。
- 初回起動時、LMS は
- LMSGetValue(): データモデルに保存された値を返す。値は定義済み語彙のいずれか。Error Code 401。
- LMSSetValue(): 値はデータ型に一致しなければならない。Error Code 405、401。
SCO Usage
"passed":SCO を credit で受講する場合に使用"failed":SCO を credit で受講する場合に使用"completed":SCO を no-credit で受講する場合に使用"incomplete":SCO がpassed/failed/completedを判定する前に終了した場合(credit/no-credit 共通)"browsed":lesson_modeがbrowseの場合に使用"not attempted":SCO が設定すべきではない(学習者が SCO を初回試行する際に LMS が初期化する)
SCO Usage Example
var lessonStatus = LMSGetValue("cmi.core.lesson_status");
if (lessonStatus == "failed")
{
// 学習者が不合格。それに応じた処理
}
else
{
// それ以外。それに応じた処理
}
Definition
学習者が当該 SCO に過去にいたかどうかを示す。
Usage
学習者が初回入場の場合、LMS は "ab-initio" に設定すべき。中断状態から再入する場合は "resume" に設定すべき。
Format
"ab-initio":SCO への初回入場。pre-test で全 objective に合格した場合など、"not attempted"でない状態で SCO を初めて見ることもありうるため、"not attempted"は信頼できる初回判定の指標にならない。"resume":学習者が以前 SCO 内にいた。中断状態から再開している。"":初回(ab-initio)でも中断からの再開(resume)でもない入場。たとえば SCO が完了済みで、後にレビュー目的で読み込まれた場合などに使う。
LMS Behavior
- Initialization: 初回起動時、LMS は
"ab-initio"に初期化する。次回起動時の値は、SCO が前回設定したcmi.core.exitによって決まる。exit="suspend"ならentry="resume"、それ以外ならentry=""。 - LMSGetValue(): データモデル値を返す。Error Code 401。
- LMSSetValue(): 読み取り専用。403、401。
SCO Usage Example
var entryStatus = LMSGetValue("cmi.core.entry")
if (LMSGetLastError() == "0")
{
if (entryStatus == "resume")
{
// SCO 再開中
}
else
{
// SCO への初回入場
}
}
cmi.core.score 系列
学習者のパフォーマンスを示す情報。子要素:raw、min、max
Definition
_children キーワードは、LMS がサポートする score カテゴリ内のすべての要素を取得するために使用する。
Usage
LMS がどの cmi.core.score 子要素をサポートしているかを判定する。raw のみ必須でサポートされなければならない。
Format
戻り値はカンマ区切りリスト。例:"raw"(最低限)、"raw,min,max"、"raw,min"。
LMS Behavior
- LMSGetValue(): サポート要素のカンマ区切りリストを返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
SCO Usage Example
var scoreChildren = LMSGetValue("cmi.core.score._children");
if (scoreChildren.indexOf("min") != -1)
{
LMSSetValue("cmi.core.score.min", "10");
}
Definition
SCO の前回試行における学習者のパフォーマンス指標。SCO 設計者が任意に算出方式を決められる(達成 objective の割合、選択式テストの素点、埋め込み問題への正解数など)。cmi.core.score.raw は 0〜100 の範囲で正規化された値でなければならない。
Usage
学習者が SCO に初回試行している間は空文字列 ("") に設定すべき。追加試行では、前回試行で記録された値を反映する。SCO 内でセットされていない状態で取得が要求された場合、空文字列を返す。
Format
小数値または空文字列。
LMS Behavior
- Initialization: SCO 起動時に空文字列で初期化。値の設定責務は SCO にある。
- LMSGetValue():
CMIDecimalまたはCMIBlankを返す。例:LMSGetValue("cmi.core.score.raw")。Error Code 401。 - LMSSetValue(): 値はデータ型に一致しなければならない。例:
LMSSetValue("cmi.core.score.raw", "85.7")。Error Code 405、401。
SCO Usage Example
LMSSetValue("cmi.core.score.raw", "85");
Definition
学習者が達成し得た最大スコアまたは合計値。0〜100 の範囲で正規化された値でなければならない。
Usage
学習者が達成し得た最大スコアを示す。
Format
小数値または空文字列。
LMS Behavior
- Initialization: 空文字列で初期化。SCO が値を設定する責務を持つ。
- LMSGetValue():
CMIDecimalまたはCMIBlankを返す。Error Code 401。 - LMSSetValue(): 値はデータ型に一致しなければならない。Error Code 405、401。
Definition
学習者が達成し得た最小スコア。0〜100 の範囲で正規化された値でなければならない。
Usage
学習者が達成し得た最低スコアを示す。
Format
小数値または空文字列。
LMS Behavior
- Initialization: 空文字列で初期化。SCO が値を設定する責務を持つ。
- LMSGetValue():
CMIDecimalまたはCMIBlankを返す。Error Code 401。 - LMSSetValue(): 値はデータ型に一致しなければならない。Error Code 405、401。
Definition
当該 SCO における学習者の全セッション時間の累積。
Usage
SCO の全セッション時間を学習者単位で追跡する。LMS は SCO 起動時にデフォルト値で初期化し、SCO が報告する session_time を加算して累計を維持する。
Format
時:分:秒 をコロン区切り。HHHH:MM:SS.SS。時は最小 2 桁・最大 4 桁、分はちょうど 2 桁、秒は 2 桁+オプションで小数点と 1〜2 桁。
LMS Behavior
- Initialization: SCO 起動時に
"0000:00:00.00"で初期化。LMSFinish()または学習者の画面遷移時に、SCO が最後に設定したsession_time(設定があれば)をtotal_timeに加算する。session_timeへの複数回のLMSSetValue()は加算せず、最新値で上書きする。 - LMSGetValue():
CMITimespanを返す。例:"00:29:00"、"01:27:45.5"。Error Code 401。 - LMSSetValue(): 読み取り専用。403、401。
Definition
SCO 起動後に望まれる SCO 動作を識別する。多くの SCO は単一の動作だが、講師や設計者の判断によって、提示する情報量・順序・トレーニング哲学を変えられる SCO も存在する。本標準は、SCO の動作に影響しうる 3 つのパラメータの伝達をサポートする。
Usage
SCO がどのモードで起動されたかを表す。lesson_status と組み合わせて使用する。
Format
"browse":学習者は教材をプレビューしたいが、必ずしも評価対象として SCO に挑戦したいわけではない。"normal":学習者が学習に対する credit を得るために設計どおりに動作すべきことを示す。"review":学習者は教材を一度以上経験し、評価済みである。
認識できない/想定外の lesson_mode を受信した場合、SCO は normal を仮定する。
LMS Behavior
- Initialization: SCO の起動モードを LMS が決定する(SCORM では指定方法を未定義のため LMS 固有実装)。
- LMSGetValue(): 定義済み語彙のいずれかを返す。Error Code 401。
- LMSSetValue(): 読み取り専用。403、401。
SCO Usage Example
var mode = LMSGetValue("cmi.core.lesson_mode");
if (LMSGetLastError() == "0")
{
if (mode == "browse") { /* ブラウズ中 */ }
else if (mode == "review") { /* レビュー中(既に評価済み) */ }
else { /* normal モードで起動 */ }
}
Definition
学習者が SCO を離脱した方法または理由を示す。
Usage
SCO が最後に終了した理由を示すために使用する。
Format
"time-out":時間が超過した、またはmax_time_allowedを超えたために SCO が終了した(max_time_allowedは manifest のadlcp:maxtimeallowed)。"suspend":学習者は離脱位置から後で戻る意図で SCO を離脱した。"logout":LMS に戻ってログアウトするのではなく、SCO 内からログアウトした。SCO は LMS に制御を渡し、LMS は適切なデータモデル要素を更新した上で、コースから自動ログアウトする。"":通常の終了状態を表す。
LMS Behavior
- Initialization: 初期化不要。
LMSGetValue()は呼ばれない。SCO が制御する。SCO が設定した値に基づき、次回起動時のcmi.core.entryが決まる:exit="time-out"または"logout"または未設定 → 次回entry=""exit="suspend"→ 次回entry="resume"exit=""→ 次回entry=""- 加えて
exit="logout"の場合、LMS はLMSFinish()時または画面遷移時にコースから学習者をログアウトする。
- LMSGetValue(): 書き込み専用のため、SCO が呼ぶと 404 を返し空文字列を返す。Error Code 401、404。
- LMSSetValue(): 値はデータ型に一致しなければならない。Error Code 405、401。
SCO Usage Example
LMSSetValue("cmi.core.exit", "time-out")
Definition
学習者が SCO を離脱した時点までに、当該 SCO 内で過ごした時間(時:分:秒)。すなわち、本セッションの開始から SCO の単一利用の終了までの時間を表す。
Usage
1 セッション中の SCO 滞在時間を追跡する。LMS は本値を使って cmi.core.total_time を算定する。
Format
HHHH:MM:SS.SS。時は最小 2 桁・最大 4 桁、分はちょうど 2 桁、秒は 2 桁+オプションで小数点と 1〜2 桁。
LMS Behavior
- Initialization: 初期化不要。SCO が制御。SCO は単一実行中に複数回
session_timeを設定可能。LMSFinish()または画面遷移時、LMS は SCO が最後に設定したsession_time(あれば)をtotal_timeに加算する。複数回のLMSSetValue()は加算せず最新値で上書きする。 - LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 値はデータ型に一致しなければならない。例:
LMSSetValue("cmi.core.session_time", "0010:34:34.56")。Error Code 405、401。
SCO Usage Example
LMSSetValue("cmi.core.session_time", "0000:12:30")
Definition
SCO の過去の利用時に生成された一意な情報で、現在の利用にも必要となるもの。起動中の SCO に固有の情報であり、通常は SCO の再起動情報として使用される。SCO が作成し、LMS が保存して、次回 SCO 実行時に SCO に返す。LMS は SCO ごと・学習者ごとに、本グループ用の領域を確保しなければならない。学習者がコース内にいる間、本データは保持される。
Usage
SCO の再開時にのみ利用可能。SCO 完了前に学習者が離脱した場合に値を設定し、再開時にこの情報を利用できる。
Format
SCO 固有。制約は次の 2 点のみ:
- データは ASCII 形式で送受信されなければならない。SCO は必要な形式に変換できる。
- LMS の負担を避けるため、本要素は 4096 バイトに制限すべきである。
LMS Behavior
- Initialization: 空文字列で初期化。SCO が値を設定する責務を持つ。
- LMSGetValue(): データモデル値を返す。Error Code 401。
- LMSSetValue(): データ型に一致した値で設定。Error Code 405、401。
SCO Usage Example
// SCO 再起動時に suspend_data を取得
var suspendData = LMSGetValue("cmi.suspend_data")
if (LMSGetLastError() == "0")
{
// suspend_data を利用
}
Definition
SCO の作成時に生成され、起動のたびに必要となる一意な情報。これがないと SCO は実行できないことがある。
Usage
cmi.launch_data は SCO の起動を補助するために SCO に提供される。所与の SCO に対して常に同じ値となる。
Format
テキストフィールド。SCO が良好に機能するためにシステム固有の必要情報を含む。本フィールドは 4096 文字に制限される。
LMS Behavior
- Initialization: manifest(
adlcp:datafromlms要素)から値を取得して初期化。manifest に launch data がない場合は空文字列にする。 - LMSGetValue(): データモデル値を返す。Error Code 401。
- LMSSetValue(): 読み取り専用。403、401。
SCO Usage Example
var launchData = LMSGetValue("cmi.launch_data")
if (LMSGetLastError() == "0")
{
// launch_data を利用
}
cmi.comments / cmi.comments_from_lms
SCO とのコメント収集・配布の仕組み。cmi.comments は SCO がコメントを get/set する能力を表し、cmi.comments_from_lms は SCO にコメントを提供する能力(SCO 視点では読み取り専用)を表す。
Definition
SCO からの自由形式フィードバック。たとえば、学習者が SCO 内の任意の地点でコメントを残したり、SCO 終了時にコメントを求められたりする。コメントには SCO 内で作成された場所や時刻を埋め込むこともできる。
Usage
SCO が SCO に関するコメントを LMS に送信する用途。学習者が入力したコメントの収集に使える。
Format
自由形式の英数字テキストおよび特殊文字。
LMS Behavior
- Initialization: 空文字列で初期化。値の設定責務は SCO にある。
- LMSGetValue(): データモデル値を返す。コメント未提供なら空文字列。Error Code 401。
- LMSSetValue(): 値を設定する。コメントは連結されるべきである。Error Code 401、405。
SCO Usage Example
var comments = LMSGetValue("cmi.comments")
if (LMSGetLastError() == "0") { /* コメントを利用 */ }
Definition
LMS 由来のコメントを表す。たとえば講師コメントなど、学習者向けのコメントとして SCO が必要に応じて表示できる。
Usage
SCO に関連する LMS 起源のコメントを SCO が参照する用途。
Format
特定の形式は指定なし。
LMS Behavior
- Initialization: 提供されていれば LMS が初期化。
- LMSGetValue(): データモデル値を返す。コメントなしなら空文字列。Error Code 401。
- LMSSetValue(): 読み取り専用。403、401。
SCO Usage Example
var commentsFromLMS = LMSGetValue("cmi.comments_from_lms");
if (LMSGetLastError() == "0") { /* LMS からのコメントを利用 */ }
cmi.objectives 系列
SCO 内で扱われる個別 objective に対する学習者のパフォーマンスを示す。子要素:id、score、status
Definition
LMS がサポートする cmi.objectives カテゴリ内の全要素を取得するキーワード。
Usage
LMS がサポートする要素を判定する。シミュレーションなどの複雑なシナリオで、学習者のパフォーマンスについてどの詳細情報を収集できるかを示す。
Format
カンマ区切りリスト。例:"id,score"、"id,status"。
LMS Behavior
- LMSGetValue(): サポート要素のカンマ区切りリストを返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
Definition
cmi.objectives リスト内の現在のレコード数を取得するキーワード。
Usage
LMS が保存している objective 数を判定する。SCO はこの値から、どの objective レコードを取得・設定するかを決定できる("3" が返れば 0〜2 のレコードが存在)。
Format
整数値。
LMS Behavior
- Initialization: SCO 起動時に 0 で初期化。
- LMSGetValue(): objective レコード総数を返す。例:
"0"、"4"。Error Code 401。 - LMSSetValue(): キーワードのため設定不可。402、401。
SCO Usage Example
var totalObj = LMSGetValue("cmi.objectives._count")
// 0 ベースなので -1 して新規 objective の id を設定
var request = "cmi.objectives." + (totalObj - 1) + ".id"
LMSSetValue(request, "Obj1_110")
Definition
objective を識別するための、開発者が定義する SCO 固有の内部識別子。
Usage
objective を識別する手段。
Format
内部スペースのない英数字文字列。
LMS Behavior
- Initialization: 空文字列で初期化。値の設定責務は SCO にある。
- LMSGetValue(): 保存された objective id を返す。Error Code 401。
- LMSSetValue(): 値はデータ型に一致しなければならない。例:
LMSSetValue("cmi.objectives.0.id", "Obj1")。Error Code 405、401。
cmi.objectives.n.score 系列
各 objective には関連スコアを保持できる。子要素:raw、min、max
Definition
LMS がサポートする cmi.objectives.n.score カテゴリ内の全要素を取得するキーワード。
Format
カンマ区切りリスト。例:"raw,min,max"、"raw"、""。
LMS Behavior
- LMSGetValue(): サポート要素のカンマ区切りリストを返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
Definition
各試行後の objective に対する学習者パフォーマンスの数値表現。0〜100 で正規化された値。
Format
小数値または空文字列。
LMS Behavior
- Initialization: 空文字列で初期化。
- LMSGetValue(): objective の raw スコアを返す。Error Code 401。
- LMSSetValue(): 例:
LMSSetValue("cmi.objectives.0.score.raw", "5")。Error Code 405、401。
Definition
各 objective で達成し得た最大スコア。0〜100 で正規化された値。
LMS Behavior
- Initialization: 空文字列で初期化。
- LMSGetValue(): Error Code 401。
- LMSSetValue(): Error Code 405、401。
Definition
各 objective で達成し得た最小スコア。0〜100 で正規化された値。
LMS Behavior
- Initialization: 空文字列で初期化。
- LMSGetValue(): Error Code 401。
- LMSSetValue(): Error Code 405、401。
Definition
各試行後の objective に対するステータス。cmi.core.lesson_status と同じ 6 種類の語彙:"passed"、"completed"、"failed"、"incomplete"、"browsed"、"not attempted"。
LMS Behavior
- Initialization: SCO が制御。
- LMSGetValue(): Error Code 401。
- LMSSetValue(): 例:
LMSSetValue("cmi.objectives.0.status", "failed")。Error Code 405、401。
cmi.student_data 系列
学習者のパフォーマンスに基づく SCO のカスタマイズを支援する情報。子要素:mastery_score、max_time_allowed、time_limit_action
Definition
LMS がサポートする student_data カテゴリ内の全要素を取得するキーワード。
Format
カンマ区切りリスト。例:"mastery_score,time_limit_action,max_time_allowed"。
LMS Behavior
- LMSGetValue(): サポート要素のカンマ区切りリストを返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
Definition
合格スコア。SCO 外で決定される。SCO のスコアが mastery score 以上のとき、学習者はコンテンツに合格/習熟したとみなされる。SCO によっては、合格スコアが LMS により決定されるため、SCO 自身ではこれを把握しない場合がある。
Usage
LMS が mastery_score をサポートするには、SCO から渡されたスコアに基づいて lesson_status を変更できる必要がある。SCO に mastery_score を渡すだけでは、本機能の完全サポートにはならない。
Format
小数値。
LMS Behavior
- Initialization: manifest の
adlcp:masteryscoreから値を取得。 - LMSGetValue(): 現在値を返す。例:
"75"、"100"、"5"。Error Code 401。 - LMSSetValue(): 読み取り専用。403、401。
Definition
当該 SCO の現在の試行において、学習者が利用可能な最大時間。制限超過時の SCO の挙動は time_limit_action を参照。
Format
HHHH:MM:SS.SS。例:"00:14:30"、"02:03:00"。
LMS Behavior
- Initialization: manifest の
adlcp:maxtimeallowedから値を取得。 - LMSGetValue(): Error Code 401。
- LMSSetValue(): 読み取り専用。403、401。
Definition
max_time_allowed 超過時に SCO が取るべき動作を指示する。SCO が「終了するか継続するか」「学習者にメッセージを表示するか」の 2 軸で指定する。
Format
定義済み語彙のいずれか:
"exit,message""exit,no message""continue,message""continue,no message"
LMS Behavior
- Initialization: manifest の
adlcp:timelimitactionから値を取得。 - LMSGetValue(): Error Code 401。
- LMSSetValue(): 読み取り専用。403、401。
cmi.student_preference 系列
後続の SCO に適用すべき学習者選好情報。子要素:audio、language、speed、text
Definition
LMS がサポートする student_preference カテゴリ内の全要素を取得するキーワード。
Format
カンマ区切りリスト。例:"audio,language,speed"。
LMS Behavior
- LMSGetValue(): サポート要素のカンマ区切りリストを返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
Definition
音声のオン/オフおよび音量レベルを示す。
Format
−1 から 100 までの整数:
- −1:オフ(負数すべてオフを意味する)
- 0:変更なし(SCO のデフォルト、または前 SCO のステータス継続)
- 1〜100:音量(1 が最弱、100 が最大)
LMS Behavior
- Initialization: サポート時は 0 で初期化。
- LMSGetValue(): Error Code 401。
- LMSSetValue(): Error Code 405、401。
Definition
多言語対応 SCO の場合、配信言語を識別する。
Format
空白を含み得る英字文字列。例:"English"、"French"。
LMS Behavior
- Initialization: 空文字列で初期化。
- LMSGetValue(): Error Code 401。
- LMSSetValue(): Error Code 405、401。
Definition
SCO のコンテンツ配信速度を制御する。
Format
−100 から 100 までの整数:
- −100:システム上の最も遅い速度
- 0:変更なし(SCO のデフォルト、通常速度)
- 100:システム上の最大速度
LMS Behavior
- Initialization: 0 で初期化。
- LMSGetValue(): Error Code 401。
- LMSSetValue(): Error Code 405、401。
Definition
音声向けに設計された SCO で、音声テキストを画面に表示するかを示す(音声のみ/テキスト併記/テキスト消し)。
Format
3 値整数:
- −1:テキスト非表示
- 0:変更なし(デフォルト)
- 1:テキスト表示
LMS Behavior
- Initialization: 0 で初期化。
- LMSGetValue(): Error Code 401。
- LMSSetValue(): Error Code 405、401。
cmi.interactions 系列
学習者がコンピュータに対して行う、認識・記録可能な単一またはグループの入力に関する情報。本カテゴリは、SCO 受講中の各インタラクションについて詳細な情報を収集する。子要素:id、objectives、time、type、correct_responses、weighting、student_response、result、latency
※ 訳注原文 PDF では本系列の LMSSetValue() エラーコード欄に 205 と記載されているが、これはタイポであり、正しくは 405 - Incorrect Data Type である。SCORM 1.2 Addendums の Addendum 4 で訂正済み。本翻訳では原文の表記をそのまま再現するが、実装時は 405 を返すこと。
Definition
LMS がサポートする cmi.interactions カテゴリ内の全要素を取得するキーワード。
Format
カンマ区切りリスト。例:"id,time,type,correct_responses,student_response"。
LMS Behavior
- LMSGetValue(): サポート要素のカンマ区切りリストを返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
Definition
cmi.interactions リスト内の現在のレコード数を取得するキーワード。
Usage
SCO はこの値から、次に設定するインタラクションレコードのインデックスを判定できる。"3" が返れば 0〜2 が使用済み、次の利用可能インデックスは 3。
LMS Behavior
- Initialization: SCO 起動時に 0 で初期化。
- LMSGetValue(): 整数を返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
Definition
インタラクションの一意識別子。
Format
内部スペースのない英数字文字列。
LMS Behavior
- Initialization: SCO が制御。
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例:
LMSSetValue("cmi.interactions.0.id", "I_001")。Error Code 205、401。
cmi.interactions.n.objectives 系列
Definition
あるインタラクションに紐づく objective id リストの現在のレコード数を取得するキーワード。
LMS Behavior
- Initialization: SCO 起動時に 0 で初期化。
- LMSGetValue(): 整数を返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
Definition
インタラクションが紐づく objective を識別するための、開発者が定義した識別子。
Format
内部スペースのない英数字文字列。
LMS Behavior
- Initialization: SCO が制御。
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例:
LMSSetValue("cmi.interactions.0.objectives.0.id", "A1333")。Error Code 205、401。
Definition
学習者インタラクションが完了した時刻の識別。
Format
24 時間制の時刻:HH:MM:SS.S。時・分はちょうど 2 桁、秒は 2 桁+オプションで小数点と 1〜2 桁。
LMS Behavior
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例:
LMSSetValue("cmi.interactions.0.time", "12:33:35.5")。Error Code 205、401。
Definition
記録されるインタラクションのカテゴリ。インタラクションのタイプによって、応答の解釈方法が決まる。
Format
定義済み語彙のいずれか:
"true-false":応答が 2 種類のみの設問"choice":限られた事前定義の応答から学習者が選ぶ設問。各応答に番号や文字を割り当てる。1 つ以上が正解になり得る"fill-in":単純な数語の回答が必要な設問。応答は事前定義されず、学習者が作成する"matching":1 つまたは 2 つの集合の項目を組み合わせる設問"performance":選択式と似ているが、書かれた応答を選ぶ代わりにタスクや動作を実行する"sequencing":リストのメンバーを論理的順序に並べる設問"likert":連続体上の選択肢を提示する設問。意見・態度に基づく"numeric":1 つの数値で答える設問。正解は数値範囲内の単一値となる場合もある
LMS Behavior
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例:
LMSSetValue("cmi.interactions.0.type", "choice")。Error Code 205、401。
Definition
あるインタラクションの正答リストの現在のレコード数を取得するキーワード。
LMS Behavior
- Initialization: SCO 起動時に 0 で初期化。
- LMSGetValue(): 整数を返す。Error Code 401。
- LMSSetValue(): キーワードのため設定不可。402、401。
Definition
インタラクションに対するあり得る応答のうち、正答とみなされるものを記述する。複数の正答があり得るし、より正解に近い応答もあり得る。
Format
cmi.interactions.n.type によりフォーマットが異なる:
true-false:単一文字/数字。0,1,t,fが有効。0は false。完全な単語(例:"true")の場合、最初の 1 文字のみ意味を持つ。choice:カンマ区切りで 1 つ以上の文字。整数 (0–9) または英字 (a–z) を使用。各応答は 1 文字に制限。可能性が 26 を超える場合はperformance型を使用。fill-in:英数字文字列。最初の印字可能文字以降のスペースは有意。numeric:単一の数値。小数点はあってもなくてもよい。likert:likert に正答はない。空白でよい。matching:ピリオドで区切られた識別子のペア。各マッチング候補はソースとターゲットからなる。performance:255 文字以下の英数字フィールド。sequencing:任意の順序で識別された要素群。最終的な配置位置で正誤を判定する。
LMS Behavior
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例(matching の場合):
LMSSetValue("cmi.interactions.0.correct_responses.0.pattern", "1.c,2.b,3.a,4.d")。Error Code 205、401。
Definition
インタラクションの相対的重要度を識別する係数。たとえば 1 つ目に重み 15、2 つ目に重み 25 を付ければ、重み付け合計スコアは 2 つ目により強く影響される。すべて同じ重要度なら同じ重みを付ける。重み 0 は重み付け最終スコアにカウントしないことを示す。
Format
単一の浮動小数点数。小数点はオプション。
LMS Behavior
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例:
LMSSetValue("cmi.interactions.0.weighting", "0.66")。Error Code 205、401。
Definition
学習者の実際の応答。correct_responses.n.pattern と比較できる。
Format
correct_responses.n.pattern と同じ形式(cmi.interactions.n.type に応じる)。
LMS Behavior
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例:
LMSSetValue("cmi.interactions.0.student_response", "f")。Error Code 205、401。
Definition
システムが応答をどう判定したか。
Format
定義済み語彙のいずれか:
"correct""wrong""unanticipated""neutral""x.x"(CMIDecimal)
LMS Behavior
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例:
LMSSetValue("cmi.interactions.0.result", "correct")。Error Code 205、401。
Definition
刺激の提示から測定可能な応答の完了までの時間。
Format
HHHH:MM:SS.SS。時は最小 2・最大 4 桁、分は 2 桁、秒は 2 桁+オプション小数点 1〜2 桁。
LMS Behavior
- LMSGetValue(): 書き込み専用。404、401。
- LMSSetValue(): 例:
LMSSetValue("cmi.interactions.0.latency", "00:20:00")。Error Code 205、401。
3.4.5 データ型と制御語彙
AICC CMI Data Model4 の各要素には、データ型の定義が存在する。以下では、データモデル要素に指定された各データ型の詳細を示す。これらの定義はさらに、API およびデータモデルがどのように実装されなければならないかを規定する。
各データ型の定義は次のとおり。すべて "CMI" で始まる名前を持ち、AICC CMI Data Model4 に固有の型であることを明示している。
| データ型 | 説明 |
|---|---|
| CMIBlank | 空文字列 ( |
| CMIBoolean | 2 語の語彙。 |
| CMIDecimal | 小数点を含み得る数値。マイナス符号なしなら正の数とみなす。例: |
| CMIFeedback |
インタラクションにおける学習者の応答を構造化して記述する。構造と内容はインタラクションのタイプに依存する: true-false:単一文字 choice:カンマ区切りで 1 つ以上の単一文字( fill-in:最大 255 文字の英数字。最初の文字以降のスペースは有意。 numeric: likert:単一文字( matching:識別子のペアを 1 つ以上。各識別子は単一の英数字文字。ペアはピリオドで区切り、ペア間はカンマで区切る。すべて正解で正答とみなすなら全体を performance:255 文字以下の英数字文字列。 sequencing:カンマ区切りの単一文字列。文字の順序が正誤を決める。 |
| CMIIdentifier | 空白や非印字文字を含まない英数字グループ。最大 255 文字。 |
| CMIInteger | 0 から 65536 までの整数。 |
| CMISInteger | −32768 から +32768 までの符号付き整数。 |
| CMIString255 | 最大 255 文字の ASCII 文字列。 |
| CMIString4096 | 最大 4096 文字の ASCII 文字列。 |
| CMITime | 24 時間制の時刻: |
| CMITimespan | 時間長: |
| CMIVocabulary | スキーマ内の特定コンテキストに、特定の語彙を関連付けるために使用する。語彙は完全一致でなければならない。略語や単一文字は API 通信で使用してはならない。語彙の一覧は次表を参照。 |
データ型に加えて、いくつかのデータモデル要素は取り得る値の語彙が限定されている。次表に、要素ごとの語彙タイプと値を示す(AICC CMI001 Guidelines for Interoperability4 による)。
| 語彙タイプ | 語彙値 |
|---|---|
| Mode cmi.core.lesson_mode |
|
| Status cmi.core.lesson_status cmi.objectives.n.status |
|
| Exit cmi.core.exit |
|
| Credit cmi.core.credit |
|
| Entry cmi.core.entry |
|
| Interaction cmi.interactions.n.type |
|
| Result cmi.interactions.n.result |
|
| Time Limit Action cmi.student_data.time_limit_action |
|
SECTION 3.5Run-Time Environment 動作
以下の図は、LMS と Sharable Content Object の間で起こりうる run-time 通信シナリオの一例を示す。LMS と SCO が示しうる典型的な run-time 動作を表したもので、必須の実装ではなくあくまで一例である。
APPENDIX A略語一覧
| 略語 | 原語 |
|---|---|
| ADL | Advanced Distributed Learning |
| AICC | Aviation Industry CBT Committee |
| API | Application Program Interface |
| ARIADNE | Alliance of Remote Instructional Authoring & Distribution Networks for Europe |
| ASCII | American Standard Code for Information Interchange |
| AU | Assignable Unit |
| AWT | Abstract Window Toolkit |
| CBI | Computer-Based Instruction |
| CBT | Computer-Based Training |
| CDATA | Character Data |
| CMI | Computer Managed Instructions |
| COTS | Commercial Off-The-Shelf |
| CSF | Content Structure Format |
| DC | Dublin Core |
| DoD | Department of Defense |
| DOL | Department of Labor |
| DTD | Document Type Definition |
| HTML | HyperText Markup Language |
| HTTP | Hypertext Transfer Protocol |
| IDA | Institute for Defense Analyses |
| IEEE | Institute of Electrical and Electronics Engineers |
| ISO | International Organization for Standardization |
| ITS | Intelligent Tutoring Systems |
| LMS | Learning Management System |
| LOM | Learning Objects Metadata |
| LTSC | Learning Technology Standards Committee |
| MIME | Multipurpose Internet Mail Extensions |
| NGB | National Guard Bureau |
| OSTP | Office of Science and Technology Policy |
| PCDATA | Parsable Character Data |
| SCO | Sharable Content Object |
| SCORM | Sharable Content Object Reference Model |
| URI | Universal Resource Identifier |
| URL | Universal Resource Locator |
| W3C | World Wide Web Consortium |
| WWW | World Wide Web |
| XML | eXtensible Markup Language |
APPENDIX B参考文献
- Aviation Industry CBT (Computer-Based Training) Committee. http://www.aicc.org/
- Institute of Electrical and Electronics Engineers (IEEE) Learning Technology Standards Committee (LTSC). http://ltsc.ieee.org/
- IMS Global Learning Consortium, Inc. http://www.imsglobal.org/
- AICC/CMI CMI001 Guidelines for Interoperability Version 3.4. October 23, 2000. AICC Course Structure Format、AICC CMI Data Model を含む。http://www.aicc.org/
- ADL Co-Laboratories. http://www.adlnet.org/
- Institute for Defense Analyses (IDA). http://www.ida.org/
- Executive Order 13111: Using Technology To Improve Training Opportunities for Federal Government Employees.
- Gettinger, M. (1984) "Individual differences in time needed for learning: A review of the literature." Educational Psychologist, 19, 15-29.
- Graesser, A. C., & Person, N. K. (1994). "Question asking during tutoring." American Educational Research Journal, 31, 104-137.
- Bloom, B.S. (1984). "The 2 sigma problem: The search for methods of group instruction as effective as one-to-one tutoring." Educational Researcher, 13, 4-16.
- Fletcher, J. D. (2001) "Evidence for Learning from Technology-Assisted Instruction." In H. F. O'Neil Jr. and R. Perez (Eds.) Technology Applications in Education: A Learning View. Hillsdale, NJ: Lawrence Erlbaum Associates.
- Alliance of Remote Instructional Authoring and Distribution Networks for Europe (ARIADNE). http://www.ariadne-eu.org/
- Gibbons, A.S. & Fairweather, P.G. "Computer-based Instruction." (2000) In, S. Tobias and J.D. Fletcher (Eds.), Training and Retraining: A Handbook for Business, Industry, Government, and the Military. New York: Macmillan Gale Group.
- Suppes, P. (1964) "Modern learning theory and the elementary-school curriculum." American Educational Research Journal, 1, 79-93.
- Carbonell, J. R. (1970) "AI in CAI: An Artificial Intelligence Approach to Computer-Assisted Instruction." IEEE Transactions on Man-Machine Systems, Vol. 11, pp. 190-202.
- Sleeman, D, & Brown, J. S. (Eds.) (1982) Intelligent Tutoring Systems. New York, NY: Academic Press.
- Woolf, B.P., & Regian, J.W. (2000). "Knowledge-based training systems and the engineering of instruction." In S. Tobias and J. D. Fletcher (Eds.), Training and retraining: A handbook for business, industry, government, and the military (339-356). New York: Macmillan Reference.
- Gibbons, A.S. & Fairweather, P.G. (1998) Computer-based Instruction: Design and Development. Englewood-Cliffs, NJ: Educational Technology Publications.
- Gibbons, A.S. & Fairweather, P.G. (2000) op. cit.
- IMS Content Packaging Specification Version 1.1.2. http://www.imsglobal.org/
- IEEE Information Technology — Learning Technology — Learning Objects Metadata LOM: Working Draft 6.1 (2001-04-18). IMS Learning Resource Meta-data Specification Version 1.2 から参照。http://ltsc.ieee.org/
- IMS Learning Resource Meta-data Specification Version 1.2. Information Model、XML Binding、Best Practice and Implementation Guide を含む。http://www.imsglobal.org/
- ISO 639:言語表記の国際標準。Version 1 は 2 文字言語コード(例:'en'=英語、'fr'=フランス語、'nl'=オランダ語)を使用。これらは IETF の RFC 1766: "Tags for the identification of languages" の言語タグレジストリの基礎となっている。http://www.iso.ch/
- ISO 3166:国名表記の国際標準(例:'BE'=ベルギー、'CA'=カナダ、'FR'=フランス、'GB'=英国、'US'=米国 など)。http://www.iso.ch/
- vCard:個人・組織の連絡先情報の表現方法を定める標準。http://www.imc.org/pdi/
- ISO 8601:日付と時刻の数値表現を規定する国際標準。http://www.iso.ch/
- World Wide Web Consortium (W3C). http://www.w3c.org/
URL、URI、XML 1.0、DOM 仕様などを含む。 - Dublin Core Metadata Initiative. http://www.dublincore.org/
APPENDIX C改訂履歴
| SCORM Version | リリース日 | 変更内容の説明 |
|---|---|---|
| 1.1 | 2001 年 1 月 16 日 |
Run-Time Environment セクションの各サブセクション(Launch、API、Data Model)に詳細を追加。 Launch の変更:SCO 起動の記述に詳細を追加。 API の変更:
Data Model の変更:
|
| 1.2 | 2001 年 10 月 1 日 |
図 3.1a を変更し、SCO と Asset の双方が起動可能であることを示すようにした。 Launch セクションに詳細を追加し、SCO 以外の起動も記述。 SCO–LMS 通信 API 状態遷移図と説明を追加。 API エラーコード使用法の表に詳細を追加し、特定のエラーコードを使用すべき場面を示した。 以下のデータモデル要素に明確化を追加:
スコア要素( 表のフォーマットを全般的に整理。 3.5 Run-Time Environment Behavior セクションを追加。 文法的な整理を全般的に実施。 |
表 C-1a: Run-Time Environment Data Model 要素の変更
| Data Model 要素 | SCORM 1.0 からの変更 |
|---|---|
| cmi.core._children | データ型を |
| cmi.core.student_id | 変更なし |
| cmi.core.student_name | データ型を |
| cmi.core.lesson_location | データ型を |
| cmi.core.credit | 変更なし |
| cmi.core.lesson_status | 変更なし |
| cmi.core.entry | 変更なし |
| cmi.core.score._children | データ型を |
| cmi.core.score.raw / min / max | 変更なし |
| cmi.core.total_time | 変更なし |
| cmi.core.lesson_mode / exit / session_time | 変更なし |
| cmi.suspend_data / launch_data | 変更なし |
| cmi.comments | SCO/学習者からのコメントを保持する要素となった。SCO は本要素に対して |
| cmi.comments_from_lms | 新規追加。LMS や講師からのコメントを SCO で利用できる場所として追加された。 |
| cmi.objectives._count | 変更なし |
| cmi.objectives._children | データ型を |
| cmi.objectives.n.id | 変更なし |
| cmi.objectives.n.score._children |
|
| cmi.objectives.n.score._count | 削除。objective に対する複数 score のリストサポートを廃止。 |
| cmi.objectives.n.score.raw / min / max | score のリストサポートを廃止。各 objective は 1 つの score のみを持つ。 |
| cmi.objectives.n.status | score のリストサポートを廃止。 |
| cmi.objectives.n.mastery_time | 削除 |
| cmi.evaluation.* 系列 | すべて削除( |
| cmi.interactions._children / _count | 追加 |
| cmi.interactions.n.id | データ型を |
| cmi.interactions.n.objectives._count | 追加 |
| cmi.interactions.n.objectives.n.id | データ型を |
| cmi.interactions.n.time / type / weighting / student_response / result / latency | 変更なし |
| cmi.interactions.n.correct_responses._count | 追加 |
| cmi.interactions.n.correct_responses.n.pattern | 変更なし |
| cmi.student_data._children | データ型を |
| cmi.student_data.attempt_number | 削除 |
| cmi.student_data.mastery_score / max_time_allowed / time_limit_action | 変更なし |
| cmi.student_data.attempt_records.* 系列 | すべて削除 |
| cmi.student_data.tries.* 系列 | すべて削除 |
| cmi.student_demographics.* 系列 | すべて削除( |
| cmi.student_preference._children | データ型を |
| cmi.student_preference.audio | 変更なし |
| cmi.student_preference.language | データ型を |
| cmi.student_preference.lesson_type | 削除 |
| cmi.student_preference.speed / text | 変更なし |
| cmi.student_preference.text_color / text_location / text_size / video / windows.n | すべて削除 |
| cmi.paths.* 系列 | すべて削除( |
表 C-1b: Run-Time Environment データ型の変更
| データ型 | 変更 |
|---|---|
| CMIDate | 削除 |
| CMIBoolean | すべて小文字( |
| CMIFeedback |
|
| CMILocale | 削除 |
| CMISIdentifier | 削除 |
| CMIString255 |
|
| CMITime | 小数点以下の桁数を最大 2 桁までに変更(例: |
| CMITimespan | 小数点以下の桁数を最大 2 桁までに変更(例: |
表 C-1c: Run-Time Environment CMIVocabulary の変更
| 語彙タイプ | 変更 |
|---|---|
| Exit |
|
| Why Left | 削除 |
| Credit |
|
| Entry |
|
| Time Limit Action | すべての語彙選択肢を変更 |
| Interaction |
|