今回は、Ruby on RailsでTwitter Apiを使って、ユーザーの概要を表示させてみようと思います。
ユーザーの概要というのはユーザー名の下に書いてあるような説明文みたいなやつですね。
はじめに
今回紹介する内容は、Ruby on RailsでTwitter Apiを使ってユーザーの概要を取得する方法です。
説明文っていうのは、例えば私のアカウントだと以下のようになっています。
”備忘録としてプログラミングやWordPress・はてなブログのカスタマイズなどを記事にしたり、Macで使える便利なアプリケーションやガジェットなどについて紹介していきます。”
Twitter Apiを使うことで、ユーザーの説明文(概要文)を取得できるようになるので是非試してみてください。
また、今回の記事では、これまで紹介してきた「ユーザー名」や「スクリーンネーム」を取得するコードを実装している前提で紹介しています。
まだ実装できていない方は、こちらからチェックするか、サイト内を探してみてください。
ではまずは、Ruby on Railsの新規プロジェクトを作成していきましょう。
ターミナルなどで、以下のコマンドを実行してください。
rails new twitter_api_user
このように入力し実行すると、設定した保存先にプロジェクトを作成できます。
では作成したプロジェクトを参照しておいてください。
ここではcdコマンドを使ってtwitter_api_userを参照しましょう。
コントローラーを作成
これまで、何回かに分けてRuby on RailsでTwitter Apiを動かしてきました。
ですので、今回も同じコントローラーを使って実装していきます。
まだ作成していない方は、過去の記事を遡るか、以下のコマンドを実行してください。
rails g controller users
このように実行することで、参照したフォルダに「users」というコントローラーを作成できました。
モデルを作成
続いてユーザーのデータを格納しておくためのモデルを作成しましょう。
コントローラーの時と同様、以下のコマンドを実行してください。
rails g model user name:text screen:text description:text
もし、これまでの「ユーザー名」や「スクリーンネーム」を実装している方は、データを追加するので、以下のように実行します。
rails g migration add_description_to_users description:text
このように入力することで、モデルを追加できました。
モデルを操作した後は「rails db:migrate」を実行しておいてくださいね。
Gemをインストールする
Ruby on RailsでTwitter apiを使うために、今回もGemという機能を使用します。
先ほど作成したプロジェクトの中に「Gemfile」というファイルがあるので開いてください。
コードが表示されるので、その一番下に以下のコードを追加します。
gem 'twitter'
続いて、ターミナルで
bundle install
を実行して、Gemの追加を完了させましょう。
Twitter apiを使う
では実際にTwitter apiを使って、ユーザーの説明文を取得してみましょう。
Twitter apiを使うためには、コントローラーに以下の記述を追加する必要があります。
require 'twitter'
こんな感じのコードをコントローラーに追加するだけでTwitter apiが使えちゃうんだから便利ですよね。
では、実際にユーザーの説明文を取得するコードがこちらです。
class UsersController < ApplicationController
def index
@user = User.new
end
def user
require 'twitter'
client = Twitter::REST::Client.new do |config|
config.consumer_key = Rails.application.secrets.user_consumer_key
config.consumer_secret = Rails.application.secrets.user_consumer_secret
config.access_token = Rails.application.secrets.user_access_token
config.access_token_secret = Rails.application.secrets.user_access_token_secret
end
@user = User.new(
name: client.user.name,
screen_name: client.user.screen_name,
description: client.user.description,
)
end
end
このように記述すれば、実行時にユーザーの説明文を取得できます。
ちなみに、紹介したコードでは、これまで紹介してきたユーザー名やスクリーンネームの処理も一緒に書いてあります。不要な場合は削除してくださいね。
このコードの中で重要なのはapiを使うユーザーのConsumer KeyやAccessTokenなどを取得している「Twitter::REST::Client」の部分。
この部分では、secretes.ymlというファイルを参照しています。secrets.ymlの記述方法は過去記事を参考にしてみてください。
それと、実際にユーザーの説明文を取得して、作成したモデルの「description」に格納している「client.user.description」
この2つだけ覚えておけば、Twitter apiでユーザーの情報を取得できるようになります。
テンプレートを作成
では、実際にテンプレートを作成して、取得したユーザーの説明文を表示させてみましょう。
まだテンプレートファイルを作成していない方は、user.html.erbというファイルを作成し、その中に記述していきます。
すでに作成している方は、user.html.erbを以下のように書き換えてください。
<h1>User List</h1>
<table>
<tr>
<th>name</th><th>screen</th><th colspan="3">description</th>
</tr>
<tr>
<td><%= @user.name %></td>
<td>@<%= @user.screen_name %></td>
<td><%= @user.description %></td>
</tr>
</table>
このようにすると、ユーザーの説明文(Description)を表示出来ました。
実行した結果がこちら
まとめ
今回紹介したように、Twitter apiをRuby on Railsで使えば、簡単にユーザーの説明文をを取得できるようになりました。
これまで紹介してきた方法と組みわせると、より柔軟な使い方ができるので是非参考にしてみてください。
ではまた。