Tin Can API

インターネットブラウザの必要性の排除


Tin Can APIは、インターネットブラウザを排除することができます。これにより、ユーザーがどのようなコンテンツを経験するのか、そしてコンテンツがどのようなものか、多くの可能性が広がります。

ネイティブモバイルアプリケーション、シミュレータ、そしてTin Can APIに準拠したシリアスゲームを作成することは簡単です。ソフトウェアは、正しくセンテンスを送信できるように設定し、システムはネットワークに接続されていこと。(または、少なくともときどき接続されていること。)

ブラウザの必要性を排除するTin Can APIのソリューションは、シンプルですが、非常に強力です。



※ この記事は、CC BY 3.0のもと、Rustici Software 社の記事を翻訳したものです。
http://scorm.com/project-tin-can-phase-3-removal-of-the-need-for-an-internet-browser/

NoraUsagiメモ: LMSのコースウェアコンテンツはブラウザ上で動作することが前提であり制約でした。ブラウザを使用してもしなくても構わないというソリューションは、一歩進んだと言えるでしょう。

Wiiなどの端末専用の学習アプリとLMSのブラウザコンテンツは、別物という印象がありましたが、内部でLRSに接続できれば、その垣根がなくなり、学習データの共有を取ることも可能です。LRSは、表には顔を出さない黒子として立ち振る舞うこともできそうです。

Tin Can API

コンテンツの配信、クロスドメインでの配信

従来のeラーニング仕様の欠点は、LMSの外側にコンテンツをホストすることができました。いくつかの回避策がありますが、Tin Can APIのようなものなく、どれも問題は解決には至りません。

Tin Can APIの特徴は、アクティビティがLRSの外で動作することです。これは、多くの新しい可能性とビジネスケースに広がりが出てきます。

  • もうLMSにコースウェアをインポートする必要はありません
  • コンテンツ制作者(アクティビティの提供者)は、コンテンツを完全に制御できます。
  • アクティビティを修正(誤植を直したり、質問を変えたり)したとき、コンテンツが動作しているLMSに、修正版を送る必要はありません。
  • アクティビティに利用料金を支払うならば、相応のアクセスを制御をして限度を超えるか、支払いを止めれば、利用を停止します。
  • アクティビティは、同じリポジトリに格納する必要はありません。アクティビティの提供者は、さまざまな場所から、コンテンツを取り出すことができます。
  • アクティビティは、「コンテンツ」である必要はありません、どのような学習形態でも構いません(昔ながらの教室スタイルでも)



※ この記事は、CC BY 3.0のもと、Rustici Software 社の記事を翻訳したものです。
http://scorm.com/project-tin-can-phase-3-distribution-of-contentcross-domain/

Tin Can API

シンプルである必要があります

次世代の仕様を調査するうえで重要な側面はシンプルであることです。
従来のeラーニングの規格は複雑なため、準拠するために膨大な時間とコストが掛かります。
また、多くの能力を求められました。

残念ながら、シンプルさとパワーは、一般的にソフトウェアの環境では、相伴わないものですが、解決策を見つけたと考えています。

Tin Can APIは、SCORMより遥かに簡単で、とてもシンプルなAPIです。

  • もうJavaScriptを扱うことはありません。
  • アクティビティとLRSの通信処理の複雑さは、大幅に軽減されます。(少ないAPI呼び出し)
  • それ以上に必要なマニフェストファイルや、複雑なファイル構造がありません。
  • コンテンツ(アクティビティ)には、複雑な要件はありません。「私はこうしました」というステートメントの送信ができれれば良いだけです。
  • アクティビティは(LRSの外側で)単独で実行されるので、アクティビティやLRSによって満たさなければならない、ユーザーインターフェイスの要件はありません。 — アクティビティは、単独で存在して、LRSにステートメントを伝えます。

より複雑なステートメントの例は次のようになります。

[Somebody] says that [I] [did] [this] in the context of [ _____ ] with result [ _____ ] on [date].



※ この記事は、CC BY 3.0のもと、Rustici Software 社の記事を翻訳したものです。
http://scorm.com/project-tin-can-phase-3-it-needs-to-be-simple/

NoraUsagiメモ: SCORM2004の普及が進まない理由として、仕様が複雑なことが1つあります。Tin Can APIは、必要あれば、シンプルな動作の組み合わせで高度な動作を実現しようというのが、コンセプトだと思います。

Tin Can API

次世代のeラーニング規格

Project Tin Canとは

Project Tin Canとは、ADLから機会を得て米国のRustici Software‎社が進めている、次世代のeラーニング規格を研究するプロジェクトです。eラーニングの規格には、SCORMがありますが、できてから10年を超える規格です。SCORM2004の次は、SCORM2.0と呼ばれるものがありましたが、なかなか全容が出ることがなく、停滞している感じがありました。

ADLは、将来の学習体験を支援するには、いままでのSCORMを発展させるより、新しい技術を開発して、進化したデザインモデルをサポートする必要があると考えました。

Project Tin Canは、Tin Can APIとして、2012年4月5日にADLのウェブセミナー(Tin Can API Kickoff Webinar)で次世代のSCORMとして紹介されました。

Tin Can APIが、本当に次期SCORMになるかは、何とも言えませんが、期待して良いのではないでしょうか。少なくとも、どういったことを実現しようとしているのか、その概要を知ることができます。

Rustici Software‎は、eラーニングの専門企業でLMSのSCORMクラウドなどの開発を行っています。また、サムトータルのSCORMの実装に関わった人物がいたり、ADLのテクニカルワーキンググループに参加するなど、SCORMの進化にとても貢献してきました。そういった意味では、ADLと大きなつながりをもった企業だと言えます。


Tin Can APIとは

古い仕様で苦しんでいる多くの問題を解決することができます。また新しい機能、新しいビジネスケース、およびコンテンツを扱う新しい方法を追加しています。Tin Can APIは、過去10年間のeラーニングの経験を、これまでの技術進歩に合わせて融合したものです。

Tin CanAPIの核は、非常にシンプルな文構造です。
Actor(主体)、verb(動作)、object(対象)に分けて考えます。
誰が、何をどうするのか?という風に物事を分解して考えていくようです。

コンテンツは、もはやSCOである必要がなくなり、LMSと通信する方法も変わります。これは、伝統的なLMSを利用したeラーニングからの大きな脱却です。コンテンツは、LMSに格納する必要がなくなります。つまり、LMSからコンテンツを配信しなくても良いのです。単独でLMSの外でコンテンツを動作させても良いことになります。

そして、ブラウザ上で動作させる必要もなくなります。モバイルアプリや、Windowsアプリケーションといったさまざまな、アプリケーションプラットホームで動作させることができるようになります。

将来LMSは、さまざまなプラットホームから学習完了などのステートメントをLMSに送信する仕組みになり、多くの学習情報のやり取りを行う集積所になるでしょう。このようなLMSをLRS(Learning Record Store) と呼びます。

eラーニングコトハジメ

コースウェアの設定と挙動の違い

LMSは、コースウェアとしてSCORMのコンテンツを表示することができますが、LMSのブラウザ上にコースウェアをどのように表示するかといったことは、SCORMの仕様書では決まっていません。

例えば、コースウェアを同一ウインドウに表示するのか、別ウインドウで表示するのか、そのときのウインドウサイズはどうするか。または、学習履歴を上書きして良いかなど。これらは、LMS側が自由に決めることができます。こうした要件は、コースウェアの管理者が設定を行いますが、設定できる範囲は、LMSによって様々です。ほとんど固定で融通の利かないものもありますが、細かく設定できるものも存在します。

ここでは、次のようなケースを想定してみます。

・コンテンツは1つのSCOのみで、別ウインドウに表示したい
・ナビゲーションや目次は表示したくない
・コンテンツの画面サイズは640x480で、ブラウザ内で余計な余白は表示させたくない

1つのSCOのみで構成される、コースウェアは、Flashで作られたものが多いと思います。Flashのなかで画面遷移が行われたり、講義動画を配信するものが多いのではないでしょうか。実際、いくつかのLMSで試してみると、画面サイズの指定に難があるようです。IE9を基準にして、ちょっと見てみました。

SCORM Cloud

SCORM Cloudは、ナビゲーションメニューや目次を非表示にすることができます。設定できる範囲は多岐にわたります。ウインドウのサイズの指定を661x490に設定することで、IE9では、ほぼぴったりにうまく表示されました。右、下に1pxの余白がでてしまいましたが、これ以上にするとスクロールバーが表示されあまり良くありません。

Chromeなどほかのブラウザでは、表示領域が変わってしまいました。ブラウザによって挙動が違うようです。

Moodle

Moodleは、「パッケージの表示」で「新しいウィンドウ」に設定することで、コースウェアを別ウインドウに表示することができます。目次となる、コース構造を「無効」にすることで非表示にもできます。

コンテンツの下部の枠線がウインドウ内に収まりませんでしたが、縦幅を広くしてしまうと枠の内部に余白が表示される結果となりました。

Chromeでは、ブラウザでは、表示領域が変わってしまい、スクロールバーが表示される結果となりました。

ILIAS

ILIASも、新しいウィンドウにコンテンツを表示する設定があり、幅、高さを設定することができます。

ILIASでは、1つの項目の場合、目次は表示されないようになっているようです。いい感じに表示されました。

Chromeで見てみると、サイズが変わってしまいスクロールバーが表示されてしまいました。

このように、いくつかのLMSを見てみましたが、設定できるパラメーターもLMSごとに違いがあり、比較的、別ウインドウに表示したり、ウインドウサイズの設定は、どれも対応していますが、サイズ設定は、ブラウザによって挙動がだいぶ違っていました。

1つ言える事は、ブラウザの縦横のサイズに合わせると、コンテンツの表示領域が、ブラウザによって違いがでてくるので、厳密に設定するには、ブラウザごとに振り分けが必要になってくると思います。また、挙動そのものがちょっと怪しいものもあり、ブラウザのウインドウサイズ指定は、避けたほうが良さそうです。

SCORM1.2概要

SCORM1.2 コンテンツモデルの表記

コンテンツモデルの構造を仕様書などで図で表現することがあると思います。ここでは1つの例として、このような表現の仕方があることを覚えておくといいでしょう。(なにか試験を受ける方は、必須です)

シンプルな構造

学習順序 項目1 → 項目2 → 項目3

図は、左から描いていきます。このコンテンツは、コースウェアが起動すると、項目1の学習ページ、もしくは項目が何も選択されていない空白ページとなります。また、各項目は、SCORM1.2では、アイテムと呼ぶことがあります。これは、マニフェストファイル内でitem要素として記述しているためです。SCORM2004では、アクティビティと呼んだりします。

なんとなく、ツリーを右に倒してしまうと、順番が逆になってしまうため気をつけてください。

階層構造を持つケース

SCORM1.2では、親子構造の親に対しても、コンテンツを割り当てることができますが、ここでは、セクション1、2には、割り当てていません。基本的に親に対しては、コンテンツは割り当てないほうが良いと思います、というのも、SCORM2004では廃止されて、割り当てることができなくなっているためです。

学習順序 はじめに → 項目1 → 項目2 → 項目3 → 項目4 → 項目5 → 項目6

SCORM1.2では、学習順序がリニアに進むため、把握することが容易ですが、SCORM2004では、シーケンシングにより複雑な動作をすることがあります。

SCORM1.2概要

SCORM1.2 パッケージングの作成方法

作成したSCORMコンテンツをLMSにインポートするとき、インポート仕様がLMSによって、バラバラだと、せっかく作成しても動作させることができません。SCORMでは、パッケージングについてもルールが決められており、パッケージ交換ファイル Package Interchange File (PIF) という仕様が決められています。

PIFとは

データ交換用に用いられるファイルをPIF(ぴふ)といいます。学習コンテンツは、マニフェストファイルやHTMLファイルなど、複数のファイルから構成されていると思います。これらを、1つのzip形式のファイルにまとめたものがPIFとなります。※ 仕様上では、ZIP形式だけでなく、jar、cab、tarなども認められているようですが、zip以外の形式をサポートしているLMSは見たことがありません。

PIFファイルの作り方

単純にzip形式でまとめるだけですが、注意するところは、解凍したさい必ずimsmanifest.xmlファイルが、解凍したディレクトリ位置に来るようにしてください。そのため、構成ファイルすべてを選択状態にして、zipファイルを作成します。上位のフォルダ(scormコンテンツ)を圧縮してLMSにインポートしても認識されませんので、注意してください。

ファイル名は、何でもいいですが、半角英数のみで指定するのが無難でしょう。

そして、作成したファイルは、LMSにインポートできるようになります。

ちなみに、LMSの中でマニフェストファイルなどが格納されるディレクトリの名称は、zipファイルの名称がそのまま利用されたり、また、自動的に連番が割り当てられるなどLMSによってバラバラです。

SCORM1.2概要

SCORM1.2 マニフェストファイルの役割

コースウェアは、SCO(アセット)の集合から構成されます。これらの学習リソースは、章立てとなる目次や階層情報を持たないため、これだけでは、コースウェアとして成り立ちません。構造化した設計図となるものが必要です。

この役割を担うのが、マニフェストファイルです。

マニフェストファイルの役割

マニフェストファイルは、大きく2つの役割を持ちます。

  • コンテンツモデル(目次)の構造を定義する
  • コンテンツモデルに対応した、学習リソース(SCO、アセット)のファイルパスを定義する

この情報をLMSに伝えることで、目次を表示させたり、学習項目を選択したら、対応するSCO(アセット)を起動させることができるようになります。

マニフェストファイルの構造

マニフェストファイルは、XMLで記述します。学習項目が1つだけの、マニフェストは、次のように書くことができます。

マニフェストファイルのファイル名は必ず、imsmanifest.xml にします。ここで注目したいところは、カラー枠の部分です。マニフェストファイルの構造は、<organizations> と <resources> に分かれます。

organizations
コンテンツモデルを定義します。ここで、コースウェアの目次を作り、コースウェア名称、学習項目、階層構造などを定義します。item要素を入れ子にすることで、章節項といった階層構造を作ることもできます。

resources
コースウェアで利用するファイルを定義します。<resource href="sco01.html">は、学習項目が選択されたときに、起動するファイルです。ほかに利用されるファイルは、<file href>に記載します。


organizationsとresourcesは、独立しています。そのため、対応付けをしなければ、項目を選択しても、どのファイルを起動していいのか分りません。その役割を担うのが、identifierrefとidentifierの値です。同じ値(res-1)にすることで、一致する学習リソースのファイル(sco01.html)を起動します。

また、複数の学習項目を作り、参照先をすべて同じidentifier(同じファイル)にすることもできます。このサンプルはシンプルなものですが、複雑な記述をすることで、さまざまな制御を加えることもできます。

ちなみに、スキーマ定義というのは、マニフェストのXML構造を定義した仕様書みたいなものです。XML文章を解釈するエディタなどは、スキーマの内容を参照して、記述したXML文章の妥当性をチェックすることができます。それで、事前にエラーがないか確認することができます。LMSもスキーマを参照しているものがあるかもしれません。

RELOAD Editor

XML文章を手書きで書くことは、比較的 手間が掛かる作業です、オープンソースのRELOAD Editorというソフトを利用すると、比較的簡単に記述することができます。また、日本語化のパッチも有志の方で行われ、ある程度日本語化されます。
ソースコードに直接埋め込まれている文言は、英語のままのようです。
RELOAD Editorには、Eclipseをベースにしたものと、しないClassic版があります。好みで利用するといいでしょう。


Eclipse版 RELOAD Editor

RELOAD Editor
http://www.reload.ac.uk/

The Classic RELOAD Editor 日本語化
http://sourceforge.jp/projects/reloadeditor-jp/

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

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

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

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

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

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

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

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

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

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

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

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

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

SCORM1.2 APIWrapper、SCOFunctionsの概要

便利なライブラリ

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

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

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

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

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

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

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


APIWrapper、SCOFunctionsのライセンス

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

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

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

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