40th tokyo.r "rでexperience api (tin can api) をいじる、という話"

14
40th Tokyo.R R Experience API (Tin Can API) をいじる という話 @data_sciesotist 2014/06/14 1

Upload: sciesotist-data

Post on 14-Dec-2014

999 views

Category:

Data & Analytics


2 download

DESCRIPTION

第40回Tokyo.Rで発表した(する)資料です。

TRANSCRIPT

Page 1: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

40th Tokyo.R

RでExperience API(Tin Can API) をいじる

という話

@data_sciesotist

2014/06/14

1

Page 2: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

1 まずは、自己紹介• 社会人5年目の研修講師 (Linux、仮想化、ストレージ、クラウド、ビッグデータ・データサイエンスなど担当)です

• その前は長々と大学にいました (心理学、教育工学、障害者支援などを研究)が、学位もポストも・・・だったので就職

• 2002年にLinuxにはじめて触れて以来、細々とOSS関係の活動をしています

• 主に組版ソフトTEXの周りで IDEの日本語化、ドキュメントの翻訳、解説サイトの運営などをしています

• データサイエ「ソ」ティストに悪意はありません2

Page 3: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

2 Experience APIについて• xAPIとか、Tin Can (ブリキ缶) APIとか呼ばれることも

• “学びの体験” をやり取りする仕組み

• 米政府系Advanced Distributed Learningが仕様策定

• http://www.adlnet.gov/tla/experience-api/

3

Page 4: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

3 どこでどう使うのか• すごく前: 教室での集合教育、紙の教科書、板書......

• ちょっと前: LMS*1でのeラーニング......

• イマドキ: MOOCs*2、OCW*3、ググる、SNS、勉強会、ハッカソン......あらゆる場が学びの機会に

• さまざまな時間、空間、システムに分散する学びの記録を蓄積し活用したい

*1 Learning Management System*2 Massively Open Online Courses*3 Open Courseware

4

Page 5: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

4 LRSによる学習履歴の集積

LRS

(Learning Record Store)

5

Page 6: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

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

Page 7: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

参考: ジェイソンとは

最終的には冷凍保存されて400年後に復活、宇宙船内で暴れて

サイボーグになり、最後は大気圏に突入するらしい......7

Page 8: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

6 RでJSONを扱う• JSONを扱ういろんなパッケージがある

■ rjson ... とりあえずこれで

■ RJSONIO

■ jsonlite

■ ...

> install.packages("rjson")

> require(rjson)

8

Page 9: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

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

Page 10: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

8 RでJSONデータを読み込んだ様子

10

Page 11: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

9 集計結果の例 (1)

aa arrows11 arrows12 CBP_DEMO_01 chro12 chrome11 de1 dem02 demo01 koeda ogawa shimada tarou

ユーザー名の集計結果

ユーザー名

アクセス数

0100

200

300

400

11

Page 12: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

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

Page 13: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

11 まとめ• Experience APIというのがある

• オンライン、オフライン、「教育っぽい」、「教育っぽくない」問わずあらゆる学びを記録、蓄積できる

• 基本的にはLRSにJSON形式でデータを送る仕組み

• RでJSON形式のデータを扱う方法が複数ある

• 今は「学び」だけど、ある種のアドテク(トラッキング)に向かっていくのでは...

13

Page 14: 40th Tokyo.R "RでExperience API (Tin Can API) をいじる、という話"

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