2014年6月30日月曜日

Python用のライブラリが公開されました

TinCanAPI用の6番目のライブラリとして
Python用のライブラリ Tin Can Python が公開されました。


本家による紹介記事(英語)
http://tincanapi.com/2014/06/26/python-library/

ライブラリのダウンロードページ
http://rusticisoftware.github.io/TinCanPython/

TinCanライブラリ一覧
http://tincanapi.com/libraries/

2013年10月31日木曜日

クエリパラメータを使わないで LRSの endpoint を指定する方法

はじめに

ProjectTinCanで公開されているプロトタイプを見ると、ステートメントの送信先であるLRSのendpointの指定並びにアカウント情報は、クエリパラメータで保持され、LMSによってはページアドレスを自由に設定できなくて困る場面があります。
そこでクエリパラメータを使わずにendpointなどの設定をして、
TinCanステートメントを送信しました。

作ったページ

プロジェクトファイル
https://dl.dropboxusercontent.com/u/22889414/publicProject/tincan_sending_statement.zip

indexページ

ステートメント送信時

説明

index.htmlでは、javascript部分で擬似クエリパラメータを生成しています。そのパラメータを”url”として設定しTinCanAPIに渡しています。その際に必要なjavascriptファイルはプロジェクト直下のjavascriptフォルダに配置しています。
sendStatementボタンを押した時に、tincan.sendStatement()が実行され、先ほどのurlにステートメントを送信します。
ソース内の endpoint や actor部分を任意の文字列に変更すれば、好きなLRSに送信できます。

まとめ

・クエリパラメータに保持されていた情報をページ内で生成することで、好きなアドレスのページでTinCanステートメントを発行することが出来る。

2013年9月14日土曜日

Learning Record Storeのセットアップ

Project Tin Canでは、サンプルのLRSのソースを以下のGithubリポジトリで公開しています。
https://github.com/adlnet/ADL_LRS
アプリケーションの実行までの手順も記載されています。

ドキュメントは、Ubuntuでのセットアップ手順として書かれているので、
Ubuntuユーザの方はそのままでいいと思いますが、
一応私がMacで作業した際の注意点を列挙したいと思います。
作業環境:
OS: Max OSX 10.8.4


  1. 必要なソフトウェアのインストール
    sudo apt-get install git fabric postgresql-9.1 python-setuptools postgresql-server-dev-9.1 python-dev
    sudo easy_install pip
    sudo pip install virtualenv
    Macではapt-getが使えないので、Homebrew やその他のパッケージ管理アプリケーションを利用して必要なソフトウェアを揃えましょう。
    また、Homebrewを使ってpostgresqlをインストールした場合、postgresql-server-dev-9.1だけを新たに入れる必要は無いようでした。
    参考:
  2. Postgresのセットアップ
    sudo passwd postgres (set password for postgres system user)
    sudo -u postgres createuser -P <db_owner> (create postgres user that will be owner of the db - make superuser)
    su postgres
    psql template1
  3. データベースの設定
    CREATE DATABASE lrs OWNER <db_owner>;
    \q (exits shell)
    exit (logout as system postgres user)
  4. LRS用のユーザの作成
    sudo useradd -c "ADL Learning Record Store System" -m -s "/bin/bash" adllrs
    sudo passwd adllrs (set password)
    su adllrs
    cd ~
    ※開発環境がUbuntuの場合はそのままでいいですが、Macの場合は、dsclの-createサブコマンドを使用しましょう
  5. LRS用のディレクトリ作成
    mkdir <dir_name>
    cd <dir_name>
  6. LRSをGithubからコピー
    git clone https://github.com/adlnet/ADL_LRS.git
    cd ADL_LRS
    ※コピー後、ADL_LRS/adl_lrs/settings.pyの以下の項目を編集しましょう。
    ・データベース設定
    ・TimeZone設定='Asia/Tokyo'に変更
    ・LANGUAGE_CODE = 'ja'に変更
    ・SECRET_KEYも任意の文字列に変更しましょう
  7. 実行環境のセッティング
    fab setup_env
    source ../env/bin/activate 
  8. LRSのセットアップ
    
    fab setup_lrs (when prompted make adllrs a Django superuser)
    ※setup_lrsの実行時に、
    TypeError: with_metaclass() got an unexpected keyword argument 'base'
    と出て処理が途中で止まってしまう場合、
    ADL_LRSディレクトリから見て、
    ../env/lib/python2.7/site-packages/jsonfield/fields.py にあるコードの 50行目
    class JSONFieldBase(six.with_metaclass(SubfieldBase, base=models.Field)):を
    class JSONFieldBase(six.with_metaclass(SubfieldBase, models.Field)):  に修正

    再度 fab setup_lrsを実行後、
    "You just installed Django's auth system, which means you don't have any superusers defined.
    Would you like to create one now? (yes/no): "
    と聞かれるので yes を入力

    "TypeError: decode() argument 1 must be string, not None"
    とまたしてもエラーが出ますが、
    再度 fab setup_lrsを実行すると、エラーなく処理が終わります。

  9. LRSの起動
    ADL_LRSディレクトリにいる状態で、
    supervisord
    を実行後
    supervisorctl
    で、実際にシステムが起動しているか確認ができます。
    画面に running の文字が出ていれば起動成功です。
    適当なwebブラウザを起動し、http://localhost:8000/xapi/ とURL欄に撃ちこめばLRSにアクセスできます。
以上でLRS起動までの手順は終了です。
公開されているLRSは基本的な機能を持つだけなので、
今後、集められたデータをどう使うのか、
そういった+αの機能を持つLRSが出てきそうですね。


2013年6月12日水曜日

Tin Can API についてのプレゼンテーションと動画

プロジェクト Tin Can のホームページ内にて,
これまで行われたプレゼンテーションやその資料が公開されています.

以下のURLから
http://tincanapi.com/presentationsvideos/

最新のプレゼンテーションは,2013/06/11にweb上で行われたものでした.

2013年6月5日水曜日

Tin Can プロジェクトのホームページ紹介

はじめに

Tin Canプロジェクト は自身のホームページ上で多くのドキュメントや開発支援キット,ディスカッションフォーラムを公開しています.

Project Tin Can : http://tincanapi.com/
図1.ホームページのメインメニュー

ホームページにて提供されているモノ

ページ上部にある各メインメニューにあるコンテンツを紹介します.
  1. Tin Can Explained: 概要やLRSの説明,Tin Can APIのメリットなどを説明しています.特に”Why adopt?”内にある,Tin Can APIを活用した”7つのストーリー”を読むと,より深く理解出来るかもしれません.
  2. Tin Can Solutions: Tin Can APIが解決出来る問題,不安の解決方法,そして新たにもたらす利益を,LMS管理者・学校や会社などの団体・コンテンツ制作者の3つの視点から紹介しています.また,Tin Can APIの前身で,現在のスタンダードであるSCORMの紹介もしています.
  3. Developers: 開発者の為に用意されたドキュメントやライブラリー,実際の仕様書などを読んだりダウンロードできます.また,Tin Can APIを利用しているLMSのプロトタイプを実際に利用できるので,運用の具体的イメージをつかむ事ができます.加えて,Tin Can APIにまつわる議論を行うフォーラムも用意されています.
  4. Blog: 開発者や協力者の方々のブログです.セミナーやTin Can APIにまつわる話を読む事が出来ます.

以上が,プロジェクト Tin Can のHPが提供している情報の一部です.

各ページ内にも,より深い情報へと続くリンクが張られています.

まとめ

Project Tin Canのホームページには,Tin Can APIを知るための情報が沢山ある.
知識だけではなく,実際にシステム開発を行うための補助ツールやプロトタイプシステムのソースコードなどのデータも公開されているので,うまく活用しましょう. 

2013年6月3日月曜日

経験 を ステートメント として扱う

はじめに

Tin Can APIでは,ユーザの経験を{ actor(誰が) verb(どうした) object(何を) } といった,”あらかじめ決められた形”で記述された命令文(ステートメント)をXML形式で扱います

※ステートメントとは,「発言、声明、宣言、供述、などの意味を持つ英単語。プログラミングで、制御や宣言などを行うために言語仕様にあらかじめ組み込まれている命令語、および、それらを用いて記述された一つの命令文のこと。」


データ化された経験

実際に作成されたステートメントを以下のURLから確認することが出来ます.
ここは,Rustic Software(Tin Can APIを作っているところ) が提供しているサンプルLRSです.
※LRSとは,Tin Can APIに沿って作成されたステートメントを集積するシステム:Learning Record Storeの略称

例を一つとってみましょう.
ステートメント例:
Masaki Okabe attempted 'Golf Example - Tin Can Course'

これは以下のように読めます.
actor(誰が)  Masaki Okabe 
verb(どうした)  attempted
object(何を) } 'Golf Example - Tin Can Course'

一つのステートメントには,上記のデータ以外にも沢山のデータを付随させる事が出来ます.先ほどのURL上で見る事が出来るステートメントをクリックすると,実際に作成されたXMLを見る事ができます.先ほどあげたステートメント例に含まれる全てのデータは,ページの最下部を見てください.

まとめ

このように,Tin Can APIを用いれば,ユーザが得た経験ステートメントとして集積する事ができます.
画像:経験がLRSに集積されるまで



注意点として,ステートメントの一部は,あらかじめ定義された要素しか利用出来ない場合があります.その中でも特に気になるのが,Verb(どうした)の定義これについては他の記事で紹介しようと思います.


付録:実際に作成された経験ステートメントのXML
※よく見ると,{ actor(誰が) verb(どうした) object(何を) }以外にも沢山の情報があるのがわかります.

{
    "id": "30526027-2b42-41f7-83ee-3c6eb7a2dfd2",
    "actor": {
        "name": "Masaki Okabe",
        "mbox": "mailto:test@beta.projecttincan.com",
        "objectType": "Agent"
    },
    "verb": {
        "display": {
            "und": "attempted"
        }
    },
    "context": {
        "contextActivities": {
            "grouping": [
                {
                    "id": "http://tincanapi.com/GolfExample_TCAPI",
                    "objectType": "Activity"
                }
            ]
        }
    },
    "timestamp": "2013-06-03T12:03:03.675Z",
    "stored": "2013-06-03T12:03:01.110Z",
    "authority": {
        "account": {
            "homePage": "http://cloud.scorm.com/",
            "name": "anonymous"
        },
        "objectType": "Agent"
    },
    "version": "1.0.0",
    "object": {
        "definition": {
            "name": {
                "en-US": "Golf Example - Tin Can Course"
            },
            "description": {
                "en-US": "An overview of how to play the great game of golf."
            },
            "type": "http://adlnet.gov/expapi/activities/course"
        },
        "objectType": "Activity" 
    }

2013年5月11日土曜日

Tin Can APIを囲む環境

【Tin Can API開発開始までの経緯】 
Tin Can APIはADL社(Advanced Distributed Learning )主導で制定が進んでいるE-ラーニングシステムで用いられる規格の一つです.ADLは,1999年にアメリカ政府から「学習に効果的なテクノロジーの開発」という依頼を受けSCORMをはじめ多くのラーニングテクノロジーの開発を行ってきました.近年,十年以上前に制定したSCORM規格が抱える問題点と,時代から来るニーズに,次世代規格制定の必要性を感じ.ADLと同じくSCORMの問題点の解決を行ってきたRUSTIC Software社と協力して次世代SCORMの開発を始めました.その後,プロジェクト名はProject Tin Canになり,開発中の規格名はTin Can API になりました.現在,ADLは主にプロジェクトの先導と規格の監査,RUSTICI SOFTWARE社がTin Can API開発コミュニティの構成メンバーと共に規格開発を担当し,今なお規格制定を行っています

図.Tin Can APIを囲む環境


出典:
ADL社 沿革 2013/5/11 アクセス
Tin Can API wikipedia 2013/5/11 アクセス
【Tin Can API ver 1.0 specification より年表】

2012年3月31日
Rustic Software社が開発中の次世代SCORMをTin Can APIと命名し Project Tin Can API 発足.キックオフミーティングを行う.Tin Can API ver.0.9 へ
2012年8月31日
経験を表す「動詞」の中心部分と「アクティビティ」のレパートリーを一時削除し,規格制定コミュニティ内で改めて制定し直すことに. Tin Can API ver0.9 → 0.95へ
2013年4月26日
複数の改良箇所と明示文を追加し,Ver1.0のリリース

【今後の情報発信予定】
2013年5月21日(アメリカ時間) 
Mike will be joining some of the top “Tin Canners” on a panel hosted by the Brandon Hall Group. They’ll be talking about why Tin Can exists, how it’s different from older standards, the current evolution of Tin Can, who is using it and how, and the future of Tin Can.
要約:なぜTin Canが存在するのか,従来のスタンダードとどう違うのか, Tin Can の現在の進化,だれがどのように使っているのか,そして今後の展望について

2013年6月11日(アメリカ時間) 
Mike will be presenting “Rethinking Learning Systems with the Tin Can API”. Join in and learn about Learning Record Stores, Training Delivery Systems (that’s a new one), the role of the LMS in a Tin Can world, and a lot more.
要約:Tin Can APIを利用したシステムの紹介 その他.