はじめに
現在、TwitterAPIを使って、トレンド情報を取得する機能を実装しています。
まだまだ途中ですが、ひとまずこれまで気づいたことをまとめていきます。
使用するAPIはStandard v1.0です。
なお、本記事は初学者によるものです。
アドバイスなどございましたら、コメントいただけると幸いです!
環境
- Ruby on Rails 6.0.0
- mac os catalina
- TwitterAPI standard v1.0
導入の手順
- Twitter developerへ登録
- 各API keyを取得
- gem Twitterを導入
###Twitter developerへ登録###
ぐぐると登録の仕方がたくさん出てくるので、深くは解説しません。
余談ですが、申請時に書く内容は全部日本語で記載しても通りました。
###各API keyを取得###
####【概要】####
APIを使用するために、認証をする必要があります。
認証には、以下4つのAPIキーが必要です。
- consumer key (API key)
- consumer secret (API secret)
- access token
- access secret
consumerは身分証のようなイメージです。
twitter developerに登録するとアプリごとに発行されます。
accessは通行券とか使用するパスポートみたいなイメージです。
使用の許可得てますよ!といったものです。
なお、これらのAPIキーは一度発行すると、同じものを再発行することはできないみたいです。
####【取得方法】####
①developerにログインし、Developper Portalを押します。
②Dashbordからアプリを登録
③アプリ横の鍵マークをクリックし、Access token & secretを発行します。
###gem Twitterを導入###
gem Twitterを導入しAPIを叩いていきます。
このgemを導入してやられている方が多かったので、ひとまずgemを導入してやってみようと考えました。
導入方法と、トレンド情報の取得方法を記載していきます。
####【導入方法】####
①Gemfileに'twitter'を記入し、bundle install
gem 'twitter'
$ bundle install
②railsを再起動
####【取得方法】####
①まずは認証(gemのgithubを参考)
client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV["TWITTER_API_KEY"]
config.consumer_secret = ENV["TWITTER_API_SECRET_KEY"]
config.access_token = ENV["TWITTER_ACCESS_TOKEN"]
config.access_token_secret = ENV["TWITTER_ACCESS_SECRET_TOKEN"]
end
APIkeyはgithubなどにアップするとまずいので、環境変数に設定します。
環境変数の設定方法はこちら
②trendsメソッドを使用してトレンド情報を取得
twitterの導入によりAPIを操作するメソッドが使用できます。
トレンド情報取得の場合はtrendsメソッドを使用します。
client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV["TWITTER_API_KEY"]
config.consumer_secret = ENV["TWITTER_API_SECRET_KEY"]
config.access_token = ENV["TWITTER_ACCESS_TOKEN"]
config.access_token_secret = ENV["TWITTER_ACCESS_SECRET_TOKEN"]
end
@trends = client.trends
@trendsの戻り値はこんな感じです。
@attrs=
{:trends=>
[{:name=>"#INDvENG",
:url=>"http://twitter.com/search?q=%23INDvENG",
:promoted_content=>nil,
:query=>"%23INDvENG",
:tweet_volume=>142604},
{:name=>"#自分をつくりあげたゲーム4選",
:url=>
...(略)
標準では、フォローしているアカウント、興味関心、位置情報から決まるようです。
個人的にはこのままだと、扱いづらいので日本のトレンド10件だけにしてみます。
client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV["TWITTER_API_KEY"]
config.consumer_secret = ENV["TWITTER_API_SECRET_KEY"]
config.access_token = ENV["TWITTER_ACCESS_TOKEN"]
config.access_token_secret = ENV["TWITTER_ACCESS_SECRET_TOKEN"]
end
@trends = client.trends(id = 23424856).attrs[:trends].first(10)
gemの公式のドキュメントによると、trends(id = yahooの国ID)とすることで、その国のトレンドに限定して取得できるようです。
(これ見つけるのに苦戦しました)
ここから学んだこと
①英語のドキュメントでも、翻訳してトライするべし
最初めちゃくちゃ抵抗ありました。
でも、翻訳してみると、思ったよりわかるかも?
といった感じがありました。
何事もまずはトライ。
②gemもrubyファイルの塊
ということは、どこかにメソッドの定義が書いてある?
参考
- 本当に知ってる?最低限押さえたいOAuthのマナー
- Getting started
- gem twitter
- gemのドキュメント(trendsのページ)
- TwitterのおすすめトレンドをAPI(Ruby)で取得する
- Twitterのトレンドについてのよくある質問
ありがとうございました!!