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.

RとWeb API

11,138 views

Published on

Published in: Technology
  • Be the first to comment

RとWeb API

  1. 1. RとWeb API @yokkuns: 里 洋平 第5回 R勉強会@東京(Toyo.R#05) 2010/05/22
  2. 2. AGENDA  自分と@kakeibot の紹介  Web APIとは  RとWeb API
  3. 3. @yokkuns : 里 洋平  Webエンジニア  Tokyo.R、数式ニヤニヤ勉強会の主催者  確率・統計・モデリング/パターン認識/機械学習/ データマイニング/NLP/画像解析/金融工学/保 険数理/量子力学などを勉強中。  プログラミング言語は、C/C++/Perl/Ruby/PHP/R/ JSとかやってます。  @kakeibot っていうtwitter botの開発者
  4. 4. @yokkuns : 里 洋平  Webエンジニア  Tokyo.R、数式ニヤニヤ勉強会の主催者  確率・統計・モデリング/パターン認識/機械学習/ データマイニング/NLP/画像解析/金融工学/保 険数理/量子力学などを勉強中。  プログラミング言語は、C/C++/Perl/Ruby/PHP/R/ JSとかやってます。  @kakeibot っていうtwitter botの開発者
  5. 5. kakeibotの紹介  Twitter のbot  支出をリプライすると、自動で分類して記録する  Yahoo!のウェブ検索APIとキーフレーズAPIを使 ってる
  6. 6. Kakeibotの機能 @kakeibot 食費 1000円
  7. 7. Kakeibotの機能 @kakeibot 食費 1000円
  8. 8. Kakeibotの機能 @kakeibot 弁当 500円
  9. 9. Kakeibotの機能 @kakeibot 弁当 500円
  10. 10. Kakeibotの機能 @kakeibot アナログの目覚まし時 計を買ったら500円だった
  11. 11. Kakeibotの機能 @kakeibot アナログの目覚まし時 計を買ったら500円だった
  12. 12. Kakeibotの機能 @kakeibot ラーメン800円。テスト
  13. 13. Kakeibotの機能 @kakeibot ラーメン800円。テスト
  14. 14. 分類の精度が悪いのでRで作り直そうと思ってます
  15. 15. まだ、何もしてない。。。
  16. 16. まだ、何もしてない。。。 共同開発者募集中です!
  17. 17. twitteRとRCaBoChaを使って、試したりはしてます @kakeibot コーヒー60円、お菓子に300円。(テスト)
  18. 18. twitteRとRCaBoChaを使って、試したりはしてます
  19. 19. twitteRとRCaBoChaを使って、試したりはしてます
  20. 20. Web APIとは
  21. 21. Web APIとは  自分以外の誰かが作ったデータやプログラムを 自分のコンテンツの中で使うための技術  複数のAPIを連携させて独自の価値を持つコン テンツを作ることはマッシュアップと呼ばれてる
  22. 22. Web APIのプロトコル  REST  XML-RPC  SOAP
  23. 23. Web APIのプロトコル  REST  XML-RPC  SOAP
  24. 24. REST  4つのHTTPメソッドで操作  GET : 取得  POST : 新規作成  PUT : 更新  DELETE : 削除  GETとPOSTが多い  分かりやすい  GETについては、ブラウザで確認出来る
  25. 25. Web APIの分類  検索系  変換系  認証系  表現系
  26. 26. Web APIの分類  検索系  変換系  認証系  表現系
  27. 27. Amazon 商品検索
  28. 28. Yahoo! JAPAN デベロッパーネットワーク > 検索
  29. 29. Web APIの分類  検索系  変換系  認証系  表現系
  30. 30. 郵便専門ネット Webサービス
  31. 31. Yahoo! JAPAN デベロッパーネットワーク > テキスト解析
  32. 32. Web APIの分類  検索系  変換系  認証系  表現系
  33. 33. はてなでOpenID
  34. 34. Yahoo! JAPAN デベロッパーネットワーク > OAuth
  35. 35. Web API まとめ  Web APIは、ネット上のデータを利用することの 出来る技術  プロトコルには、REST、XML-RPC、SOAPなど があるが、RESTが主流  AmazonとかYahoo!などいろんな企業が提供し てくれてる
  36. 36. RとWeb API
  37. 37. RとWeb API  Web APIに関連しそうなCRANパッケージ  基本的なもの  RCurl  rjson  XML  個別サービス専用  RGoocleDocs  R2GoogleMaps  RKML  twitteR  RAmazonS3  RAmazonDBREST  Rflickr  ・・・
  38. 38. RとWeb API  Web APIに関連しそうなCRANパッケージ  基本的なもの  RCurl  rjson  XML  個別サービス専用  RGoocleDocs  R2GoogleMaps  RKML  twitteR  RAmazonS3  RAmazonDBREST  Rflickr
  39. 39. Rcurlパッケージ  HTTPやFTP、SCPなどの一般的なネットワーク のRのインタフェース  アプリケーション層のプロトコルを抽象化するこ とで、本質的な開発に集中できる
  40. 40. Rcurlパッケージ  HTTPやFTP、SCPなどの一般的なネットワーク のRのインタフェース  アプリケーション層のプロトコルを抽象化するこ とで、本質的な開発に集中できる
  41. 41. Rcurlパッケージ  HTTPやFTP、SCPなどの一般的なネットワーク のRのインタフェース  アプリケーション層のプロトコルを抽象化するこ とで、本質的な開発に集中できる curlがやってくれる
  42. 42. Rcurlパッケージのインストール  依存ライブラリ  libcurlが必要 $ sudo yum install curl-devel  インストール > install.packages(“RCurl”)
  43. 43. 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)
  44. 44. rjsonパッケージ  RでJSON形式のデータを扱うためのパッケージ  JSON => Rオブジェクト  Rオブジェクト => JSON
  45. 45. rjsonパッケージの使い方  インストール > install.packages(“rjson”)  JSONをRオブジェクトに変換 > fromJson( json )  RオブジェクトをJSONに変換 > toJson( r )
  46. 46. Yahoo! ブログ検索 APIを使ってみる(JSON形式) > library(RCurl) 要求されたパッケージ bitops をロード中です > library(rjson) > json <- getURI(“http://search.yahooapis.jp/BlogSearchSe rvice/V1/blogSearch?appid=アプリケーション ID&output=json&query=TokyoR") > obj <- try(suppressWarnings(fromJSON(json)), silent = TRUE)
  47. 47. XMLパッケージ  XMLの入出力をサポートするパッケージ  HTMLも扱えるので、スクレイピングにも使える  RFinanceYJはこれを使ってます  HTTPやFTPからの取得も可能  Web APIは、XML形式のものが多いので、使え ると便利
  48. 48. Yahoo! ブログ検索 APIを使ってみる(XML形式) > library(XML) > xml <- xmlParse(‘http://search.yahooapis.jp/BlogSearchService/V1/blogS earch?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"
  49. 49. RとWeb API  Web APIに関連しそうなCRANパッケージ  基本的なもの  RCurl  XML  rjson  個別サービス専用  RGoocleDocs  R2CoogleMaps  RKML  twitteR  RAmazonS3  RAmazonDBREST  Rflickr  ・・・
  50. 50. twitteRパッケージ  Rベースののtwitterクライアント  依存パッケージ  RCurl  Rjson
  51. 51. twitteRパッケージの使い方(認証が要らないAPI)  Public Timeline publicTimeline()  ユーザのタイムライン userTimeline ( ユーザ名 )
  52. 52. twitteRパッケージの使い方(認証が必要なAPI)  初期化 yokkuns <- initSession("yokkuns","********")  Rcurlの初期化  自分のタイムライン friendsTimeline (yokkuns)  リプライ mentions(yokkuns)
  53. 53. twitteRパッケージの使い方(statusクラス)  これらの関数で返ってくる結果は、statusクラス のオブジェクトのリスト  statusクラスのメソッド  show  text  favorited  replyToSN  created  truncated  replyToSID  id  replyToUID  statusSource  screenName
  54. 54. twitteRデモ 時間があれば、実際に動かしてみます
  55. 55. RとWeb API まとめ  Rには、RCurl、rjson、XML、RSOAPなど、Web APIを使うためのパッケージがある  これらを使って、各サービス専用のパッケージ がある。  RAmazonS3、twitteRなど  簡単に作れるので、すぐCRANオーナーになれ る!  Yahoo! のが無いからチャンスかも
  56. 56. 宣伝
  57. 57. 数式ニヤニヤ勉強会
  58. 58. ライブ告知 8/14(土)に ライブ出ることに なりました!
  59. 59. まとめ  自分と@kakeibotの紹介  Web APIとは  RとWeb API  数式ニヤニヤ勉強会の宣伝  ライブ告知
  60. 60. ご清聴ありがとうございました

×