クリアメモリ

プログラミングやガジェットレビュー、便利なアプリケーションなど雑多に記録するブログ

【Ruby on Rails】Twitter Apiでdescription(説明欄)を取得する方法!

f:id:clrmemory:20171121145634p:plain

こんにちはクリアメモリです!

今回は、Ruby on RailsでTwitter Apiを使って、ユーザーの概要を表示させてみようと思います。ユーザーの概要というのはユーザー名の下に書いてあるような説明文みたいなやつですね。

はじめに

今回紹介する内容は、Ruby on RailsでTwitter Apiを使ってユーザーの概要を取得する方法です。説明文っていうのは、例えば私のアカウントだと以下のようになっています。

”備忘録としてプログラミングやWordPress・はてなブログのカスタマイズなどを記事にしたり、Macで使える便利なアプリケーションやガジェットなどについて紹介していきます。”

 

Twitter Apiを使うことで、

ユーザーの説明文(概要文)を取得できるようになるので是非試してみてください。

また、今回の記事では、これまで紹介してきた「ユーザー名」や「スクリーンネーム」を取得するコードを実装している前提で紹介しています。

 

まだ実装できていない方は、こちらからチェックするか、サイト内を探してみてください。

www.clrmemory.com

 

ではまずは、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の記述方法は過去記事を参考にしてみてください。

www.clrmemory.com

 

それと、実際にユーザーの説明文を取得して、作成したモデルの「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)を表示出来ました。

実行した結果がこちら

f:id:clrmemory:20170910041605p:plain

 

まとめ

 

今回紹介したように、Twitter apiをRuby on Railsで使えば、簡単にユーザーの説明文をを取得できるようになりました。

これまで紹介してきた方法と組みわせると、

より柔軟な使い方ができるので是非参考にしてみてください。

www.clrmemory.com

 

ではまた。

新着記事