RとWeb API

60
RとWeb API @yokkuns: 里 洋平 第5回 R勉強会@東京(Toyo.R#05) 2010/05/22

Transcript of RとWeb API

Page 1: RとWeb API

RとWeb API

@yokkuns: 里 洋平第5回 R勉強会@東京(Toyo.R#05)

2010/05/22

Page 2: RとWeb API

AGENDA

自分と@kakeibot の紹介

Web APIとは

RとWeb API

Page 3: RとWeb API

@yokkuns : 里 洋平

Webエンジニア

Tokyo.R、数式ニヤニヤ勉強会の主催者

確率・統計・モデリング/パターン認識/機械学習/データマイニング/NLP/画像解析/金融工学/保険数理/量子力学などを勉強中。

プログラミング言語は、C/C++/Perl/Ruby/PHP/R/JSとかやってます。

@kakeibot っていうtwitter botの開発者

Page 4: RとWeb API

@yokkuns : 里 洋平

Webエンジニア

Tokyo.R、数式ニヤニヤ勉強会の主催者

確率・統計・モデリング/パターン認識/機械学習/データマイニング/NLP/画像解析/金融工学/保険数理/量子力学などを勉強中。

プログラミング言語は、C/C++/Perl/Ruby/PHP/R/JSとかやってます。

@kakeibot っていうtwitter botの開発者

Page 5: RとWeb API

kakeibotの紹介

Twitter のbot 支出をリプライすると、自動で分類して記録する

Yahoo!のウェブ検索APIとキーフレーズAPIを使ってる

Page 6: RとWeb API

Kakeibotの機能

@kakeibot 食費 1000円

Page 7: RとWeb API

Kakeibotの機能

@kakeibot 食費 1000円

Page 8: RとWeb API

Kakeibotの機能

@kakeibot 弁当 500円

Page 9: RとWeb API

Kakeibotの機能

@kakeibot 弁当 500円

Page 10: RとWeb API

Kakeibotの機能

@kakeibot アナログの目覚まし時計を買ったら500円だった

Page 11: RとWeb API

Kakeibotの機能

@kakeibot アナログの目覚まし時計を買ったら500円だった

Page 12: RとWeb API

Kakeibotの機能

@kakeibot ラーメン800円。テスト

Page 13: RとWeb API

Kakeibotの機能

@kakeibot ラーメン800円。テスト

Page 14: RとWeb API

分類の精度が悪いのでRで作り直そうと思ってます

Page 15: RとWeb API

まだ、何もしてない。。。

Page 16: RとWeb API

まだ、何もしてない。。。

共同開発者募集中です!

Page 17: RとWeb API

twitteRとRCaBoChaを使って、試したりはしてます

@kakeibot コーヒー60円、お菓子に300円。(テスト)

Page 18: RとWeb API

twitteRとRCaBoChaを使って、試したりはしてます

Page 19: RとWeb API

twitteRとRCaBoChaを使って、試したりはしてます

Page 20: RとWeb API

Web APIとは

Page 21: RとWeb API

Web APIとは

自分以外の誰かが作ったデータやプログラムを自分のコンテンツの中で使うための技術

複数のAPIを連携させて独自の価値を持つコンテンツを作ることはマッシュアップと呼ばれてる

Page 22: RとWeb API

Web APIのプロトコル

REST XML-RPC SOAP

Page 23: RとWeb API

Web APIのプロトコル

REST XML-RPC SOAP

Page 24: RとWeb API

REST

4つのHTTPメソッドで操作 GET : 取得

POST : 新規作成

PUT : 更新

DELETE : 削除

GETとPOSTが多い 分かりやすい

GETについては、ブラウザで確認出来る

Page 25: RとWeb API

Web APIの分類

検索系

変換系

認証系

表現系

Page 26: RとWeb API

Web APIの分類

検索系

変換系

認証系

表現系

Page 27: RとWeb API

Amazon 商品検索

Page 28: RとWeb API

Yahoo! JAPAN デベロッパーネットワーク > 検索

Page 29: RとWeb API

Web APIの分類

検索系

変換系

認証系

表現系

Page 30: RとWeb API

郵便専門ネット Webサービス

Page 31: RとWeb API

Yahoo! JAPAN デベロッパーネットワーク > テキスト解析

Page 32: RとWeb API

Web APIの分類

検索系

変換系

認証系

表現系

Page 33: RとWeb API

はてなでOpenID

Page 34: RとWeb API

Yahoo! JAPAN デベロッパーネットワーク > OAuth

Page 35: RとWeb API

Web API まとめ

Web APIは、ネット上のデータを利用することの出来る技術

プロトコルには、REST、XML-RPC、SOAPなどがあるが、RESTが主流

AmazonとかYahoo!などいろんな企業が提供してくれてる

Page 36: RとWeb API

RとWeb API

Page 37: RとWeb API

RとWeb API

Web APIに関連しそうなCRANパッケージ 基本的なもの

RCurl rjson XML

個別サービス専用 RGoocleDocs R2GoogleMaps RKML twitteR RAmazonS3 RAmazonDBREST Rflickr ・・・

Page 38: RとWeb API

RとWeb API

Web APIに関連しそうなCRANパッケージ 基本的なもの

RCurl rjson XML

個別サービス専用 RGoocleDocs R2GoogleMaps RKML twitteR RAmazonS3 RAmazonDBREST Rflickr

Page 39: RとWeb API

Rcurlパッケージ

HTTPやFTP、SCPなどの一般的なネットワークのRのインタフェース

アプリケーション層のプロトコルを抽象化することで、本質的な開発に集中できる

Page 40: RとWeb API

Rcurlパッケージ

HTTPやFTP、SCPなどの一般的なネットワークのRのインタフェース

アプリケーション層のプロトコルを抽象化することで、本質的な開発に集中できる

Page 41: RとWeb API

Rcurlパッケージ

HTTPやFTP、SCPなどの一般的なネットワークのRのインタフェース

アプリケーション層のプロトコルを抽象化することで、本質的な開発に集中できる

curlがやってくれる

Page 42: RとWeb API

Rcurlパッケージのインストール

依存ライブラリ libcurlが必要$ sudo yum install curl-devel

インストール

> install.packages(“RCurl”)

Page 43: RとWeb API

Rcurlパッケージの使い方

getURL(url, ..., .opts = list(), write=basicTextGatherer(), curl = getCurlHandle(), async = length(url) > 1, .encoding = integer())

postForm(uri, ..., .params = list(), .opts = curlOptions(url = uri), curl = getCurlHandle(), style = 'HTTPPOST', .encoding = integer(), binary = NA, .checkParams = TRUE, .contentEncodeFun = curlEscape)

Page 44: RとWeb API

rjsonパッケージ

RでJSON形式のデータを扱うためのパッケージ JSON => Rオブジェクト

Rオブジェクト => JSON

Page 45: RとWeb API

rjsonパッケージの使い方

インストール

> install.packages(“rjson”)

JSONをRオブジェクトに変換

> fromJson( json )

RオブジェクトをJSONに変換

> toJson( r )

Page 46: RとWeb API

Yahoo! ブログ検索 APIを使ってみる(JSON形式)

> library(RCurl) 要求されたパッケージ bitops をロード中です

> library(rjson)> json <-

getURI(“http://search.yahooapis.jp/BlogSearchService/V1/blogSearch?appid=アプリケーションID&output=json&query=TokyoR")

> obj <- try(suppressWarnings(fromJSON(json)), silent = TRUE)

Page 47: RとWeb API

XMLパッケージ

XMLの入出力をサポートするパッケージ HTMLも扱えるので、スクレイピングにも使える

RFinanceYJはこれを使ってます

HTTPやFTPからの取得も可能

Web APIは、XML形式のものが多いので、使えると便利

Page 48: RとWeb API

Yahoo! ブログ検索 APIを使ってみる(XML形式)

> library(XML)> xml <-

xmlParse(‘http://search.yahooapis.jp/BlogSearchService/V1/blogSearch?appid=アプリケーションID&query=TokyoR',T)

> obj <- xmlToDataFrame(xml)Called from: xmlToDataFrame(doc, colClasses, homogeneous,

collectNames, nodes = xmlChildren(xmlRoot(doc)))Browse[1]>> names(obj)[1] "Id" "RssUrl" "Title" "Description" "Url"[6] "Creator" "mobileLink" "DateTime" "Site"

Page 49: RとWeb API

RとWeb API

Web APIに関連しそうなCRANパッケージ 基本的なもの

RCurl XML rjson

個別サービス専用 RGoocleDocs R2CoogleMaps RKML twitteR RAmazonS3 RAmazonDBREST Rflickr ・・・

Page 50: RとWeb API

twitteRパッケージ

Rベースののtwitterクライアント

依存パッケージ RCurl Rjson

Page 51: RとWeb API

twitteRパッケージの使い方(認証が要らないAPI)

Public TimelinepublicTimeline()

ユーザのタイムライン

userTimeline ( ユーザ名 )

Page 52: RとWeb API

twitteRパッケージの使い方(認証が必要なAPI)

初期化

yokkuns <- initSession("yokkuns","********") Rcurlの初期化

自分のタイムライン

friendsTimeline (yokkuns)

リプライ

mentions(yokkuns)

Page 53: RとWeb API

twitteRパッケージの使い方(statusクラス)

これらの関数で返ってくる結果は、statusクラスのオブジェクトのリスト

statusクラスのメソッド show text favorited replyToSN created truncated replyToSID id replyToUID statusSource

screenName

Page 54: RとWeb API

twitteRデモ

時間があれば、実際に動かしてみます

Page 55: RとWeb API

RとWeb API まとめ

Rには、RCurl、rjson、XML、RSOAPなど、Web APIを使うためのパッケージがある

これらを使って、各サービス専用のパッケージがある。 RAmazonS3、twitteRなど

簡単に作れるので、すぐCRANオーナーになれる! Yahoo! のが無いからチャンスかも

Page 56: RとWeb API

宣伝

Page 57: RとWeb API

数式ニヤニヤ勉強会

Page 58: RとWeb API

ライブ告知

8/14(土)に

ライブ出ることに

なりました!

Page 59: RとWeb API

まとめ

自分と@kakeibotの紹介

Web APIとは

RとWeb API 数式ニヤニヤ勉強会の宣伝

ライブ告知

Page 60: RとWeb API

ご清聴ありがとうございました