twitteRパッケージがdeprecated(廃止予定)になっていたのでいちおう注意しましょう。

RからTwitterAPIを利用するときの定番なのがtwitteRパッケージです。

こないだふとソースコードを見ようと思って元レポジトリに行くと、READMEにこんなことが書かれていました。

DEPRECATION

This is the start of a relatively leisurely deprecation period for twitteR, in favor of using rtweet. Please start looking to switch over to that package. If you have any questions contact myself or @mkearney (https://github.com/geoffjentry/twitteR#deprecation)

えっ。

twitteRパッケージは廃止予定になったらしいです。衝撃...

なぜ廃止予定なのか

実はこれは最近のことではなくてちょっと前、去年の8月に以下のメールがtwitteRユーザ用のメーリングリストで流れていました。

[twitteR-users] twitteR -> rtweet

I'm sure it has been noticed that I haven't been actively maintaining the twitteR package for quite some time. It's been a situation where my days using R are getting further and further in the rear view mirror causing everything to take longer than it should, combined with just not having enough time to fiddle with it.

なぜtwitteRパッケージがdeprecatedになったかというと、この人はもうRから離れて久しく、しかも忙しくなってきたから十分にメンテできない、と。

まあそれは仕方ないよね、という感じですね。むしろそんな状態でも放置せずにちゃんとメンテしてくれてありがとう、という気持ちに私はなりました。おつかれさまでした。

rtweetパッケージ

そんなtwitteRパッケージの後継(?)はrtweetパッケージらしいです。(twitteRパッケージと比べた時に現時点でどれくらい開発が進んでいるのかよく知らないので、詳しい方はぜひ比較記事を書いてください!)

使い方をここで詳しく解説することはしませんが、vignetteが割と充実してるのでそちらを見てください。例えば以下のvignetteでは、Twitter APIのトークンの取得方法がスクリーンショット入りで説明されていてありがたかったです。

Obtaining and using access tokens

例えばツイート検索のAPIからツイートを取得するには以下です。tokenには、上のvignetteの方法で取得したトークンオブジェクト(httrパッケージのoauth1.0_token()でつくれるものと同じです)を指定します。

library(rtweet)

search_tweets(q = "#rstats", n = 5, token = twitter_token)

ただし、内部で使われているhttrのOAuth1.0関連の実装にバグがあるので、日本語とかUTF-8の文字を検索することはできません(つらい)。次のように、iconv()UTF-8に変換した上で(Windows以外ではやらなくてもいいはず)URLencode()しないと正しい検索結果を得ることができないので注意しましょう。

search_tweets(q = URLencode(iconv("東京", to = "UTF-8")), n = 5)

素のhttrという手もあるかも

もちろん、httrをそのまま使うという手もあります。以下がTwitterREST APIのドキュメントですが、明らかにパッケージで用意されている関数より多くの、膨大なAPIがあることがわかります。素のhttrでやる場合は、この中から目的にあったものを見つける大変さもありますが、選択肢の幅はそのまま魅力でもあります。たぶん。

Reference Documentation — Twitter Developers

上と同じくツイート検索をするには以下のようにします。(今のところ上に書いたのと同じバグを踏むのURLencode()iconv()が必要ですが、そのうち必要なくなるはずです)

library(httr)

res <- GET("https://api.twitter.com/1.1/search/tweets.json",
           query = list(
             q = URLencode(iconv("東京", to = "UTF-8")),
             count = 5
           ),
           config = config(token = twitter_token))

ただし、httrでやった場合は結果がものすごい長さのリストになるので、それを自分で処理するのはやや骨が折れます。備えよう。

まとめ

twitteRパッケージは、deprecatedになったとはいっても、おそらくまだまだ残り続けるでしょう。「a relatively leisurely deprecation period」って言ってるし。今手元で動いているスクリプトがあれば、それを急いで置き換える必要はないと思います。

ただ、Twitter APIの変更や、Rや依存パッケージのバージョンアップに追随できなくて動かなくなる、という可能性はあります。今後も使い続けるものであれば、rtweetやほかのパッケージへの移行を検討しましょう。といっても私もあんまり詳しくないので、もっと使えそうなパッケージがあればタレコミお待ちしています。