SCORM 2004 ガイドライン
第 1.0 版

2010 年 7 月

日本イーラーニングコンソシアム

©2010 特定非営利活動法人日本イーラーニングコンソシアム

i

改訂履歴
日付

バージョン

改訂内容

2010 年 7 月

1.0

新規作成

ii

目次
1.

はじめに

1

2.

解説

2

2.1

CAM 関連2

2.1.1

起動 URL のパラメータ（追加予定）

2

2.1.2

複数オーガニゼーションの扱い（追加予定）

2

2.1.3

マニフェストファイル中のリソースの記述（追加予定）

2

2.2

RTE 関連3

2.2.1

API フレーム（追加予定）

3

2.2.2

インタラクションログ（１）

3

2.2.3

インタラクションログ（２）

6

2.2.4

インタラクションログ（３）

9

2.2.5

学習リソース種別と学習履歴の記録

10

2.3

シーケンシング関連

12

2.3.1

共有学習目標12

2.3.2

Use Current Attempt XX フラグ

15

2.3.3

Constrain Choice フラグ

19

2.3.4

Prevent Activation フラグ

21

2.4

ナビゲーション関連

22

UI の制御

22

2.4.1
2.5

25

その他

2.5.1

セキュリティ（１）

25

2.5.2

セキュリティ（２）273.

各社 LMS による SCORM 2004 コンテンツ実行結果

3.1

ソフトバンク BB「A’OMAI」

28
28

3.1.1

学習者機能によるコンテンツの実施結果

28

3.1.2

管理者機能での学習結果の表示

33

iii

3.2

リコーIT ソリューションズ「Learn@Stage」

35

3.2.1

学習者機能によるコンテンツの実施結果

35

3.2.2

管理者機能での学習結果の表示

42iv

1. はじめに本書は SCORM 2004 を中心に，SCORM 規格を利用する上で，問題となりそうな箇所の解説と，SCORM 2004 対応 LMS の動作の比較を行ったものです．今後，SCORM 2004 規
格が普及するにつれて，様々な課題が共有され，本書の内容が拡充されていくことが望まれます．
本書の執筆は日本 e ラーニングコンソシアムの活動の一環として行われたもので，以下の方に執筆にご協力いただきました（順不同，敬称略）．
山本 哲（ソフトバンク BB 株式会社 情報システム本部）
今 重太（リコーIT ソリューションズ(株) ＩＴソリューション事業部）
伊佐地 昭夫（CSK アドミニストレーションサービス）
仲林 清（千葉工業大学 情報科学部 情報ネットワーク学科）

12. 解説2.1

CAM 関連2.1.1

起動 URL のパラメータ（追加予定）

►

課題

►

規格

►

コンテンツ開発者へのお勧め►

LMS 開発者へのお勧め

2.1.2

複数オーガニゼーションの扱い（追加予定）

►

課題

►

規格

►

コンテンツ開発者へのお勧め►

LMS 開発者へのお勧め

2.1.3

マニフェストファイル中のリソースの記述（追加予定）

►

課題

►

規格

►

コンテンツ開発者へのお勧め►

LMS 開発者へのお勧め

2

2.2

RTE 関連2.2.1

API フレーム（追加予定）

►

課題

►

規格

►

コンテンツ開発者へのお勧め►

LMS 開発者へのお勧め

2.2.2
►

インタラクションログ（１）課題
インタラクションの記録方法におけるジャーナリング方式とステータス方式の違いは何でしょうか．
►

規格
SCORM2004 RTE では，インタラクションの記録方法について，ジャーナリング(journaling)とステータス(status)の２つの方式が定義されています．
ジャーナリング方式では，SCO は学習者が設問の回答などのデータをインタラクション
ごとに記録し，そのデータをインタラクション配列に追記します．この方式を使用することで，SCO 内での学習者の習熟過程を記録できます．
一方，ステータス方式では，SCO は学習者のインタラクション結果を上書きし，最新結果のみをインタラクション配列に記録します．
ジャーナリングとステータス方式の違いを，例題を元に説明します．
表 2.2.2a インタラクションログの例題
番号

問題

選択肢

正解

（Interaction ID）
問 1 (Q_01)

オーストラリアの首都はどこ

1 キャンベラですか？

2 シドニー1

3 ローザンヌ
問 2(Q_02)

問 3(Q_03)

ドイツの首都ベルリンとタイ

1 ベルリンの首都バンコクではどちらが2 バンコク

人口が多いですか？

3 ほぼ同じフィリピンの首都マニラはど

1 セブ島の島にありますか？

2 ミンダナオ島

323

3 ルソン島
問 4(Q_04)

イラクに隣接する国は次のう

1 トルコ

1,3,4

ちどこですか？（複数選択可） 2 アフガニスタン
3 イラン
4 サウジアラビア
上記の例題で，学習者が１問目に「2 シドニー」と回答し，後ほど「１ キャンベラ」を回答した場合，ジャーナリング方式では次のようなインタラクション配列となります．
SetValue("cmi.interactions.0.id","Q_01")
SetValue("cmi.interactions.1.id","Q_02")
SetValue("cmi.interactions.2.id","Q_03")
SetValue("cmi.interactions.3.id","Q_04")
SetValue("cmi.interactions.0.learner_response","2")←「2 シドニー」

SetValue("cmi.interactions.1.learner_response","2")
SetValue("cmi.interactions.2.learner_response","3")
SetValue("cmi.interactions.3.learner_response","[1,3,4]")
後からの回答分
SetValue("cmi.interactions.4.id","Q_01") ←n=4 を追記
SetValue("cmi.interactions.4.learner_response","1")←「1 キャンベラ」

表 2.2.2b ジャーナリング方式によるインタラクション配列結果
N

Interaction id

learner_response

0

Q_01

2

1

Q_02

2

2

Q_03

3

3

Q_04

[1,3,4]

4

Q_01

1

１問目を回答しなおしたため配列の５番目(n=4)に，１問目のインタラクションが追記されます．
同様な回答を，ステータス方式で記録すると以下のようなインタラクション配列となります．

4

SetValue("cmi.interactions.0.id","Q_01")
SetValue("cmi.interactions.1.id","Q_02")
SetValue("cmi.interactions.2.id","Q_03")
SetValue("cmi.interactions.3.id","Q_04")
SetValue("cmi.interactions.0.learner_response","2")←「2 シドニー」

SetValue("cmi.interactions.1.learner_response","2")
SetValue("cmi.interactions.2.learner_response","3")
SetValue("cmi.interactions.3.learner_response","[1,3,4]")
後からの回答分
SetValue("cmi.interactions.0.learner_response","1")

表 2.2.2c←「1 キャンベラ」（上書き）

ステータス方式によるインタラクション配列結果
N

Interaction id

learner_response

0

Q_01

1

1

Q_02

2

2

Q_03

3

3

Q_04

[1,3,4]

１問目の２回目以降の回答は上書きされるため，インタラクションは設問数と同じだけの個数になります．
なお，SCORM2004 ではインタラクション配列の最大長は 250 と定義されているためジャーナリング方式では 250 を超える回答を記録することはできません．また，ステータス方式でも 250 問を超える設問の回答結果を記録することはできません．
►

コンテンツ開発者へのお勧め
SCO の設計者は，以上のような２つの方式いずれかを使用してインタラクションの記録

形式を設計できます．ただし，記録したインタラクションデータをどのようにシステム上に表現するかは SCORM 規格の範疇外となっているため，それぞれの方式による記録結果の出力様式は，利用する LMS に依存します．したがって，SCO を設計する前に，LMS が
インタラクション記録をどのように処理しているのかを確認する必要があります．一般的な LMS ではステータス方式のみをサポートしている場合が多いようです．
►

LMS 開発者へのお勧め
LMS 開発者は，いずれの方式でもインタラクション結果が正確に表現されるように履歴

5

出力機能を設計すべきです．
2.2.3►

インタラクションログ（２）課題
学習の理解度を確認するクイズなどでは，各設問を固定順ではなくランダム順に出題するケースがあります．また，あらかじめ一定の問題数をプールし，受講ごとにプールした問題のうち何問かを出題するケースもあります．SCORM2004 RTE では，このようなランダム出題の際のインタラクションデータ形式を特に明記していません．
►

規格
SCORM2004 規格ではランダム出題時のインタラクション記録方式について定義していませんが，一般的に２つの方式が考えられます．１つめは，1)回答した設問のインタラクシ
ョンのみを単純に記録，もう１つは，2)プールした設問全体をインタラクションとして記録する方式です．
インタラクションログ(1)の例題で 4 問中 2 問を，次のような順番で同一学習者に対して複数回ランダムで出題し，回答したとすると，
表 2.2.3a 例題のランダム出題内容
回答回

出題設問

回答結果

1

問 1，問 31，3

2

問 4，問 3

[1,3,4]，3

3

問 2，問 42，[1,3,4]

方式 1)の，各回答回ごとに，回答した設問のみのインタラクション結果を出力する場合，
インタラクションデータ内容は次のようになります．
回答回＝1 回目
SetValue("cmi.interactions.0.id","Q_01")
SetValue("cmi.interactions.1.id","Q_03")
SetValue("cmi.interactions.0.learner_response","1")
SetValue("cmi.interactions.1.learner_response","3")
回答回＝2 回目
SetValue("cmi.interactions.0.id","Q_04")
SetValue("cmi.interactions.1.id","Q_03")
SetValue("cmi.interactions.0.learner_response","[1,3,4]")SetValue("cmi.interactions.1.learner_response","3")6

回答回＝3 回目
SetValue("cmi.interactions.0.id","Q_02)
SetValue("cmi.interactions.1.id","Q_04)
SetValue("cmi.interactions.0.learner_response","2")
SetValue("cmi.interactions.1.learner_response","[1,3,4]")
表 2.2.3b ランダム出題時のインタラクションデータ（回答分のみ記録）
回答回

nInteraction id

learner_response

1

0

Q_01

1

1

Q_03

3

0

Q_04

[1,3,4]

1

Q_03

3

0

Q_02

2

1

Q_04

[1,3,4]2
3

この方式では，回答分のみ記録されますので，全設問の回答結果が記録されるまでプー
ル分を含めた全設問数が判断できません．この例では 3 回目の回答まで設問 2 の結果が出力されていません．SCORM2004 では SCO 中の最大インタラクション ID 数を取得する方法は提供されていないため，問題数が多い場合に設問数を正確に把握するには，全問の回答が記録されるまで待つ必要があります．
一方，2)の方式では次のようなインタラクションデータ内容になります．
回答回＝1 回目
SetValue("cmi.interactions.0.id","Q_01")
SetValue("cmi.interactions.1.id","Q_02")
SetValue("cmi.interactions.2.id","Q_03")
SetValue("cmi.interactions.3.id","Q_04")
SetValue("cmi.interactions.0.learner_response","1")← Q_01 に回答

SetValue("cmi.interactions.0.timestamp","2009-07-25T12:00:00")
SetValue("cmi.interactions.2.learner_response","3")← Q_03 に回答

SetValue("cmi.interactions.2.timestamp","2009-07-25T12:01:00")
回答回＝2 回目
SetValue("cmi.interactions.0.id","Q_01")
SetValue("cmi.interactions.1.id","Q_02")
SetValue("cmi.interactions.2.id","Q_03")

7

SetValue("cmi.interactions.3.id","Q_04")
SetValue("cmi.interactions.2.learner_response","[1,3,4]")← Q_03 に回答

SetValue("cmi.interactions.2.timestamp","2009-07-25T12:10:00")
SetValue("cmi.interactions.3.learner_response","3")← Q_04 に回答

SetValue("cmi.interactions.3.timestamp","2009-07-25T12:11:00")
回答回＝3 回目
SetValue("cmi.interactions.0.id","Q_01")
SetValue("cmi.interactions.1.id","Q_02")
SetValue("cmi.interactions.2.id","Q_03")
SetValue("cmi.interactions.3.id","Q_04")
SetValue("cmi.interactions.1.learner_response","2")← Q_02 に回答

SetValue("cmi.interactions.1.timestamp","2009-07-25T12:30:00")
SetValue("cmi.interactions.3.learner_response","[1,3,4]")← Q_04 に回答

SetValue("cmi.interactions.3.timestamp","2009-07-25T12:31:00")

表 2.2.3c

ランダム出題時のインタラクションデータ（未出題分を含む）

回答回

nInteraction id

learner_response

timestamp

1

0

Q_01

1

回答日時

1

Q_02

2

Q_03

3

Q_04

※

0

Q_01

※

1

Q_02

※

2

Q_03

3

回答日時

3

Q_04

[1,3,4]

回答日時

0

Q_01

1

Q_02

2

Q_03

3

Q_04

2

3

※
3

回答日時

※
2

回答日時
※

[1,3,4]

回答日時※SCORM2004 では timestamp が未設定の場合，その設問は出題されなかったことを示します．
この方式では，全問回答を待つことなく，1 回分のインタラクションデータで全問数を判断することができます．ただし，未出題分の結果も含みますので毎回の送信データ量が 1)8の方式よりも増えることになります．
►

コンテンツ開発者へのお勧め
インタラクションログ(1)の方式と同様，記録したインタラクションデータがどのようにシステム上に表現されるかは利用する LMS に依存するため，SCO を設計する際は事前にLMS 側の振る舞いについて確認することが必要です．
►

LMS 開発者へのお勧め
LMS 開発者は，いずれの方式でもインタラクション結果が正確に表現されるように履歴出力機能を設計すべきです．
2.2.4►

インタラクションログ（３）課題
インタラクションタイプが「選択」，「マッチング形式」などの設問では，回答は複数の選択肢から選ぶことになります．この場合，選択肢の並び順は固定が一般的ですが，並び順がシャッフルされる場合も考えられます．
択一形式の設問ではインタラクションデータの learner_response にも単一の回答結果が設定されますが，複数選択，マッチング形式では，複数の選択結果が [1,3,4] のように [,]のデータ形式で learner_response に記録されることになります．SCO は学習者の選択結果
を，シャッフルされたままの並びで記録するか，あるいは回答 ID 順などで並べ替えて記録することができます．
表 2.2.4a 選択肢のシャッフル（1 回目）
番号

問題

選択肢

正解

（Interaction ID）
問 4(Q_04)

イラクに隣接する国は次のう

1 サウジアラビア

1,3,4

ちどこですか？（複数選択可） 2 アフガニスタン
3 イラン
4 トルコ
SetValue("cmi.interactions.3.learner_response","[1,3,4]")
表 2.2.4b 選択肢のシャッフル（2 回目）
番号

問題

選択肢

正解

（Interaction ID）
問 4(Q_04)

イラクに隣接する国は次のう

1 アフガニスタン

ちどこですか？（複数選択可） 2 サウジアラビア

9

2,3,4

3 トルコ
4 イラン
SetValue("cmi.interactions.3.learner_response","[3,4,2]")
この例のように，シャッフルされたままの並びで記録すると，正解でありながら文字列
としては値がそれぞれ異なっています．LMS によっては，このような回答結果をそれぞれ別の回答だと判断し，データ集計をおこなうと実際の判定結果と異なる値を示す可能性が
あります．
►

規格
SCORM2004 では，learner_response における [,]で示される複数回答結果の順番は特に規定していません．
►

コンテンツ開発者へのお勧め
回答結果をシャッフルしたままでインタラクションログに記録することは，規格上は間違いではありませんが，LMS によって判断が異なる可能性があるため，回答結果は任意の回答 ID 順などで揃え，回答ごとに正解の値が不変となるようにするのがお勧めです．
また，
インタラクションログ(1)の方式と同様，記録したインタラクションデータがどのようにシステム上に表現されるかは，利用する LMS に依存するため，SCO を設計する際は，事前に LMS 側の振る舞いについて確認することが必要です．
2.2.5►

学習リソース種別と学習履歴の記録

課題
SCO が LMS に送信した学習状態（進捗状態や習得状態）がシーケンシングに反映される条件を教えてください．アセットの学習状況はどのように扱われるのでしょうか？
►

規格
SCORM における学習リソースは，LMS と RTE による通信を行う SCO と，通信を行わないアセットに分類されます．一方，SCORM 2004 から導入されたシーケンシング機能は
学習リソースから送られてくる学習状態の値をもとにして次に提示する学習リソースを決定します．ここでは，SCO やアセットの学習状態がシーケンシングにおいてどのように扱われるかを見て行きます．
SCO やアセットの学習状態のシーケンシングでの扱いには，TrackedCompletion Set by Content
Objective Set by Contentという制御フラグが関係します．これらの関係は以下のように整理できます．
10

表 2.2.5a Tracked, Completion Set by Content とトラッキング情報の関連
TrackedCompletion Set
by Content
True

True
False
True
False
False

cmi.completion_status

アテンプト完了状態

学習リソースが値を設定

学習リソースの設定値

学習リソースが値を設定しない未定

学習リソースが値を設定

学習リソースの設定値

学習リソースが値を設定しない完了

学習リソースが値を設定
学習リソースが値を設定しない未定

学習リソースが値を設定
学習リソースが値を設定しない

表 2.2.5b Tracked, Objective Set by Content とトラッキング情報の関連
TrackedObjective Set
by Content
True

True
False
True
False
False

cmi.success_status

学習目標習得状態

学習リソースが値を設定

学習リソースの設定値

学習リソースが値を設定しない未定

学習リソースが値を設定

学習リソースの設定値

学習リソースが値を設定しない習得

学習リソースが値を設定
学習リソースが値を設定しない
学習リソースが値を設定

未定

学習リソースが値を設定しない

まず，Tracked が False の場合は，そのアクティビティの完了状態，習得状態は，シーケ
ンシングにおいて全て未定（unknown）として扱われます．Tracked のデフォルト値は True
で，この場合は，学習リソースが設定した cmi.completion_status，cmi.success_status がシーケンシングの完了状態，習得状態に反映されるのが原則です．
例外は Completion Set by Content，Objective Set by Content が False（デフォルト）
で，学習リソースが cmi.completion_status，cmi.success_status の値を設定しなかった場
合です．学習リソースがアセットの場合はこの状況に該当します．この場合，シーケンシ
ングでは，このアクティビティが完了，習得したものとして扱います．つまり，学習リソ
ースがアセットの場合などで，cmi.completion_status，cmi.success_status の値が設定されなかった場合は，このアクティビティを閲覧すると，自動的に「完了」，「習得」したものと見なされるのです．
逆に，Completion Set by Content，Objective Set by Content が True で，学習リソース
が cmi.completion_status，cmi.success_status の値を設定しなかった場合は，このアクテ
11ィビティの完了状態，習得状態は未定となります．
な お ， マニ フ ェス トフ ァ イル の <resource>タ グに SCO と アセ ッ トの 指 定を 行 う
adlcp:scormType という属性がありますが，この値は上記の動作に関係しません．
►

コンテンツ開発者へのお勧め
上記のうち，特に Completion Set by Content，Objective Set by Content の意味は誤解しやすいところです．これらが True という意味は，学習リソースが完了状態や習得状態を必ず設定する，ということではなく，学習リソースが設定した値を完了状態や習得状態に反映するということです．学習リソースが値を設定しなければ，完了状態や習得状態は未定となります．
逆に Completion Set by Content，Objective Set by Content が False という意味は，学習リソースが設定した値を無視する，ということではありません．この場合でも，学習リ
ソースが値を設定した場合はその値が完了状態や習得状態に用いられます．学習リソース
が値を設定しなかった場合に，完了状態や習得状態が自動的に「完了」，「習得」に設定するのがこれらの制御フラグの役割です．
これらの関係に注意してコンテンツを作成して下さい．また，マニフェストファイルでの SCO とアセットの指定は無関係であることにも注意して下さい．
►

LMS 開発者へのお勧め
特にありません．上記の関係を良く理解して実装を行ってください．

2.3

シーケンシング関連

2.3.1

共有学習目標►課題

共有学習目標(Shared Global Objectives)のスコープの指定方法はどうなっているでしょう
か．

►

規格

コンテンツのマニフェストファイルの設定の記述により，共有学習目標(Shared Global
Objectives)のスコープを指定することができます．具体的には要素<organization>の属性
adlseq:objectivesGlobalToSystem に true/false を設定します．何も記述しない場合は trueになります．
true の場合，共有学習目標は LMS 内のすべてのコンテンツのすべての Activity
Tree(organization)で共有されます．もちろん共有学習目標の ID はその範囲でユニークである必要があります．

12

[ objectivesGlobalToSystem=true ]
ユーザー1

教材1
organization1
item1
item2
教材2

Shared Global Objectives
ユーザー1,
すべての教材,すべてのorganization,
すべてのitemから参照可能organization1
item1
item2

13

false の場合，共有学習目標は Activity Tree(organization)ごとに存在し，その範囲でしか参照されません．
いずれの場合も共有学習目標は学習者ごとに存在するため，別の学習者には影響はありません．

[ objectivesGlobalToSystem=false ]
ユーザー1
教材1

organization1
item1
item2

Shared Global Objectives
ユーザー1,
教材1,
organization1,
すべてのitemから参照可能教材2

organization1
item1
item2

►

Shared Global Objectives
ユーザー1,
教材2,
organization1,
すべてのitemから参照可能コンテンツ開発者へのお勧め

通常 e ラーニングではそれぞれのコンテンツが独立していて他のコンテンツに影響しない方が運用しやすいと思います．その場合コンテンツの独立性を考えると，マニフェストに，共有学習目標を Activity Tree(organization)の範囲に限定する設定を記述する必要があります．
マニフェストへの記述例：<organizations default="A_00"><organization identifier="A_00" adlseq:objectivesGlobalToSystem="false">
共有学習目標の ID は他のすべての ID に対してユニークな値である必要があります．データ型は規格上は anyURI となっているため，以下のような書式にする必要があります．
また，漢字や特殊記号は URL エンコードを行う必要があります．
http://tools.ietf.org/html/rfc3986 の URI の例）
14ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
mailto:John.Doe@example.com
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
ただし実際には anyURI でなくてもユニークな値にさえすればよい LMS も少なくなく，その場合は GUID などを利用して ID を作成すれば重複することはありません．
設定例） OBJ-3DA6D20C-7544-4003-A114-756BD324A238►

LMS 開発者へのお勧め

共有学習目標については，マニフェストの記述になるため，コンテンツ開発者側の対応となります．LMS としては，共有学習目標を，学習者ごと，かつ，Activity Tree(organization)ごとに持つ場合と，学習者ごとで Activity Tree(organization)に制限されずに持つ場合の両方に対応している必要があります．

2.3.2
►

Use Current Attempt XX フラグ

課題
Use Current Attempt Objective Information と Use Current Attempt Progress

Information という制御モードがありますが，何のためのものなのでしょうか？使い方がよ
くわかりません．
►

規格
SCORM 2004 SN では，Use Current Attempt Objective Information に関して以下のよ

うな表で説明しています．Use Current Attempt Progress Information に関しても同様の表が用意されています．

15

表 2.3.2a Use Current Attempt Objective Information に基づく
トラッキング情報の評価
親 の UseCurrent
Attempt
Objective
Information

True

False

アクティビティ 記録されたの学習目標情報 学習目標情がいつ記録され 報と進捗度
たか

学習目標情報がどのように評価されるか
ア ク テ ィ ビ テ ィ の プ 親のロールアッレ，ポスト，終了シー プルール
ケンシングルール

True
クラスタの現在
Falseの試行の前
Unknown
True
クラスタの現在
Falseの試行中
Unknown
True
関係なし
False
Unknown

True
False
Unknown
True
False
Unknown
True
False
Unknown

Unknown
True
False
Unknown
True
False
Unknown

この表を見ると，親の Use Current Attempt Objective Information の True/False の値（第 1 列）によって，学習目標が記録されたタイミングをどう考えるか（第 2 列）
，それがシーケンシングルール（第 4 列）
，ロールアップルール（第 5 列）でどのように評価されるのか，に影響を与えることが分かります．
これは何を意味しているのでしょうか？図 2.3.2a のような状況を考えてみます．3 つのテスト問題の子アクティビティから構成されているクラスタがあります．全部の子アクテ
ィビティのテスト問題が合格になったらクラスタ全体が合格になるとします．1 回目の挑戦
で，アクティビティ 1.1 と 1.3 が合格，アクティビティ 1.2 が不合格になったとします．では，2 回目の挑戦ではアクティビティ 1.2 だけを再度受験して合格すれば，クラスタ全体も合格になるのでしょうか？あるいは，2 回目の挑戦でもアクティビティ 1.1，1.2，1.3 全てに挑戦して合格しなくてはならないのでしょうか？
これはどちらが正しいということは無く，教材作成者がどちらの考え方でテストを作成するかに依存してきます．そして SCORM 2004 ではこのどちらの動作も選択できるようになっています．

16

1 回目 F1.

1 回目

2 回目 ？

1.1

1.2

1.3

T

F

T

図 2.3.2a 三つの子アクティビティからなるクラスタ
まず，2 回目の挑戦で，1 回目の結果はまったく考慮せず，全アクティビティ全てに再度合格して欲しい場合を考えます．この場合は，Use Current Attempt Objective Information
を True にします．これは，Use Current Attempt Objective Information に何も指定しない場合のデフォルトの設定です．この場合，親のアクティビティ（クラスタ）の学習目標
習得状態は，子のアクティビティの現在のアテンプト（試行）の学習目標習得状態から決定されます．表 2.3.2a で，親のロールアップルールの欄を見ると，子のアクティビティの学習目標習得状態が，クラスタの現在の試行中に記録された場合は，その値がロールアッ
プルールの評価に使用されますが，クラスタの現在の試行の前に記録された場合はUnknown が評価に使用されることがわかります．

Use Current

1.

= True

1 回目 F
2 回目 U

1.1

1.2

1.3

1 回目

T

F

T

2 回目

T

T

U

図 2.3.2b Use Current Objective Information が True の場合
図 2.3.2b にこれを示します．まず，1 回目の挑戦（アテンプト）で，アクティビティ 1.1と 1.3 の学習目標習得状態が True，アクティビティ 1.2 が False になったとします．クラスタの学習目標習得状態は，子のアクティビティの学習目標習得状態の And で False になります．次に 2 回目のアテンプトで，子のアクティビティ 1.1 と 1.2 の学習目標習得状態がTrue になったとします．この段階で，アクティビティ 1.3 の 2 回目のアテンプトはまだ実行されておらず，学習目標習得状態は Unknown（未定義）として評価されます．このため，
クラスタ全体の学習目標習得状態も Unknown（未定義）となります．従って，アクティビ

17

ティ 1.3 は 1 回目に合格していますが，再度挑戦しないとテスト全体に合格することはできません．
一方，2 回目の挑戦で，1 回目に不合格のアクティビティだけに合格すればクラスタ全体を合格とするのであれば，Use Current Attempt Objective Information を False にします．
この場合，子のアクティビティに記録された最新の学習目標習得状態をロールアップルー
ルで評価します．表 2.3.2a で，親のロールアップルールの欄を見ると，子のアクティビテ
ィの学習目標習得状態が，クラスタの現在の試行中に記録されたか，それ以前に記録されたかによらず，子のアクティビティの最新の学習目標習得状態がロールアップルールの評価に使用されます．

Use Current

1.

= False

図 2.3.2c

1 回目 F
2 回目 T

1.1

1.2

1.3

1 回目

T

F

T

2 回目

T

T

U

Use Current Objective Information が False の場合

この様子を図 2.3.2c に示します．先ほどと同様，子のアクティビティ 1.1, 1.2, 1.3 を順次実行して，学習目標習得状態が True, False, True となったとします．図 2.3.2c の 1 回目の状態がこれです．クラスタの学習目標習得状態は，子のアクティビティの学習目標習得状
態の And で False になります．
次にクラスタの 2 回目のアテンプトを開始し，子のアクティビティ 1.1，1.2 を順次実行
して学習目標習得状態が True になったとします．これが図 2.3.2c の 2 回目の状態です．このとき子のアクティビティ 1.3 は，2 回目は実行されていませんが，最新の学習目標習得状
態として 1 回目の True が記録されています．つまり，子のアクティビティ 1.1 と 1.2 の最新の学習目標習得状態は 2 回目の結果の True，子のアクティビティ 1.3 は 2 回目がまだ実行されていないので，最新の学習目標習得状態は 1 回目の True です．従って，親のアクティビティ 1 の学習目標習得状態は True になります．このように，Use Current Attempt
Objective Information を False にすると，1 回目の結果も勘案して，テスト全体の結果を決めることができます．
以上のように Use Current Attempt Objective Information を用いると，親のアクティビ
ティ（クラスタ）の学習目標習得状態の値を，子のアクティビティの現在のアテンプトの学習目標習得状態から決定するのか，実際に記録された最新の学習目標習得状態から決定

18

するのかを切り替えることができます．
なお，表 2.3.2a から，各アクティビティのシーケンシングルールの評価は，親の Use
Current Attempt Objective Information の値によらず，実際に記録された最新の学習目標
習得状態を用いることが分かります．つまり，現在の試行で子アクティビティが実行されておらず，今回の試行の学習目標習得状態が Unknown（未定義）の場合は，前回の試行の学習目標習得状態を用い，今回の試行で子アクティビティが実行されている場合は，その結果を用います．例えば，Skip シーケンシングルールが設定されているような場合は，今回の試行で子アクティビティが未実行だとしたら，前回の試行の学習目標習得状態を用いることになります．
►

コンテンツ開発者へのお勧め
クラスタ（親アクティビティ）の状態を，子アクティビティのどのタイミングの状態から決定するのかに注意して，Use Current Attempt Objective Information と Use Current
Attempt Progress Information を True にするのか False にするのかを決定して下さい．
クラスタに入るたびに，今までの結果を無視して，子アクティビティの結果を Unknown（未定義）と評価したいのであれば True にします．これはデフォルトの動作です．一方，
前回までの最新の結果を勘案したいのであれば False にします．この場合には，不合格のアクティビティだけ受検すれば OK という動作になります．
►

LMS 開発者へのお勧め
特にありません．Use Current Attempt Objective Information と Use Current Attempt

Progress Information の上記の役割を良く理解して，シーケンシングルール，ロールアッ
プルールの実装を行ってください．
2.3.3►

Constrain Choice フラグ

課題
Constrain Choice という制御モードがありますが，何のためのものなのでしょうか？使

い方がよくわかりません．
►

規格
SCORM 2004 SN では，Constrain Choice は以下のように説明されています．
Constrain Choice が True の場合，アクティビティツリー内で論理的にひとつ「次」
または「前」のアクティビティ，および，そのアクティビティの子孫だけが Choiceの対象となる．
この説明だけではよくわかりませんので具体例で見てみましょう．図 2.3.3a のようなア

クティビティツリーを想定します．クラスタ 1.1，1.2 および 1.4 では Choice が True に設定されていて，クラスタ内を自由に移動することができます．一方，1.1 から 1.4 までのア
クティビティは自由に学習するのでなく，順番に学習して欲しいとします．

19

Choice: False
Choice Exit: True
Flow: True
Choice: True
Choice Exit: True
Flow : True
Constrain Choice: True

1.

1.1

1.1.1

1.1.2

Choice: True
Choice Exit: False
Flow: True
Constrain Choice: True

1.2

1.1.3

1.2.1

1.3

1.2.2

1.4

1.4.1

1.4.2

1.4.3

Choice: True
Choice Exit: False
Flow: True
Const rain Choice: True

図 2.3.3a Constrain Choice
このとき，
以下のような問題が生じます．
クラスタ 1.1 の中（アクティビティ 1.1.1〜1.1.3）にいる時に，クラスタ外の Choice が True に設定されているクラスタ（例えばクラスタ 1.4）があると，その中のアクティビティ（アクティビティ 1.4.1〜1.4.3）に自由に移動できてしまうのです．これでは，1.1 から 1.4 までのアクティビティは順番に学習して欲しいという要求条件が満たせません．
Constrain Choice はこのような要求を満たすためのものです．すなわち，Choice によって Constrain Choice が True のアクティビティを経由して移動する場合，Constrain Choiceが True のアクティビティのひとつ「次」または「前」のアクティビティ，および，そのア
クティビティの子孫だけに移動することが可能となります．ですから，今の例では，クラスタ 1.1 の中（アクティビティ 1.1.1〜1.1.3）からクラスタ 1.4 の中（アクティビティ 1.4.1〜1.4.3）に移動しようとしても，アクティビティ 1.4 は Constrain Choice が True のアク
ティビティ 1.1 のひとつ「次」ではありませんので，Choice による移動は禁止されます．
一方，クラスタ 1.2 の中（アクティビティ 1.2.1〜1.2.2）に Choice で移動することは可能
です．
►

コンテンツ開発者へのお勧め
特にありません．必要に応じて，動作を良く理解して使用して下さい．

20

►LMS 開発者へのお勧め
Constrain Choice の動作は SCORM 2004 SN の疑似コードで規定されています．疑似

コードに従って実装して下さい．
2.3.4►

Prevent Activation フラグ

課題
Prevent Activation という制御モードがありますが，何のためのものなのでしょうか？使

い方がよくわかりません．
►

規格
SCORM 2004 SN では，Prevent Activation は以下のように説明されています．
Prevent Activation が True の場合，当該アクティビティの子孫への Choice リク
エストでアクティビティが起動されてはならない．すなわち，Prevent Activation
が True のアクティビティの子孫は，Prevent Activation が True のアクティビテ
ィに到達したあとでなければ配信されない．
この説明だけではよくわかりませんので具体例で見てみましょう．図 2.3.4a のようなア

クティビティツリーを想定します．クラスタ 1.2，1.2.2 は Choice が True で内部を自由に移動できるようになっています．一方，このクラスタの中へは，アクティビティ 1.1 などから一気に中に入るのでなく，クラスタ 1.2 がアクティブになってから（例えば，アクティビ
ティ 1.2.1 を学習してから）移動して欲しいとします．
このとき，以下のような問題が生じます．クラスタ 1.2 の外にいる時でも，クラスタ 1.2，
1.2.2 の Choice が True に設定されているので，クラスタ 1.2，1.2.2 の中のアクティビティに自由に移動できてしまうのです．これでは，クラスタ 1.2 がアクティブになってからクラスタ 1.2.2 の中のアクティビティを学習して欲しいという要求条件が満たせません．
Prevent Activation はこのような要求を満たすためのものです．すなわち，Choice によって Prevent Activation が True のアクティビティを経由して移動する場合，そのアクティ
ビティが既にアクティブになっていなくてはならないのです．ですから，今の例では，アクティビティ 1.1 からクラスタ 1.2.2 の中（アクティビティ 1.2.2.1〜1.2.2.3）に移動しようとしても，アクティビティ 1.2 の Prevent Activation が True で，一方，アクティビティ
1.2 はまだアクティブではありませんので，Choice による移動は禁止されます．一方，アクティビティ 1.2.1 からクラスタ 1.2.2 の中（アクティビティ 1.2.2.1〜1.2.2.3）に Choice で移動する場合は，アクティビティ 1.2 がすでにアクティブですので移動可能です．

21

Choice: True
Choice Exit: True
Flow: True
Prevent Activation: True

1.

1.1

1.2

1.2.1

1.3

1.2.2

Choice: True
Choice Exit: True
Flow: True

1.2.2.1 1.2.2.2 1.2.2.3
図 2.3.4a Prevent Activation►

コンテンツ開発者へのお勧め
特にありません．必要に応じて，動作を良く理解して使用して下さい．

►

LMS 開発者へのお勧め
Prevent Activation の動作は SCORM 2004 SN の疑似コードで規定されています．疑似

コードに従って実装して下さい．

2.4

ナビゲーション関連

2.4.1

UI の制御►課題
ナビゲーションユーザインターフェース（「次に進む」，「前に戻る」などのボタン，以下UI）の扱いに関して，コンテンツと LMS の役割分担や責任範囲を説明して下さい．
►

規格
SCORM 1.2 では UI の扱いは LMS に任されており，実装は各社の LMS によってまちまちでした．SCORM 2004 では，UI の扱いが規定され，コンテンツから UI を制御することが可能になるとともに，LMS で対応が必要な機能が定められました．これらを以下に示します．
コンテンツ（SCO）からのナビゲーションコマンドの発行
コンテンツ（マニフェストファイル）での UI の表示制御

22

シーケンシングと連携した UI の表示制御
各々について以下に説明します．
（１） コンテンツ（SCO）からのナビゲーションコマンドの発行
SCORM 2004 での最も主要な改善点がこの機能です．SCO は API 関数を用いてcontinue, previous などのナビゲーションコマンドを発行することができます．例えば，
SCO が SetValue(“adl.nav.request”, “continue”) を実行すると，continue コマンドがSCO から LMS に送信されます．その後，SCO が Terminate() を呼び出すと LMS は
continue コマンドを実行します．これによって，LMS が提供する UI を学習者が操作したのと同様に continue コマンドによるシーケンシング動作が行われます．このように，API 関数を用いてナビゲーションコマンドを発行することができますので，SCO 作成者
は，SCO 画面中に独自に UI を設けたり，その他の条件（テストの採点結果やシミュレーションの実施結果）に応じて自由にナビゲーションコマンドを発行することができます．
SCORM 2004 第 4 版では，“continue” の他に，“previous”, “choice {target}”, “jump{target}”, “abandon”, “abandonAll”, “exit”, “exitAll”, “suspendAll”というコマンドを発行することが可能になっています．ここで {target} は，飛び先のアクティビティの IDです．
SetValue によるコマンドの送信は何回でも行うことができ，最後に送信したものがTerminate()の際に実行されます．コマンドとして“_none_”を送信するとコマンドが取り消され，Terminate()の際に何も実行されません．
（２） コンテンツ（マニフェストファイル）での UI の表示制御
上記のように SCO 中に UI を設けることが可能となると，LMS が表示する UI が混乱を招く可能性があります．すなわち，同じ機能で異なるデザインの UI が表示されることで，学習者がどちらの UI を用いればよいのか迷ってしまう可能性があります．
そこで，LMS の UI の表示／非表示をマニフェストファイルで指定することができるようになっています．例えば，以下の例では，LMS は ITEM3 を提示する際，“continue”と “previous” の UI を非表示にしなくてはなりません．
<organization><item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"><title>Content 1</title><adlnav:presentation><adlnav:navigationInterface><adlnav:hideLMSUI>continue</adlnav:hideLMSUI><adlnav:hideLMSUI>previous</adlnav:hideLMSUI></adlnav:navigationInterface></adlnav:presentation>23

</item></organization>“continue” と “previous” 以 外 に “abandon”,“abandonAll”,“exit”,“exitAll”,“suspendAll”の UI の表示／非表示をマニフェストファイルで指定することができます．
また，上記の例では，<item>タグ中に isvisible という属性があります．この属性の値
が false の場合，LMS は当該のアクティビティを目次に表示してはいけません．ただし，
このアクティビティの配下のアクティビティは非表示とはなりません．また，isvisibleの値が false の場合，目次から非表示となるだけで，シーケンシングの対象にはなり得ます．アクティビティを Choice の対象としたくない場合は，If always then hide fromchoice というシーケンシングルールを記述します．
（３） シーケンシングと連携した UI の表示制御
SCORM 2004 のシーケンシングルールを適用すると，特定のナビゲーションコマンドが実行できない場合が出てきます．最も簡単な例として，Flow 制御モードが false の場
合，“continue”と“previous”は実行してもエラーになります．このように UI を操作してエラーが発生すると，学習者はなぜエラーが起きたのかがわからずに混乱してしまいま
すから，最初から UI を操作できないようにしておく必要があります．
規格では，以下のような場合に LMS は対応する UI の操作を禁止しなくてはならないとされています．
continue を禁止
Flow 制御モードが false のクラスタ内の場合
previous を禁止
Flow 制御モードが false のクラスタ内の場合
Forward Only 制御モードが true のクラスタ内の場合
previous でアクティビティツリーから出てしまう場合
以下のいずれかに該当するアクティビティに対する choice を禁止
Disabled ないし Limit Condition が成り立つアクティビティおよびその子孫
全体
Forward Only が True のクラスタで，カレントアクティビティより後方のア
クティビティ
カ レ ン トア ク テ ィビ テ ィよ り 前方 の アク テ ィビテ ィ で ，Stop Forward
Traversal ルールが成り立つアクティビティが間にある場合
isVisible が False のアクティビティ
Hidden from Choice が成り立つアクティビティおよびその子孫全体
カレントアクティビティの先祖の Choice Exit が false のため，Choice による選択が禁止されるアクティビティおよびその子孫全体
また，同様に，LMS は SCO に対してもナビゲーションコマンドの実行可否を伝える

24

必要があります．そうしないと，SCO が表示している UI を操作した結果，ナビゲーションコマンドが実行されてエラーが発生し，学習者が混乱してしまうことになります．
このための機能として，SCO は GetValue(“adl.nav.request_valid.continue”)という形のAPI 関数呼び出しを行うことができます．この関数の返り値が false の場合，continue
ナビゲーションコマンドを実行するとエラーが発生することを示しています．“continue”の他に，“previous”, “choice {target}”, “jump {target}”continue の実行可否を調べることができます．
►

コンテンツ開発者へのお勧め
UI の制御は，学習者が混乱しないために重要な要素です．
SCO で UI を提供する場合は，上に記述した機能を活用して，適切に UI の制御を行うことが望まれます．一方で，UI の表示／非表示の制御は LMS にとって負荷が高く，実装も難しい機能になります．
特に choiceに対してエラーが起きるか起きないかを，事前に正確に把握することは困難な場合があります．LMS によって表示／非表示の動作が異なってしまう可能性も有りますので，複雑なシーケンシングルールと choice の組み合わせは避けた方が無難と考えられます．
また，
LMS
はナビゲーションコマンドの実行可否の問い合わせに対して true, false 以外に unknownを返却する場合があります．これは，ナビゲーションコマンド実行によってエラーが起きるかどうかを LMS が決定できないことを示しています．このような場合は，コマンドを実行しないか，実行前に警告メッセージを学習者に表示するなどの対処が考えられます．
►

LMS 開発者へのお勧め
上記のように UI の制御は，学習者が混乱しないために重要な要素ですので，可能な限り

適切に UI の制御を行うことが必要です．一方で，UI の表示／非表示の制御は負荷が高く，実装も難しい機能になります．規格書でも，SCO に対するナビゲーションコマンド実行可否の通知は「推奨される」という表現になっています．特に，Choice, Jump の実行可否は全てのアクティビティに対して行う必要は無く，また，応答時間を向上するため，確認結
果をキャッシュするなどの方策が推奨されています．実用的に問題にならない範囲で，できるだけ正しく機能を実装することが求められます．もし，ナビゲーションコマンドの実
行可否が決定できない場合は，unknown を SCO に返却することが望ましいと考えられま
す．

2.5

その他

2.5.1

セキュリティ（１）►課題
一般的に SCO はウェブサーバ上に格納された 1 セットの静的な HTML および他のファ

イルから構成されて，学習者へ提供されます．そのため，学習者がファイルのソースコー

25

ドを見ることができます．もし，学習者が HTML に精通した人であれば HTML ファイルのソースを調べることで，評価の正解データを見つけるかもしれません．
参考:Bill Blackmon 著
Securing Your Assessments Excerpt from Section 9 of the Carnegie Mellon Best
Practices Guide for the Design and Development of SCORM Assessments►

規格

SCORM ® Content Aggregation Model (CAM)<dataFromLMS>要素:<item>が表わすリソース（SCO）が起動後に利用する初期化データを提供します．
SCORM ® Run-Time Environment (RTE)

cmi.launch_data データモデル要素は，その SCO が初期化に利用できる SCO 特定のデータを提供します．

►

コンテンツ開発者へのお勧め
テストデータを安全に保管する方法として，各テストデータを別の HTML ファイルへ保存して，cmi.launch_data データモデル要素を使用してテストデータ用 HTML ファイル名
を送信する方法があります．この方法により，学習者は HTML のソースファイルから正解
データを見つけることができなくなります．
マニフェストファイル サンプル：<item identifier="ITEM-1" identifierref="RES-1"><title>Sample Assessment</title><adlcp:dataFromLMS>hidden_assessment.html</adlcp:dataFromLMS></item>スクリプト サンプル：<frameset rows="*"><script language="javascript">
var assessment_file = doGetValue("cmi.launch_data" );document.write( "<frame src=¥"" + assessment_file + "¥" name=¥"mainFrame¥" />" );</script></frameset>26

2.5.2►

セキュリティ（２）課題
最近の Web ブラウザには開発者向けに JavaScript をデバッグする機能が用意されているものがあります．もし，学習者がこの機能を利用すると JavaScript 実行時のデータを閲覧でき，
下記図のように SCO 内の評価の正解データを見つけることができる場合もあります．

図 2.5.2 Web ブラウザの JavaScript デバッグの例

学習用のパソコンには JavaScript のデバッグ機能が使えないブラウザを用意する必要があります．また，LMS 側で学習者のパソコンの IP アドレス，Web ブラウザのバージョンを確認することで，指定されたパソコン以外からのアクセスを禁止することもできます．

27

3. 各社 LMS による SCORM 2004 コンテンツ実行結果
3.1

ソフトバンク BB「A’OMAI」

3.1.1

学習者機能によるコンテンツの実施結果►

1 回目の学習を開始

コンテンツをユーザーに割り当て，学習を開始します．左図は弊社 LMS「A’OMAI」の受講教材一覧画面です．

►

1 回目の学習 第 1 章

コンテンツを起動すると「はじめに」が自動的に開始します．そのまま進み，「うでだめし28

クイズ」まで進みます．

「うでだめしクイズ」では，第 2 問，第 4 問，第 6 問を間違います．

「せつめい」に進みます．
「せつめい」では，「うでだめしクイズ」で不正解だった第 2 問，第 4 問，第 6 問の説明が表示されます．

29

第 2 問，第 4 問，第 6 問の説明が表示されます．

「かくにんクイズ」に進みます．
「かくにんクイズ」では全問正解しないと，第 2 章には進むことができません．

30

第 1 章の学習履歴の状態です．弊社 LMS「A’OMAI」学習者機能の履歴詳細画面での表示
例です．
completion status の unknown, incomplete, completed は「---」，非表示，「完了」と表示されます．success stutus の unknown, failed, passed は，
「---」
，非表示，
「合格」と表示さ
れます．

31

►

1 回目の学習 第 2 章

32

第 2 項から第 4 項に正解しないと，第「第 2 章 せつめい」が「satisfied」にならないため，「キャッチボールかんせいテスト」を起動することができません．

►

2 回目の学習 第 1 章

第 1 章の「うでだめしクイズ」は，コンテンツの「次へ」ボタンで進んだ場合，「completedであれば skip」が設定されているため，クイズに答えることなく 1 回目の学習で間違った
クイズの説明へと進みます．また，choice の場合は「うでだめしクイズ」を再度学習できてしまいます．
第 1 章の「かくにんクイズ」には進みますので，retry 設定のため全問正解するまで次へ進
むことはできません．

►

2 回目の学習 第 2 章

1 回目の学習で「第 2 章 せつめい」の success status が passed になっているため，「第 2章

せつめい」の学習を行わなくても「キャッチボールかんせいテスト」を学習することが可能です．
「第 2 章 せつめい」に含まれる第 1 項から第 5 項をいずれかを学習した場合
は，再度，第 1 項から第 5 項の success status が passed になるまで，「キャッチボールかんせいテスト」を学習することができなくなります．

3.1.2
►

管理者機能での学習結果の表示

学習履歴 (Completion Status, Success Status, Score)

管理者機能では，以下のように学習履歴(Completion Status, Success Status, Score)を参照
することが可能です．

項目の対応は以下のようになっています．

33►Completion Status:

完了

Success Status:

合格

Score:

得点

1 問ごとの解答 (Interaction)

管理者機能では，以下のように 1 問ごとの解答(Interaction)を参照することが可能です．

34

3.2

リコーIT ソリューションズ「Learn@Stage」

3.2.1

学習者機能によるコンテンツの実施結果►

1 回目の学習を開始

少 年 野球 コン テ ンツ をユ ーザ ー に割 り当 て， 学習 を 開始 しま す ．上 図は 弊社 LMS「Learn@Stage」の受講教材一覧画面です．

►

1 回目の学習 第 1 章
コンテンツを起動すると「はじめに」が自動的に開始します．
そのまま進み，「うでだめしクイズ」まで進みます．

35

「うでだめしクイズ」では，第 2 問，第 4 問，第 6 問を間違います．

「せつめい」に進みます．
「せつめい」では，「うでだめしクイズ」で不正解だった第 2
問，第 4 問，第 6 問の説明が表示されます．

36

第 2 問，第 4 問，第 6 問の説明が表示されます．

「かくにんクイズ」に進みます．
「かくにんクイズ」では全問正解しないと，第 2 章には進むことができません．
左図の[やめる]ボタンか，[目次へ]ボタンを押下すると，LMSの目次画面に遷移します．

37

LMS の目次画面には第 1 章の学習履歴の状態が表示されています．completion status の
unknown, incomplete, completed は開始前，学習中，完了と表示されます．success stutusの unknown, failed, passed は，開始前，未到達，合格と表示されます．

38

►

1 回目の学習 第 2 章
第 2 章では，第 2 項と第 4 項を間違います．
コンテンツの[やめる]ボタンか，[目次へ]ボタンを押下すると，LMS の目次画面に遷移します．
第 2 章では choice のみ有効となっていますので，目次画面に遷移 後 Activity 名 を 押 下 し ，choice ナビゲーションを行います．

39

第 2 項から第 4 項に正解しないと，「第 2 章 せつめい」が「satisfied」にならないため，「キャッチボールかんせいテスト」を起動することができません．ただし，Learn@Stageではマニフェストを一部修正しないと起動が可能です．当該部分のシーケンシングルール
では，学習目標が not satisfied であれば，アクティビティを起動しない（disabled）となっています．一方，Learn@Stage では，学習目標の success status が failed であれば，notsatisfied が true となりますが，success status が unknown の場合は not satisfied が trueとなりません．そのため，期待した動作とするためには，条件に「not objectiveStatusKnown
であれば disabled」を追加するか，「第 2 章 せつめい」の success status が failed になる
ようにロールアップルールに以下の記述を追加する必要があります．
<imsss:rollupRule childActivitySet="atLeastCount" minimumCount="1"><imsss:rollupConditions><imsss:rollupCondition condition="attempted"/></imsss:rollupConditions><imsss:rollupAction action="notSatisfied"/></imsss:rollupRule>40►

2 回目の学習

Learn@Stage では「終了してメインへ」ボタンを押して学習を終了します．これはナビゲーションの ExitAll にあたり，次回コンテンツを起動したときは Start ナビゲーションで開始します．また，再度 Start が発生しても学習履歴データはクリアされることなく残っています．前回の学習ステータスが学習にどう影響するかは，「Use Current Attempt XX フラグ」の設定によります．
「今日はここまで」ボタンを押した場合は SuspendAll ナビゲーションとなり，次回コンテ
ンツを起動したときは ResumeAll ナビゲーションで開始します．

►

2 回目の学習 第 1 章

第 1 章の「うでだめしクイズ」は，コンテンツの「次へ」ボタンで進んだ場合，「completedであれば skip」が設定されているため，クイズに答えることなく 1 回目の学習で間違った
クイズの説明へと進みます．また，choice の場合は「うでだめしクイズ」を再度学習できてしまいます．
第 1 章の「かくにんクイズ」には進みますので，retry 設定のため全問正解するまで次へ進
むことはできません．

►

2 回目の学習 第 2 章

1 回目の学習で「第 2 章 せつめい」の success status が passed になっているため，「第 2章

せつめい」の学習を行わなくても「キャッチボールかんせいテスト」を学習することが可能です．
「第 2 章 せつめい」に含まれる第 1 項から第 5 項をいずれかを学習した場合
は，再度，第 1 項から第 5 項の success status が passed になるまで，「キャッチボールかんせいテスト」を学習することができなくなります．

41

3.2.2►

管理者機能での学習結果の表示

学習履歴 (Completion Status, Success Status, Score)

管理者機能では，以下のように学習履歴(Completion Status, Success Status, Score)を参照
することが可能です．

項目の対応は以下のようになっています．

►

完了:

Completion Status

合格:

Success Status

得点:

Score

1 問ごとの解答 (Interaction)

管理者機能では，以下のように 1 問ごとの解答(Interaction)を参照することが可能です．

42

Learn@Stage では 1 問ごとの解答(Interaction)を参照するために，cmi.interactions.n.idの値を教材マスターに登録する必要があります．

43