SCORMの仕組みは「パッケージング」「ランタイム通信」「シーケンシング」の3つに分けて理解すると、全体像がすっきりと見えてきます。この記事では、eラーニング教材とLMS(学習管理システム)がどのように連携して動いているのかを、初心者の方にもわかりやすいように図解・比喩を交えて解説します。
1. SCORMの全体像——3つの仕組み
SCORM(Sharable Content Object Reference Model:スコーム)は、eラーニング教材とLMSをつなぐ「共通ルール」です。このルールは、大きく3つの仕組みで成り立っています。
3つの仕組みを日常の比喩で理解する
SCORMの全体像を、「レストランの注文」にたとえて考えてみましょう。
- コンテンツ・パッケージング——料理の「メニュー表」にあたる部分です。お店(LMS)に「どんな料理(教材)があるのか」「どの順番で出すのか」を伝える仕組みです。
- ランタイム通信——お客さん(学習者)とウェイター(LMS)の「会話」にあたります。「注文します」「こちら料理です」「お会計お願いします」というやり取りが、教材とLMS間で自動的に行われます。
- シーケンシング——コース料理の「提供順序ルール」です。「前菜が終わってからメインを出す」ように、学習の順序を制御します。この機能はSCORM 2004のみに搭載されています。
これら3つが組み合わさることで、「教材を一度作れば、どのSCORM対応LMSでも同じように動く」という互換性が実現されているのです。
2. 仕組み1: コンテンツ・パッケージング
imsmanifest.xml——教材の「設計図」
SCORM教材は、学習コンテンツ(HTMLファイル、画像、動画など)と一緒にimsmanifest.xml(アイエムエス・マニフェスト・エックスエムエル)というファイルをまとめてZIP形式で圧縮したものです。このZIPファイルをSCORMパッケージと呼びます。
imsmanifest.xmlは、教材の中身を説明する「目次」のようなものです。このファイルには、以下の情報が記述されています。
- 教材のタイトル——LMSに表示される教材名
- 教材の構成——どのファイルがどの章に対応するか
- 起動ファイル——学習者がアクセスしたときに最初に開くファイル
- 学習項目の階層構造——章・節・ページの親子関係
「宅配便の伝票」で理解するパッケージング
パッケージングの仕組みは、宅配便の伝票にたとえるとわかりやすいでしょう。
- ダンボール箱(ZIPファイル)——教材ファイル一式を入れる箱
- 伝票(imsmanifest.xml)——中に何が入っているか、届け先(起動ファイル)はどこかを記載
- 中身の品物(HTML / JS / CSS / 画像 / 動画)——実際の教材コンテンツ
宅配便が届いたとき、配達員は伝票を見て届け先を判断しますよね。同じように、LMSはimsmanifest.xmlを読み取ることで、教材の構成や起動方法を自動的に認識します。伝票の書き方が間違っていると届け先がわからないように、imsmanifest.xmlの記述に誤りがあると教材は正しく動作しません。
SCORMパッケージのファイル構成
典型的なSCORMパッケージのファイル構造は以下のとおりです。
| ファイル / フォルダ | 役割 |
|---|---|
| imsmanifest.xml | 教材の構成情報(マニフェストファイル)。必須 |
| HTML / JS / CSS | 教材の本体コンテンツ |
| images / video / audio | 教材で使用するメディアファイル |
| XSD / DTDファイル | マニフェストの書式を検証するための定義ファイル |
重要なルールとして、imsmanifest.xmlはZIPファイルのルート(最上位階層)に配置しなければなりません。フォルダの中に入れてしまうと、LMSが教材を認識できなくなるので注意が必要です。
3. 仕組み2: ランタイム通信——教材とLMSの会話
SCORM APIとは
教材がLMS上で起動されると、ブラウザの中で教材とLMSがJavaScript API(ジャバスクリプト・エーピーアイ)を通じてデータをやり取りします。このAPIが、SCORMのランタイム通信の核心部分です。
APIとは、ソフトウェア同士が情報をやり取りするための「窓口」のようなものです。教材はこの窓口を通じて、LMSにデータを送ったり、LMSからデータを受け取ったりします。
通信の3ステップ——初期化→データ送受信→終了
SCORM教材とLMSの会話は、以下の3ステップで行われます。
ステップ1: 初期化(接続開始)
学習者が教材を開くと、教材はまずLMSに「これから通信を始めます」と宣言します。これをInitialize(初期化)と呼びます。電話にたとえれば「もしもし」にあたる部分です。
ステップ2: データの送受信(学習中のやり取り)
初期化が完了すると、教材はLMSとの間でデータを読み書きできるようになります。
- GetValue(値の取得)——LMSから情報を受け取る。例:前回の中断箇所を読み込む
- SetValue(値の設定)——LMSに情報を送る。例:テストの点数を記録する
- Commit(確定送信)——設定した値をLMSに確実に保存させる
電話の会話にたとえれば、GetValueは「前回の内容を教えてください」、SetValueは「今回の結果を伝えます」、Commitは「今の内容、メモしておいてくださいね」にあたります。
ステップ3: 終了(接続終了)
学習者が教材を閉じるとき、教材はLMSに「通信を終了します」と伝えます。これをTerminate(終了)と呼びます。電話の「それでは失礼します」にあたり、この宣言によってLMS側でデータの保存処理が完了します。
具体的にどんなデータがやり取りされるのか
ランタイム通信で実際にやり取りされるデータの例を紹介します。
| やり取りの方向 | データの例 | 内容 |
|---|---|---|
| LMS → 教材 | 学習者の名前 | 教材内で「○○さん、こんにちは」と表示するため |
| LMS → 教材 | 前回の中断位置 | 前回の続きから学習を再開するため |
| 教材 → LMS | 学習ステータス | 「完了」「未完了」「合格」「不合格」などを記録 |
| 教材 → LMS | テストの点数 | 0〜100の数値で得点を記録 |
| 教材 → LMS | 学習時間 | 教材に費やした時間を記録 |
| 教材 → LMS | 中断位置 | 次回アクセス時に続きから再開できるように保存 |
これらの通信はすべてブラウザ上のJavaScriptで処理されるため、特別なソフトウェアのインストールやサーバー設定は不要です。
4. SCORM データモデル——何が記録されるのか
データモデルとは
SCORMのデータモデルとは、教材とLMSの間でやり取りできるデータ項目の一覧表のことです。「何を記録してよいか」「どんな値が許されるか」がすべて仕様で決められています。
たとえば、学習ステータスには「completed(完了)」「incomplete(未完了)」「passed(合格)」「failed(不合格)」など、決められた値しか設定できません。この厳密なルールがあるからこそ、異なるLMS間でもデータの互換性が保たれるのです。
主要なデータ項目一覧
以下は、実際の現場でよく使われるSCORMデータモデルの主要項目です。SCORM 1.2の名称で記載し、括弧内にSCORM 2004での対応名称を示します。
| データ項目 | SCORM 1.2での名称 | 説明 |
|---|---|---|
| 学習ステータス | cmi.core.lesson_status | 学習の状態(completed, incomplete, passed, failed など) |
| 合計得点 | cmi.core.score.raw | テストの得点(0〜100の数値) |
| 最低得点 | cmi.core.score.min | 得点の最小値 |
| 最高得点 | cmi.core.score.max | 得点の最大値 |
| 学習時間 | cmi.core.session_time | 今回のセッションで費やした時間 |
| 累積学習時間 | cmi.core.total_time | これまでの学習時間の合計 |
| 中断データ | cmi.suspend_data | 中断時のデータ保存用(最大4096文字) |
| 前回の中断位置 | cmi.core.lesson_location | ブックマーク(中断箇所の目印) |
| 学習者の名前 | cmi.core.student_name | LMSに登録された学習者名 |
| 学習者ID | cmi.core.student_id | LMSに登録された学習者の識別番号 |
特に重要なのはlesson_status(学習ステータス)、score.raw(得点)、session_time(学習時間)、suspend_data(中断データ)の4項目です。ほとんどのSCORM教材で、この4つは必ずと言ってよいほど使われています。
suspend_dataは「教材側の自由帳」のような存在です。教材が独自に保存したいデータ(どの問題に正解したか、どのページまで見たかなど)を文字列として保存できます。ただし、SCORM 1.2では最大4,096文字という制限があるため、大量のデータを保存したい場合は工夫が必要です。
5. 仕組み3: シーケンシング——学習順序の制御
シーケンシングとは
シーケンシング(Sequencing & Navigation:学習順序制御)は、SCORM 2004で追加された仕組みです。教材の中で「どの順番で学習させるか」「どの条件を満たしたら次に進めるか」を、imsmanifest.xmlの中にルールとして定義できます。
SCORM 1.2にはこの機能がないため、学習者は教材の中を自由に行き来できます。「Chapter 1を完了しないとChapter 2に進めない」といった制御をしたい場合は、SCORM 2004を選ぶ必要があります。
シーケンシングの具体例
シーケンシングで設定できるルールの例をいくつか紹介します。
- 前提条件の制御——「Chapter 1を完了しなければChapter 2は表示しない」
- 合格条件の制御——「テストで80点以上を取らないと次の章に進めない」
- 繰り返し受講の制御——「不合格の場合、同じ章をもう一度受講させる」
- スキップの制御——「事前テストで90点以上なら基礎編をスキップして応用編へ進む」
これらのルールはすべてimsmanifest.xml内に記述され、LMSがルールを解釈して学習者の画面遷移を制御します。ただし、シーケンシングの仕様は非常に複雑であり、LMSによって対応度にばらつきがあるのが実情です。
6. SCORM 1.2と2004で仕組みはどう違うか
SCORMの2つのバージョンは、3つの仕組みそれぞれに違いがあります。ここでは技術的な差異を簡潔にまとめます。
通信API名の違い
教材がLMSと通信するときに呼び出すAPI(関数名)が異なります。
| 操作 | SCORM 1.2 | SCORM 2004 |
|---|---|---|
| APIオブジェクト名 | API | API_1484_11 |
| 初期化 | LMSInitialize("") | Initialize("") |
| 値の取得 | LMSGetValue(element) | GetValue(element) |
| 値の設定 | LMSSetValue(element, value) | SetValue(element, value) |
| 確定送信 | LMSCommit("") | Commit("") |
| 終了 | LMSFinish("") | Terminate("") |
SCORM 1.2では関数名に「LMS」というプレフィックス(接頭辞)が付きますが、SCORM 2004ではシンプルな名称に変更されています。
データモデルの違い
| 項目 | SCORM 1.2 | SCORM 2004 |
|---|---|---|
| 学習ステータス | lesson_status(1つで管理) | completion_status + success_status(2つに分離) |
| 得点の範囲 | 0〜100の数値 | 0〜1の小数(例:0.85 = 85点相当) |
| データモデル項目数 | 約30項目 | 約90項目 |
| suspend_dataの上限 | 4,096文字 | 64,000文字 |
| シーケンシング | なし | あり |
SCORM 2004では、lesson_status(学習ステータス)がcompletion_status(完了状態:completed / incomplete)とsuccess_status(成否状態:passed / failed)の2つに分離されました。これにより、「学習は完了したがテストは不合格」といった状態をより正確に表現できるようになっています。
7. SCORMが動くまでの流れ——5ステップで理解
ここまでの内容を踏まえて、SCORM教材が実際に動くまでの流れを5つのステップで整理します。
ステップ1: 教材の制作
HTMLやJavaScriptで教材コンテンツを作成します。オーサリングツール(iSpring Suite、Articulate Storylineなど)を使えば、プログラミングなしで制作可能です。教材の中には、SCORM APIを呼び出すためのJavaScriptコードが含まれています。
ステップ2: SCORMパッケージの作成
制作した教材ファイル一式にimsmanifest.xmlを追加し、ZIP形式で圧縮してSCORMパッケージを作成します。オーサリングツールを使っている場合は、「SCORM形式でエクスポート」の操作で自動的にパッケージが生成されます。
ステップ3: LMSへのアップロード
作成したSCORMパッケージ(ZIPファイル)をLMSにアップロードします。LMSはZIPを展開し、imsmanifest.xmlを読み取って教材の構成情報を登録します。この時点で、教材のタイトルや章立てがLMS上に表示されるようになります。
ステップ4: 学習者が教材を起動
学習者がLMS上で教材をクリックすると、LMSは教材をブラウザ上で起動します。教材が起動されると、まずInitialize(初期化)が実行され、教材とLMS間の通信が開始されます。前回の中断データがあれば、この時点で読み込まれます。
ステップ5: 学習データの記録
学習者が教材を進めるにつれて、学習ステータス・得点・学習時間などのデータがリアルタイムでLMSに送信されます。教材を閉じるとき(または学習完了時)にTerminate(終了)が実行され、すべてのデータが確定保存されます。管理者はLMSの管理画面から、学習者ごとの進捗や成績を確認できます。
8. まとめ
- SCORMの仕組みは3つ——コンテンツ・パッケージング、ランタイム通信、シーケンシング(SCORM 2004のみ)
- imsmanifest.xmlが教材の「目次」となり、LMSが教材の構成を認識する
- SCORM APIを通じて教材とLMSが自動的にデータをやり取りし、学習ステータスや得点が記録される
- SCORM 1.2と2004ではAPI名・データモデル・シーケンシングの有無が異なる
- 教材制作→パッケージング→LMSアップロード→学習者起動→データ記録の5ステップで動作する
SCORMの仕組みや教材制作について、ご不明な点やお困りのことがあれば、お気軽にご相談ください。eラーニング専門18年・3,000件超の実績を持つエレファンキューブが、貴社のSCORM導入・教材制作をサポートいたします。
株式会社エレファンキューブ
eラーニング教材制作の専門会社。2008年の創業以来、3,000件超の制作実績を持ち、SCORM 1.2 / SCORM 2004 / xAPI / cmi5など各種規格に精通。企画からLMS搭載まで、ワンストップで対応しています。
コーポレートサイト