Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
40th Tokyo.R
RでExperience API
(Tin Can API) をいじる
という話
@data_sciesotist
2014/06/14
1
1 まずは、自己紹介
• 社会人5年目の研修講師 (Linux、仮想化、ストレージ、
クラウド、ビッグデータ・データサイエンスなど担当) です
• その前は長々と大学にいました (心理学、教育工学、障害者
支援などを研究) が、学位もポストも・...
2 Experience APIについて
• xAPIとか、Tin Can (ブリキ缶) APIとか呼ばれることも
• “学びの体験” をやり取りする仕組み
• 米政府系Advanced Distributed Learningが仕様策定
• ...
3 どこでどう使うのか
• すごく前: 教室での集合教育、紙の教科書、板書......
• ちょっと前: LMS*1
でのeラーニング......
• イマドキ: MOOCs*2
、OCW*3
、ググる、SNS、勉強会、
ハッカソン.........
4 LRSによる学習履歴の集積
LRS
(Learning Record Store)
5
5 Experience APIの仕組み
• データをJSON*4
(REST) でやり取りする
• 誰が、どこの、何に、いつアクセスしてどうなったかが記録できる
• 教材やWebページ、アプリにLRSと通信するボタンを仕込む
{"id":"f...
参考: ジェイソンとは
最終的には冷凍保存されて400年後に復活、宇宙船内で暴れて
サイボーグになり、最後は大気圏に突入するらしい......
7
6 RでJSONを扱う
• JSONを扱ういろんなパッケージがある
■ rjson ... とりあえずこれで
■ RJSONIO
■ jsonlite
■ ...
> install.packages("rjson")
> require(rj...
7 コード例
> data<-fromJSON(file="test.json")
# > data<-fromJSON(file="http://.../xxx.json")
# リスト形式は扱い辛いので、ベクトルに変換
> json<-un...
8 RでJSONデータを読み込んだ様子
10
9 集計結果の例 (1)
aa arrows11 arrows12 CBP_DEMO_01 chro12 chrome11 de1 dem02 demo01 koeda ogawa shimada tarou
ユーザー名の集計結果
ユーザー名
...
10 集計結果の例 (2)
時間帯別のカウント結果
アクセス数
020406080100
05/07
10:00
05/08
16:00
05/09
22:00
05/11
04:00
05/12
10:00
05/13
16:00
05/14...
11 まとめ
• Experience APIというのがある
• オンライン、オフライン、「教育っぽい」、「教育っぽくな
い」問わずあらゆる学びを記録、蓄積できる
• 基本的にはLRSにJSON形式でデータを送る仕組み
• RでJSON形式のデ...
12 おまけ: 次のネタ
• TEXからRを呼び出すパッケージを思いついて作りました
• Markdownとかよくわからん
• 作業比率: TEX > R ←TEXからRを使うほうが効率的
usepackage{runR}
begin{runR...
Upcoming SlideShare
Loading in …5
×

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

3,999 views

Published on

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

Published in: Data & Analytics

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

  1. 1. 40th Tokyo.R RでExperience API (Tin Can API) をいじる という話 @data_sciesotist 2014/06/14 1
  2. 2. 1 まずは、自己紹介 • 社会人5年目の研修講師 (Linux、仮想化、ストレージ、 クラウド、ビッグデータ・データサイエンスなど担当) です • その前は長々と大学にいました (心理学、教育工学、障害者 支援などを研究) が、学位もポストも・・・だったので就職 • 2002年にLinuxにはじめて触れて以来、細々とOSS関係 の活動をしています • 主に組版ソフトTEXの周りでIDEの日本語化、ドキュメン トの翻訳、解説サイトの運営などをしています • データサイエ「ソ」ティストに悪意はありません 2
  3. 3. 2 Experience APIについて • xAPIとか、Tin Can (ブリキ缶) APIとか呼ばれることも • “学びの体験” をやり取りする仕組み • 米政府系Advanced Distributed Learningが仕様策定 • http://www.adlnet.gov/tla/experience-api/ 3
  4. 4. 3 どこでどう使うのか • すごく前: 教室での集合教育、紙の教科書、板書...... • ちょっと前: LMS*1 でのeラーニング...... • イマドキ: MOOCs*2 、OCW*3 、ググる、SNS、勉強会、 ハッカソン......あらゆる場が学びの機会に • さまざまな時間、空間、システムに分散する学びの記録を 蓄積し活用したい *1 Learning Management System *2 Massively Open Online Courses *3 Open Courseware 4
  5. 5. 4 LRSによる学習履歴の集積 LRS (Learning Record Store) 5
  6. 6. 5 Experience APIの仕組み • データをJSON*4 (REST) でやり取りする • 誰が、どこの、何に、いつアクセスしてどうなったかが記録できる • 教材やWebページ、アプリにLRSと通信するボタンを仕込む {"id":"fd41c918-b88b-4b20-a0a5-a4c32391aaa0", "actor":{"objectType": "Agent", "name":"Project Tin Can API", "mbox":"mailto:user@example.com"}, "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
  7. 7. 参考: ジェイソンとは 最終的には冷凍保存されて400年後に復活、宇宙船内で暴れて サイボーグになり、最後は大気圏に突入するらしい...... 7
  8. 8. 6 RでJSONを扱う • JSONを扱ういろんなパッケージがある ■ rjson ... とりあえずこれで ■ RJSONIO ■ jsonlite ■ ... > install.packages("rjson") > require(rjson) 8
  9. 9. 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
  10. 10. 8 RでJSONデータを読み込んだ様子 10
  11. 11. 9 集計結果の例 (1) aa arrows11 arrows12 CBP_DEMO_01 chro12 chrome11 de1 dem02 demo01 koeda ogawa shimada tarou ユーザー名の集計結果 ユーザー名 アクセス数 0100200300400 11
  12. 12. 10 集計結果の例 (2) 時間帯別のカウント結果 アクセス数 020406080100 05/07 10:00 05/08 16:00 05/09 22:00 05/11 04:00 05/12 10:00 05/13 16:00 05/14 22:00 05/16 04:00 05/17 10:00 05/18 16:00 05/19 22:00 05/21 04:00 05/22 10:00 05/23 16:00 05/24 22:00 05/26 04:00 05/27 10:00 05/28 16:00 05/29 22:00 05/31 04:00 06/01 10:00 06/02 16:00 06/03 22:00 06/05 04:00 12
  13. 13. 11 まとめ • Experience APIというのがある • オンライン、オフライン、「教育っぽい」、「教育っぽくな い」問わずあらゆる学びを記録、蓄積できる • 基本的にはLRSにJSON形式でデータを送る仕組み • RでJSON形式のデータを扱う方法が複数ある • 今は「学び」だけど、ある種のアドテク(トラッキング) に向かっていくのでは... 13
  14. 14. 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

×