40th tokyo.r "rでexperience api (tin can api) をいじる、という話"
DESCRIPTION
第40回Tokyo.Rで発表した(する)資料です。TRANSCRIPT
40th Tokyo.R
RでExperience API(Tin Can API) をいじる
という話
@data_sciesotist
2014/06/14
1
1 まずは、自己紹介• 社会人5年目の研修講師 (Linux、仮想化、ストレージ、クラウド、ビッグデータ・データサイエンスなど担当)です
• その前は長々と大学にいました (心理学、教育工学、障害者支援などを研究)が、学位もポストも・・・だったので就職
• 2002年にLinuxにはじめて触れて以来、細々とOSS関係の活動をしています
• 主に組版ソフトTEXの周りで IDEの日本語化、ドキュメントの翻訳、解説サイトの運営などをしています
• データサイエ「ソ」ティストに悪意はありません2
2 Experience APIについて• xAPIとか、Tin Can (ブリキ缶) APIとか呼ばれることも
• “学びの体験” をやり取りする仕組み
• 米政府系Advanced Distributed Learningが仕様策定
• http://www.adlnet.gov/tla/experience-api/
3
3 どこでどう使うのか• すごく前: 教室での集合教育、紙の教科書、板書......
• ちょっと前: LMS*1でのeラーニング......
• イマドキ: MOOCs*2、OCW*3、ググる、SNS、勉強会、ハッカソン......あらゆる場が学びの機会に
• さまざまな時間、空間、システムに分散する学びの記録を蓄積し活用したい
*1 Learning Management System*2 Massively Open Online Courses*3 Open Courseware
4
4 LRSによる学習履歴の集積
LRS
(Learning Record Store)
5
5 Experience APIの仕組み• データをJSON*4 (REST) でやり取りする
• 誰が、どこの、何に、いつアクセスしてどうなったかが記録できる• 教材やWebページ、アプリにLRSと通信するボタンを仕込む
{"id":"fd41c918-b88b-4b20-a0a5-a4c32391aaa0",
"actor":{"objectType": "Agent",
"name":"Project Tin Can API",
"mbox":"mailto:[email protected]"},
"verb":{"id":"http://adlnet.gov/expapi/verbs/created",
"display":{"en-US":"created"}},
"object":{"id":"http://example.adlnet.gov/xapi/example/simplestatement",
"definition":{"name":{"en-US":"simple statement"}}}}
*4 JavaScript Object Notation
6
参考: ジェイソンとは
最終的には冷凍保存されて400年後に復活、宇宙船内で暴れて
サイボーグになり、最後は大気圏に突入するらしい......7
6 RでJSONを扱う• JSONを扱ういろんなパッケージがある
■ rjson ... とりあえずこれで
■ RJSONIO
■ jsonlite
■ ...
> install.packages("rjson")
> require(rjson)
8
7 コード例> data<-fromJSON(file="test.json")# > data<-fromJSON(file="http://.../xxx.json")
# リスト形式は扱い辛いので、ベクトルに変換> json<-unlist(data)
# アクティブユーザーをカウント> table(json[names(json)=="actor.name"])> barplot(table(json[names(json)=="actor.name"]))
# アクセスしたコンテンツを集計> table(json[names(json)=="object.id"])> barplot(table(json[names(json)=="object.id"]))
9
8 RでJSONデータを読み込んだ様子
10
9 集計結果の例 (1)
aa arrows11 arrows12 CBP_DEMO_01 chro12 chrome11 de1 dem02 demo01 koeda ogawa shimada tarou
ユーザー名の集計結果
ユーザー名
アクセス数
0100
200
300
400
11
10 集計結果の例 (2)
時間帯別のカウント結果
アク
セス
数0
2040
6080
100
05/0710:00
05/0816:00
05/0922:00
05/1104:00
05/1210:00
05/1316:00
05/1422:00
05/1604:00
05/1710:00
05/1816:00
05/1922:00
05/2104:00
05/2210:00
05/2316:00
05/2422:00
05/2604:00
05/2710:00
05/2816:00
05/2922:00
05/3104:00
06/0110:00
06/0216:00
06/0322:00
06/0504:00
12
11 まとめ• Experience APIというのがある
• オンライン、オフライン、「教育っぽい」、「教育っぽくない」問わずあらゆる学びを記録、蓄積できる
• 基本的にはLRSにJSON形式でデータを送る仕組み
• RでJSON形式のデータを扱う方法が複数ある
• 今は「学び」だけど、ある種のアドテク(トラッキング)に向かっていくのでは...
13
12 おまけ: 次のネタ• TEXからRを呼び出すパッケージを思いついて作りました
• Markdownとかよくわからん
• 作業比率: TEX > R ←TEXからRを使うほうが効率的
\usepackage{runR}
\begin{runR}date()pdf(file="plot_example.pdf")barplot(1:10)invisible(dev.off())
\end{runR}
\includegraphics{plot_example.pdf}
14