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

2019年12月14日 12:37

はじめに

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】M1チップ搭載MacでRuby on Railsの開発環境構築
# はじめに M1チップ搭載MacにRuby on Railsの開発環境を構築する手順を記載します。 - MacBook Air (M1, 2020) - macOS Monterey 12.3.1 # Homebrew ## [...]
2022年5月5日 11:56
【Rails】Rakeタスクの基本情報と作成・実行方法
# はじめに Railsには標準でRakeというGemが同梱されています。RakeはRubyで実装されたMake(UNIX系のOSで使用できるコマンド)のようなビルド作業を自動化するツールです。Ruby Make、略してRakeというわけですね。 [...]
2022年3月7日 22:12
【Rails】Capybaraのfill_inメソッドを実行すると「既存レコードの内容+指定した内容」がセットされる事象の原因と対処【RSpec】
# はじめに RSpec + Capybaraを使用して、Railsアプリの統合テストを実装しています。とあるモデルの編集画面において、入力フォームの内容を書き換えた上で送信し、レコードが更新されることを確認します。 入力フォームの内容を書 [...]
2022年1月27日 21:22
【Rails】GitHubのセキュリティアラートで発見された脆弱性を解消する方法
# はじめに GitHubにはセキュリティアラートという機能があります。セキュリティアラートはリポジトリに含まれるライブラリやパッケージの脆弱性を定期的にチェックし、脆弱性のあるライブラリやパッケージが発見されたらアラートで知らせてくれるという機 [...]
2022年1月16日 10:36
【Rails】devise-two-factorを使った2段階認証の実装方法【初学者】
# はじめに Railsアプリで2段階認証を実装するには、「rotp」というGemを使う方法の他に、「devise-two-factor」というGemを使う方法があります。「devise-two-factor」はその名の通り、IDとパスワードによ [...]
2021年12月12日 17:58
【Rails】rotpを使った2段階認証の実装方法【初学者】
# はじめに 昨今はIDとパスワードによる認証だけでなく、ワンタイムパスワードによる2段階認証を導入するWebアプリが増えてきました。Railsで作成したWebアプリでも、IDとパスワードによる認証に加えて2段階認証を導入するニーズが高まっていま [...]
2021年11月27日 13:02
【Rails】deviseを使った認証機能の実装【初学者】
# はじめに Railsアプリに認証機能を導入するには「devise」というGemを使う方法が最も簡単です。「devise」は認証に係る機能をほとんどコードを書くことなく実装できる反面、処理がブラックボックス化されており、全容が把握しづらいという [...]
2021年11月27日 13:01
【Rails】IDとパスワードによる認証機能の実装【初学者】
# はじめに 大抵のWebアプリでは、ユーザー登録/解除、ログイン/ログアウトといった認証機能を持っています。Railsには簡単に認証機能を導入できる「device」というGemが用意されています。「devise」は多くのRailsアプリで使われ [...]
2021年11月27日 13:00