【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】Paranoiaを使用した論理削除(ソフトデリート)
# はじめに Paranoiaは、Railsアプリケーションで論理削除(ソフトデリート)を実現するためのGemです。 論理削除は、データベースのレコードを物理的に削除するのではなく、削除フラグを設定することで「削除済み」とみなす方法です。こ [...]
2024年7月20日 21:33
【Rails】activerecord-multi-tenantを使用したマルチテナントアプリケーションの作成
# はじめに マルチテナントアプリケーションでは、複数の顧客(テナント)が同じアプリケーションを利用するため、データの分離が必要です。 activerecord-multi-tenantは、このようなマルチテナント環境をサポートするための便 [...]
2024年7月18日 16:50
【Rails】RubyとRailsにおけるattr_reader, attr_writer, attr_accessorの概念と使用方法
# はじめに RubyとRailsの開発において、`attr_reader`,`attr_writer`,`attr_accessor`は非常に便利なメソッドです。これらは、クラス内でインスタンス変数に対するゲッターおよびセッターメソッドを簡単に [...]
2024年7月17日 18:11
【Rails】RubyとRailsにおけるyieldの概念と使用方法
# はじめに RubyとRailsにおける`yield`は、メソッドやテンプレートの中で動的にコードブロックを実行する能力を提供し、これによってコードの再利用性と拡張性が大幅に向上します。本記事では、RubyとRailsにおける`yield`の概 [...]
2024年7月17日 13:15
【Rails】AASMを使用してオブジェクトの状態遷移を効率的に管理
# はじめに Railsアプリケーションにおいて、オブジェクトの状態管理は重要な課題の一つです。AASM (Acts As State Machine) gemは、複雑な状態遷移を効率的に管理します。本記事では、AASMの基本的な使い方を解説して [...]
2024年7月16日 18:00
【Rails】RSpec + Swagger + rswagでアプリケーションのAPIをテストおよびドキュメント化する方法
# はじめに Railsアプリケーションの開発において、APIのテストとドキュメント化は重要な要素です。 RSpecはテストフレームワークとして広く利用されており、SwaggerはAPIの設計とドキュメント化を支援します。これらを統合するr [...]
2024年7月16日 14:27
【Rails】mailcatcherを使用して開発環境でメール送信をテストする方法
# はじめに mailcatcherは、開発環境でのメール送信をキャプチャするためのツールです。ローカルで送信されたメールをブラウザ上で簡単に確認できるようにします。mailcatcherをRailsアプリケーションで使用する方法について説明しま [...]
2024年7月15日 16:37
【Rails】impressionistを使用してページビューやクリック数を追跡する方法
# はじめに impressionist Gemを使用してRailsアプリケーションでページビューやクリック数を追跡する方法について説明します。 # 実装方法 ## impressionist Gemのインストール まず、impre [...]
2024年7月15日 14:18