【2019年版】RailsアプリからTwitterに更新内容を自動投稿!RailsとTwitterの連携機能を実装

はじめに

Railsアプリで作ったブログなどで更新内容をTwitterに投稿するといった連携機能を実装する方法を解説します。
実装するにはまずTwitter APIに登録する必要があるのですが、登録方法が年々(主に複雑なほうへと)変化しているようなので、2019年12月現在の登録方法で書いています。

Twitter APIに登録

Twitter Developerにアクセスします。

右上のAppsをクリックします。

右上のCreate an appをクリックします。

注意書きを読みApplyボタンをクリックします。

HobbyistのMaking a botを選択してNextボタンをクリックします。

アカウントの情報が表示されるので、間違いないか確認して下へスクロールします。

英語 日本語 回答
What country do you live in? 居住国は? Japan
What would you like us to call you? ニックネームは? 適当に入力
Want upates about the Twitter API? Twitter APIの更新情報が必要? チェックしない

Nextボタンをクリックします。

Twitter APIをどういう用途で使用するか英語で記述します。できるだけ詳細に書くと審査と承認が下りやすいらしいです。200文字以上入力する必要があります。

すべてNoに変更します。Yesにする場合はその理由を英語で記述する必要があります。

表示されている内容に間違いがなければLooks good!ボタンをクリックします。

利用規約を読み、チェックボックスをオンにしてSubmit Applicationボタンをクリックします。

登録メールアドレスにメールが送られました。

Confirm your emailボタンをクリックします。

Create an appをクリックします。

もう一度Create an appボタンをクリックします。

必須(required)項目を入力します。アプリの説明は英語じゃなくても大丈夫です(たぶん)。
最後にCreateボタンをクリックします。

利用規約を読んで問題なければCreateボタンをクリックします。

Keys and tokensをクリックします。

API key/API secret key/Access token/Access token secretをコピーしておきます。トークンはCreateボタンをクリックすると表示されます。

Railsアプリの実装

まず、rails g scaffoldなどで記事の投稿機能を実装しておきます。
次にGemfileに以下を追加してbundle installを実行します。

gem 'twitter'

記事のコントローラーを以下のように変更します(以下は関係あるところだけ記載しています)。

class ArticlesController < ApplicationController
  before_action :twitter_client, only: [:create]

  def create
    @article = Article.new(article_params)
    if @article.save
      @client.update("#{@article.title} #{article_url(@article.id)}\r")
      redirect_to articles_path
    else
      render 'new'
    end
  end

  private
    def twitter_client
      @client = Twitter::REST::Client.new do |config|
        config.consumer_key        = Rails.application.credentials.twitter[:api_key]
        config.consumer_secret     = Rails.application.credentials.twitter[:api_secret_key]
        config.access_token        = Rails.application.credentials.twitter[:access_token]
        config.access_token_secret = Rails.application.credentials.twitter[:access_token_secret]
      end
    end
end

ざっくりと以下の流れになっています。

  1. createメソッドを実行する前にtwitter_clientメソッドを実行。
  2. twitter_clientメソッドでCredentialsから取得した認証情報を設定しTwitterクライアントを作成。
  3. createメソッドでTwitterクライアントを使用してTwitterに更新内容をツイート。

まとめ

Twitter APIの登録が少し面倒ですが、登録さえしてしまえばRailsの実装は簡単なので、RailsとTwitterの連携機能を実装してみてください。

関連記事

【Rails】RSpecを使った自動テスト《システムスペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 17:07
【Rails】RSpecを使った自動テスト《リクエストスペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 16:06
【Rails】RSpecを使った自動テスト《コントローラースペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 15:39
【Rails】RSpecを使った自動テスト《基本編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月10日 17:49
【Rails】デザインパターン「Concern」の基本情報と実装方法
# はじめに Ruby on RailsなどのMVCフレームワークで構築したWebシステムにはアンチパターンというものが存在します。システム開発におけるアンチパターンとは、避けるべき悪い設計や実装方法のことを指します。 MVCフレームワーク [...]
2024年7月10日 13:32
【Rails】デザインパターン「Form Object」の基本情報と実装方法
# はじめに Ruby on RailsなどのMVCフレームワークで構築したWebシステムにはアンチパターンというものが存在します。システム開発におけるアンチパターンとは、避けるべき悪い設計や実装方法のことを指します。 MVCフレームワーク [...]
2024年7月6日 22:50
【Rails】デザインパターン「Service Object」の基本情報と実装方法
# はじめに Ruby on RailsなどのMVCフレームワークで構築したWebシステムにはアンチパターンというものが存在します。システム開発におけるアンチパターンとは、避けるべき悪い設計や実装方法のことを指します。 MVCフレームワーク [...]
2024年7月6日 19:59
【Rails】Dockerを使用してRuby on Railsの開発環境を構築
# はじめに Ruby on Railsは強力なWebアプリケーションフレームワークですが、開発環境の構築には時間がかかることがあります。特に、チーム全体で一貫した環境を維持することは困難な場合があります。 Dockerを使用することで、R [...]
2024年7月5日 18:49