マナビ利用ガイド
 Mananda OAuth API
Manandaサービスは大きく次の2つの機能から構成されています。
LRS(Learning Record Store)
xAPI仕様に準じたJSON形式の標準フォーマットでユーザの活動を捉え、蓄積する機能。Mananda OAuth APIを利用することで、Mananda LRSで履歴データを管理するアプリケーションを開発できます。
学習管理
一定の学習目標を達成した際にシステムが自動的に発行するバッジ、及び目標達成のためのタスクを定義するマナビにより、ユーザ本人や学習指導者による学習管理を支援する機能
本「マナビ利用ガイド」では、主にMananda OAuth API対応アプリケーションとManandaサービスの連携方法について解説します。
1. ステートメントの設計
スマートフォンやタブレットPCに代表されるモバイルデバイスの普及は、地域や年齢、時間といった枠を超えてあらゆる人々に学びの機会をもたらしています。それに伴い多様化する学習アクティビティを柔軟、かつ詳細に捉えるよう考慮されているのがxAPI(Experience API)です。xAPI仕様には、ステートメントと呼ばれる標準フォーマットが規定されています。誰が、何を、どうしたを基本構文とするステートメントの設計において特に重要となるのが“何を、どうした”にあたる「Verb(動詞)」と「アクティビティ(Activity)」です。
1-1. アクティビティ
アクティビティはステートメントの基本構文「誰が(Actor)、何を(Object)、どうした(Verb)」の中の何を(Object)に当たる部分です。具体的には Object の objectType プロパティで"Activity"を指定することで、その Object がアクティビティであることを表します。あるいは objectType プロパティを省略した場合にも Object はアクティビティと見なされます。Objectがアクティビティの場合、それを一意に識別するアクティビティIDが必須となります。これは Object の id プロパティで設定します。以下が実際の記述例です。
	"object": {
		"objectType": "Activity",
		"id": "https://www.digital-knowledge.co.jp/xapi/activities/course/001"
		"definition": {
			"type": "http://adlnet.gov/expapi/activities/course",
					:
		}
	}
上記例で示すようにアクティビティIDは URI(Uniform Resource Identifier)形式の文字列です。一意性を確保するためにアクティビティが関連する特定ドメインの名前空間を起点に組み立てることが推奨されています。URI はあくまでもIDなので、それがURL(Uniform Resource Locator)として機能する必要性はありません。むしろ、世界中のアクティビティの中から特定のものを一意に識別できることが肝心です。

因みに上記例では、digital-knowledge.co.jpというドメインに属するコース(course)の"001"が、courseというアクティビティタイプであることが示されています。アクティビティタイプとは文字通りアクティビティのタイプを定義するもので、アクティビティの詳細な定義を記述する definition プロパティ内で指定します。https://registry.tincanapi.comには、2015年11月時点で80以上のアクティビティタイプが登録されています。
参考資料 Deep Dive: Activity
http://tincanapi.com/deep-dive-activity/
1-2. 動詞
ステートメントにおいて「どうした」に相当するのが動詞です。動詞は、経験・行動を表す必須要素であり、「過去形」でなければなりません。仕様上、特別に要件が定義されているのは“voided”のみです。voidedは、LRSに記録されたステートメントの無効化をLRSに指示する際に使用します。

動詞の使い方には一定のルールがあります。まず動詞ごとに一意に識別可能なIRI形式の“id”を持っていなければならず、且つ、あるidで示される動詞が複数の意味を持つことは許されていません。IRIとはURIの国際化版です。また、LRSへの要件として動詞のIRIをIRL、つまりURLとして解決できることが推奨されています。例えば、先述のvoidedにはADLが以下のidを割り当てており、これをブラウザのアドレスバーに入力するとvoidedを説明するADLサイトのページが表示されます。
	"verb": {
		"id": "http://activitystrea.ms/schema/1.0/access",
		"display": {
			"ja-JP": "アクセスした",
			"en-US": "accessed"
		}
	}
同じ動詞でも異なる意味合いで使わなければならない場合は、異なるidが割り当てられていなければなりません。例えばhttp://tincanapi.com/deep-dive-activity/には「完了」を意味する“completed”として次の2つが定義されており、それぞれ異なる意味を持っています。
動詞ID説明
completedhttp://activitystrea.ms/ schema/1.0/completeアクターがオブジェクトを完了したことを示す。
completedhttp://adlnet.gov/expapi/ verbs/completedアクティビティ全体の経験に対して、コンテンツの完了を宣言するために使用される。単純に、目標や相互作用に紐付られたコンテンツ、あるいは任意の方法で決定されたコンテンツを全て経験している場合がある。初期化されているが未完了のコンテンツは、未完了と考えるべきである。未完了に対するverbはなく、アクティビティ完了のステートメントを無効にする。

アクティビティと動詞は1対多の関係です。例えば“読書”というアクティビティでは「借りた(borrowed)」「読んだ(read)」「返した(returned)」で図書館の本における一連の流れを表すことが考えられますし、あるいは「購入した(purchased)」「中断した(suspended)」「完了した(completed)」「好んだ(liked)」「あきらめた(flagged as inappropriate)」といった動詞でユーザの挙動や感情を表現することも可能です。

尚、Tin CanプロジェクトでxAPI仕様策定を推進した米国Rustici Software社は、Verbs, Activity Types, Attachment Usages, Extensions, Profilesの一覧をまとめた登録サイト“Registry”を運営しています。「ステートメントにはRegistryにリストされた動詞しか使ってはならない」などという強制力があるわけではありません。しかし、動詞が無尽蔵に作られるとxAPIの相互運用性が損なわれることが危惧されます。とは言え、学習を取り巻く習慣や制度に地域差があれば、使いたい動詞やそれらの定義が異なって当然です。理想は国、あるいは特定の公的機関に動詞等を取りまとめていただくことですが、実現にはそれなりの時間を要することが想像できます。そのためManandaではRegistryの動詞を使うことを原則とし、追加の動詞が必要な場合は、Registryに登録申請する方針をとっています。既に“drew(描く)”という動詞を登録しています。
動詞ID説明
drewhttp://www.digital-knowledge.co.jp/tincanapi/verbs/drewアクターが物理的な用具、あるいはデジタル入力デバイスを使用して何らかの絵を作成したことを示す
参考資料 Deep Dive: Verbs(Rustici Software)
http://tincanapi.com/deep-dive-verb/

Experience API: Verb(ADL)
https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md#verb

Verbs: The Registry
https://registry.tincanapi.com/#home/verbs
2. Manandaサービスとの連携
Manandaサービスには4種類のアクティビティ「読書」「レポート」「(授業や研修などへの)出欠」、「e-Learning」に対応したマナビがあります。この中でMananda OAuth API対応アプリケーション(以下、アプリケーション)との連携機能を提供するのがe-Learningマナビです。
2-1. e-Learningマナビの作成
アプリケーションが生成するステートメントのアクティビティIDをe-Learningマナビに設定することで、e-Learningマナビはアプリケーションをトラッキングできるようになります。以下にe-Learningマナビの作成方法を示します。
  1. Manandaサービスにログイン
  2. 画面上部のグループアイコンを選択
  3. グループ一覧からManandaを選択
  4. バッジ一覧下部の新しいバッジを探すボタンを選択
  5. 目標設定可能バッジ一覧画面下部の自分のバッジを管理するボタンを選択
  6. 管理メニューから学習内容の作成・編集を選択
  7. 学習内容を新規作成を選択。以下、登録要領。
    項目名説明
    学習名を入力マナビのタイトルを入力します
    説明を入力マナビの説明を入力します
    学習内容の種類マナビの種類。eラーニングを選択。フォームの入力項目が切り替わります。
    外部サイト立ち上げURLを利用するチェックを入れると外部サイトURL欄が表示されます
    外部サイトURLマナビと連携させるMananda OAuth APIアプリケーションのURLを入力
    アクティビティIDマナビにトラッキングさせるアクティビティIDを入力。マナビはアプリケーションのClient IDとここで指定されたアクティビティIDを関連付けて、マナビのステータスを管理します。
    アクティビティIDはManandaサービス全体で一意である必要があります
    開始日時マナビの利用開始日時
    終了日時マナビの利用終了日時
    カテゴリマナビのカテゴリを指定
    公開設定公開に指定すると全Manandaユーザが当該マナビをバッジの獲得条件に設定できます。
  8. 保存ボタンを選択
アプリケーションが複数のアクティビティIDを持ち、それらをマナビでトラッキングする場合はアクティビティIDごとにマナビを作成する必要があります
2-2. バッジの作成
作成したマナビとユーザ(学習者)を関連付けるためのバッジを作成します。以下にバッジの作成方法を示します。
  1. Manandaサービスにログイン
  2. 上記2-1. e-Learningマナビの作成の2~5と同じ手順で管理メニューにアクセス
  3. 管理メニューから目標(バッジ)作成・編集を選択
  4. 目標(バッジ)を新規作成を選択。以下、登録要領。
    項目名説明
    目標(バッジ)名を入力バッジのタイトルを入力します
    説明を入力バッジの説明を入力します
    画像バッジに使用する画像ファイルを設定
    カテゴリマナビのカテゴリを指定
  5. 保存ボタンを選択
2-3. バッジ獲得条件の設定
2-2.で作成したバッジの獲得条件として 2-1.のマナビを設定する手順を以下に示します。
  1. 上記2-1. e-Learningマナビの作成の1~5と同じ手順で管理メニューにアクセス
  2. 管理メニューから目標(バッジ)作成・編集を選択
  3. バッジリストから2-2.で作成したバッジを選択
  4. バッジ管理メニューから目標達成条件を選択
  5. 目標達成条件編集画面から作成済みの学習内容を追加するを選択
  6. 追加するタブを選択
  7. Mananda公開されているマナビ、及び自身が作成した公開・非公開マナビが一覧表示されるので、その中から2-1.で作成したマナビの追加ボタンを選択
  8. 画面上部の戻るボタン(<)を選択
  9. 目標達成条件編集画面で上記のマナビが追加されていることを確信したら画面上部の戻るボタンを選択
  10. バッジ管理メニューで公開するを選択
  11. 公開する画面の公開欄で公開を選択し、保存ボタンを選択
2-4. 動作確認
以上がアプリケーションとManandaサービスを連携させる基本的な手順です。最後に動作を確認してみましょう。
  1. Manandaサービスにログイン
  2. 新しいバッジを探すを選択
  3. 手順2-3.のバッジを選択
  4. バッジ詳細画面のここをクリックを選択
  5. 目標を記入欄に適当にテキストを入力し、目標に設定するボタンを選択
  6. 目標達成に必要な学習欄にリストされたe-Learningマナビを選択
  7. マナビ詳細画面の外部サイトを起動するボタンを選択
  8. (アプリケーションがMananda LRSにステートメントを送信)
  9. マナビ詳細画面のキャンセルボタンを選択
  10. アプリケーションがcompleted(完了した)のステートメントを送信すると、e-Learningマナビのステータスが完了に変わる

Mananda Developer目次
xAPI(Experience API)とは
xAPI(Experience API)の概要です。
Mananda OAuth API Beta
Mananda OAuth APIの技術情報を公開しています。
マナビ利用ガイド
このページです。