SCORMランタイム環境の概要
SCORMランタイム仕様は、LMSがコンテンツを起動する方法と、コンテンツがLMSと通信 この通信はすべて、単一のSCOでの単一の試行のコンテキスト内で行われます。 Sco間のナビゲーションは、マニフェストで指定されたシーケンスによって管理され、ここでさらに説明されます。
コンテンツの起動
すべてのSCORMコンテンツはweb-deliverableでなければならず、すべてのSCORM通信はwebブラウザセッションのコンテキスト内で行われます。 LMSは、ユーザによって選択されたか、SCORM2004シーケンス規則によって決定されたように、一度に1つのSCOを起動します。 SCORM2004第3版より前のバージョンでは、LMSによって提供されるユーザーインターフェイスの正式な要件はありませんでした。 すべてのLMSはわずかに異なりますが、ほとんどの場合、LMSが下に描かれているものと同様のインターフェイスを提供することを期待するのは公正です。 最低でも、何らかの形のナビゲーション可能な目次と、フローナビゲーションのコントロール(前ボタンと次ボタン)が含まれている必要があります。 これらのナビゲーション要素は、Sco間のナビゲーションを制御します。 Sco内でナビゲーションが必要な場合、SCOは独自のナビゲーション要素を提供する必要があります。
LMSには、SCOを起動するための二つのオプションがあります。 上の図のように、SCO inaフレームセットを起動するか、新しいウィンドウでSCOを起動することができます。 一部のLMSは、常にコンテンツを一方的に起動します。 一般的に、コースに1つのSCOしか含まれていない場合(したがって、LMSからのナビゲーション要素は必要ありません)、SCOはポップアップウィンドウで起動されます。 逆に、コースに多くのScoが含まれている場合、LMSは通常、ナビゲーション要素で囲まれたフレームセットでScoを起動します。 一部のLMSでは、コンテンツ作成者がScoの起動方法、利用可能なナビゲーション要素、さらにはSCOウィンドウのサイズを正確に制御することができます。
API
SCOとLMSの間のすべての通信はECMAScript(JavaScript)APIを介して行われます。 これは、通信が発生するための唯一の方法です。 利用可能な他の通信チャネルはありません。 コンテンツは、lmsが提供するJavaScript APIを介してのみ、webサービス、フォーム投稿、データベース書き込み、またはその他のメカニズムを介して通信することはできません。
APIの検索
LMSは、ブラウザのDOM内の特定の場所に特定の名前のJavaScriptオブジェクトを提供する責任があります。 このように、コンテンツは、常に共通のアルゴリズムを使用して、このAPIを見つけることができます。SCORM1.1およびSCORM1.2では、APIオブジェクトの名前は常に”API”です。 SCORM2004では、オブジェクトの名前は”API_1484_11″です。
APIオブジェクトは、SCOの親であるウィンドウまたはSCOのオープナーウィンドウの親であるウィンドウに配置する必要があります。 “親”ウィンドウは、ルートブラウザウィンドウまでの親ウィンドウのチェーン全体であると定義されています。 したがって、APIはSCOの親、SCOの親の親、SCOの親の親の親などに存在する可能性があります。 同様に、APIはオープナーウィンドウ、オープナーの親、オープナーの親の親などにあります。 SCORM2004第3版仕様の以下の図は、可能なAPIの場所を示しています。
SCORMには、コンテンツがSCORM APIを検索するために使用できる特定のアルゴリズムが含まれています。SCOがSCORM APIを検出すると、そのAPIを使用してLMSと通信できます。 SCOだけが通信を開始できることに注意してください。 LMSは、コンテンツによって行われたAPI呼び出しに単純に応答するパッシブエンティティです。 LMSは通信を開始することができず、単にコンテンツを起動して要求に応答します。
SCORM APIには、次のシグネチャを持つ8つのメソッドが含まれています。
SCORM2004
Initialize(""):bool Terminate(""):bool GetValue(element:CMIElement):string SetValue(element : CMIElement,値:string):string Commit(""):bool GetLastError():CMIErrorCode GetErrorString(errorCode:CMIErrorCode):string GetDiagnostic(errocCode:CMIErrorCode):string
SCORM1.1/SCORM1.2
LMSInitialize( "" ) : bool LMSFinish( "" ) : bool LMSGetValue( element : CMIElement ) : string LMSSetValue( element : CMIElement, value : string) : string LMSCommit( "" ) : bool LMSGetLastError() : CMIErrorCode LMSGetErrorString( errorCode : CMIErrorCode ) : string LMSGetDiagnostic( errocCode : CMIErrorCode ) : string
メソッド名はSCORMのバージョンによって若干異なりますが、概念的にはメソッドは同じです。
:
- bool型はSCORMブール値であり、実際には値が”true”または”false”の文字列です。
- “”パラメータは、他の引数を受け入れないすべてのSCORMメソッドで必要です。 これらのメソッドに空の文字列パラメータを渡すには、単にscoが必要です。
- CMIElementデータ型は、以下で説明するSCORMデータ-モデル要素に対応する文字列です。
- CMIErrorCodeデータ型は、SCORMランタイムエラーコードのいずれかに対応する文字列で表される3桁の数値です。
Initialize/LMSInitialize
Initializeメソッドは、コンテンツが通信セッションを開始することをLMSに示します。 すべてのScoは、他の通信を実行する前にInitializeを呼び出す必要があります。 LMSは、初期化の成功または失敗を示すブール値を返します。 通常、LMSは多くの初期化を行う必要はなく、常に「true」を返します。
Terminate/LMSFinish
Terminateメソッドは、コンテンツの通信が完了したことをLMSに示します。 すべてのScoはTerminateを呼び出す必要があります。 Terminateを呼び出すことは、必ずしもユーザーがSCOで行われたことを示すものではなく、技術的にはSCOが通信を完了したことを示すだけです。 ただし、実際には、コンテンツをユーザーから削除できる場合にのみTerminateが呼び出されると、コンテンツはより互換性があり、使用可能になります。 Terminateは常に呼び出される必要があるため、学習者がSCOをどのように終了しても、SCOのonunloadイベントでTerminateを呼び出すのが賢明です。 LMSによって返されるブール値は、多くの場合、SCOデータがサーバーに正常に永続化されたかどうかを示します。
GetValue/LMSGetValue
GetValueメソッドを使用すると、SCOはLMSからデータを取得できます。 常に取得されるデータは、定義されたSCORMデータモデル要素の1つです。 これらのデータモデル要素のそれぞれには、異なるデータが保持されます。 データモデル要素のいくつかは、SCOが起動されている状況に対応するLMSによって初期化された値を有する。 他の値は、SetValueの呼び出しを介してSCOによって初期化されます。 GetValueの呼び出しで空の文字列が返された場合、エラーが発生した可能性があり、GetLastErrorメソッドを呼び出して問題をチェックする必要があります。
SetValue/LMSSetValue
SetValueメソッドを使用すると、SCOはデータをLMSに永続化できます。 データは、常に定義されたSCORMデータモデル要素の1つに格納されます。 いくつかのデータモデル要素は、限られた語彙の中に値を持つことに制限されています(例えば、statusは”完了”または”渡された”かもしれません)、他のものは、特定のデー SetValue呼び出しは、呼び出しの成功または失敗を示すブール値を返します。
Commit/LMSCommit
Commitメソッドは、データの重要なチャックが保存され、データが適切に永続化されるようにする必要があることをLMSに通知します。 LMSがCommitメソッドをどのように実装すべきかについての要件はなく、単なる情報信号です。 一部のLMSは、すべてのデータが永続化されるように、コミットするすべての呼び出しに対してサーバーへのラウンドトリップを行います。 直感的ではありますが、この実装戦略はスケーラビリティの問題につながる可能性があります。 これらのLMSに負担をかけないように、Commitを過度に呼び出さないように注意してください。
GetLastError/LMSGetLastError
GetLastErrorメソッドは、最後のSCORM API呼び出しでエラーが発生したかどうかを確認します。 その場合、このメソッドは、定義された可能性のあるエラーのセットに対応するエラー番号を返します。 いくつかのエラー番号は完全に正当な状況を表します(403–データモデル要素が初期化されていないなど)。 SCOの作成者は、ユーザーに合法的に予期しないエラーをフラグするように注意する必要があります。 エラーコードの完全なリストは、SCORMランタイムリファレンスチャートに記載されています。
GetErrorString/LMSGetErrorString
特定のエラー番号(通常はGetLastErrorから返されるエラー番号)が与えられた場合、GetErrorStringメソッドはエラーコードの意味のテキスト説明を返します。 たとえば、SCORM2004では、エラー番号”406″を渡すと、”データモデル要素の型の不一致”という文字列が返され、格納されているデータが正しい形式ではなかったため、前の呼
GetDiagnostic/LMSGetDiagnostic
GetDiagnosticメソッドを使用すると、LMSは問題の診断に役立つ以前のエラーに関する詳細情報を返すことができます。 たとえば、上記の”406″エラーの診断情報は、”値’ゼロ’はcmiには許可されていません。スコア。生。 Cmiです。スコア。生の要素には、数字としてのみ表される有効な数値が含まれている必要があります”。
SCORMランタイムデータモデル
ランタイムデータモデルには、それぞれ独自の意味を持つ多くの要素が含まれています。 要素は、APIを使用して読み書きできます。 SCORMランタイムリファレンスチャートには、各データモデル要素のリストとそのデータ型、およびその意味と使用法の簡単な説明が含まれています。
すべてのSCOには独自のランタイムデータセットがあります。 これらの各データモデル要素は、コース内の各SCOに対して個別の値を持ち、データモデル要素はSco間で共有されません。 さらに、SCOの各「試行」には、実行時データの独自のセットがあります。 学習者がSCOで新しい試行を開始すると、データモデルの値は新しい試行の開始時にリセットされます。
データモデル要素はSCORMのバージョンによって若干異なりますが、ほとんどの場合、標準の各バージョンに対応する要素があります。 SCORM1.1とSCORM1.2は同一のデータモデルを持っています。 SCORM2004には、異なるデータモデルセットがあります。 SCORM2004のエディション間にも若干の微妙な違いがあります。 チャートは、各バージョン/エディションの包括的な参照を提供します。 SCORM2004で最も重要な変更点は次のとおりです:
- マイナーな名前変更、主にデータモデル要素名から”コア”を削除します。
- ステータスの分離。 SCORM1.2では、単一の要素であるcmi。コア。lesson_statusは、SCOのステータスを表します。 SCORM2004では、statusは2つの別々の要素、cmiに分解されます。completion_status(completed vs incomplete)およびcmi。success_status(渡されたものと失敗したもの)。
- 相互作用(質問結果)は、書き込み専用ではなく読み取り/書き込みです。 相互作用には、SCORM1.2にはなかった説明フィールドも含まれています。
- adlの追加。ナビ*scoがシーケンス要求を開始することを可能にするデータモデル要素
ランタイム
を使用するSCORMランタイムを使用することは、厳密な適合性の観点からは大部分がオプションですが、業界標準では、使用可能なランタイムデータモデル要素の少なくともサブセットを使用することがあります。
最も簡単なのは、コースに起動可能なアセットだけが含まれている場合、実行時の呼び出しは必要ありません。 LMSはユーザーによって要求されるように各資産を単に進水させ、資産は進水にすぐに完了すると考慮される。
より豊かな対話のために、まず実行時通信を有効にする必要があります。 これには、APIを見つけて、InitializeとTerminateが呼び出されるようにする必要があります。 ほとんどの場合、InitializeはSCOが起動された直後に呼び出される必要があります。 Initializeが呼び出されると、すべての終了シナリオでTerminateが呼び出されることが不可欠です。
通信が初期化されたら、実際にデータの通信を開始します。 以下の「第1層」データモデル要素が最も重要で最も一般的に使用されています(SCORM1.括弧内の2等分):
- cmi…completion_status&cmi.success_status(cmi.コア。lesson_status)–これらのデータモデル要素は、最も基本的かつ重要です。 これらは、ユーザーがコースを終了したときと、合格または失敗したかどうかを示します。 この基本的な情報は、ほとんどのLMSにとって不可欠です。
- cmi。スコア。スケール(cmi.コア。スコア。raw)-学習者がSCO内の任意の評価で獲得したスコアを示します。 未加工スコアと共に最低および最高のスコアを報告することはまたよい形態である。
- session_time(cmi.コア。session_time)–学習者がSCOで費やした時間を報告します。
- 場所(cmi。コア。lesson_location)–SCOがブックマークを記録するためのフリーテキストフィールドを提供します。 SCOがほんの数ページのHTMLページよりも大きい場合は、学習者が一時停止した試行を再開できるようにブックマーク機能の実装を検討する必要があります。
- 出口(cmi.コア。exit)-この値は、学習者がSCOをどのように終了しているかを示します。 Cmiを設定します。exit to”suspend”は、現在の試行が保持され、次回SCOが起動されたときにランタイムデータがリセットされないようにします。 Cmiを設定します。exit to””は、LMSがSCOの次回の起動時に新しいランタイムデータセットで新しい試行を開始する必要があることを示します。
業界標準では、すべての第1層データモデル要素がSCOで正しく使用されることが期待されています。 この機能が有効になると、次の最も一般的なデータモデル要素、つまり2番目の層には次のものが含まれます:
- 相互作用-相互作用データモデル要素を使用して、各質問応答の結果を報告します。 相互作用は、従来のテストの答えである必要はありません。 たとえば、SCOは、学習者がシミュレーションを進めるときに学習者の選択を文書化することができます。 可能であれば、すべての交互作用要素を使用して、学習者の応答の最も包括的な画像を提供します。 最低でも、”id”、”type”、”result”、”description”を使用して、LMSが基本的なレポートを提供できるようにします。
- 目標–大規模なScoでは、目標データモデル要素を使用して、学習者の特定の学習目標の習得について報告することを検討してください。 目標は、学習者の進捗状況とトレーニング教材の習得をより詳細に報告することを可能にします。
- progress_measure–SCOの完了に向けたユーザーの進捗状況を報告するには、SCORM2004のprogress_measure要素を使用します。 Progress_measureは、LMSがコースの全体的な完了のプログレスバーを提供できるようにする”完了率”の測定値のようなものです。
エントリ、モード、クレジット
cmi。エントリー(cmi.コア。エントリ)、cmi。モード(cmi.コア。lesson_mode)とcmi。クレジット(cmi.コア。クレジット)データモデル要素は、学習者に最適な経験を提供するために使用できるいくつかのコンテキストをSCOに提供します。
- エントリは、ユーザーが初めてSCOを開始しているかどうか、または以前の試行を再開しているかどうかを示します。 ブックマークを使用している場合、SCOはこの値を使用して、最初から、または前の試行が終了した時点から開始するようにユーザーに促すことがあります。
- モードは、学習者がこのSCOを起動しているかどうかを示します:通常–”ライブ”トレーニングセッションで、ブラウズモードで–ユーザーがトレーニングのカタログを閲覧していて、このコースを”プレビュー”したい、または、レビューモードで–ユーザーはすでにSCOを完了しており、材料をレビューするために戻ってきています。 ブラウズモードでは、SCOの作成者は、より自由形式のナビゲーションを提供し、コースの概要またはマップを提供し、場合によっては評価を非表示にするために、Scoの動作を変更することを検討する必要があります。 レビューモードでは、SCOの作成者は同様に、よりスリムな完全な航行の自由を許可することを検討する必要があります。 レビューモードでは、学習者は自由に任意のテストをナビゲートし、正解のリストを参照することができるかもしれません。 レビューモードで起動すると、SCOは学習者のステータスを変更したり、スコアをリセットしたりしないように注意する必要があります。
- クレジットは、このSCOがクレジットの試行中であるかどうか、またはそれが”カウント”されているかどうかを示します。 ブラウズモードと同様に、クレジットなしでSCOが起動された場合は、動作を変更する必要があります。