search
LoginSignup
2

More than 1 year has passed since last update.

posted at

Twitter APIを触ってみたくなったら最初に見る記事

はじめに

この記事ではプログラミングの初心者が、Twitter APIの申請を行いPythonでツイートを取得するまでを記録します。
Twitter APIは申請が必要なため、2020年7月時点の申請にかかる時間の参考としてもお使いください。

結論、私の場合は24時間以内に受理されました。

金曜の夜に申請して、土曜の午後には使うことができました。
途中、メールでTwitter社とのやりとりが発生してしまったため、レアケースかもしれません。

Twitter APIの申請方法

他の記事でも詳しく紹介されているので、こちらでは簡潔に2020年7月時点の情報をまとめます。

Developerサイトでログイン

Developerサイトにアクセスします。残念ながら英語を読み解く必要があります。

スクリーンショット 2020-07-22 0.45.38.png

右上の「Sign in」ボタンをクリックし、TwitterアカウントのID, PWでログインします。裏アカウントを持っている人は間違えないように注意しましょう 笑
もちろん、裏アカで情報収集したい方は裏アカウントで申請を続けましょう。そこが申請に関わるかは不明です。

Apply

ログイン後、右上に表示される「Apply」ボタンをクリックすると応募フォームに進みます。

後は手順に沿うことで申請は完了しますが、どのような項目があるのかざっくり解説します。

What is your primary reason for using Twitter developer tools?

APIの利用用途について答えます。趣味のプログラミング活動で使う場合、「Hobbyist」の「Exploring the API」を選択します。

This is you, right?

認証の手続きに進みます。Twitterアカウントにて電話番号の登録が必要です。

Tell us about your organization

チーム名、組織名などを入力します。個人名で大丈夫でした。URLも入力しなくてOKです。

How will you use the Twitter API or Twitter data?

APIの利用用途や分析方法について聞かれます。
英語で200文字以上、100文字以上など大変ですが、日本語で書いたものをGoogle翻訳するのが良いと思います。

オプションとなっているものは、該当するものがもしあれば追記しましょう。

Is everything correct?

確認画面です。問題なければ「Looks Good!」をクリックします。

Please review and accept

最後に、契約に同意すれば申請されます。

メールの確認

申請して数時間後、Twitter社さんからメールでメールが届きます。

わたしの場合は申請理由の欄に「将来はこんなビジネスをしたい!」みたいな野望をつらつらと書いた結果、追加質問されました。

スクリーンショット 2020-07-23 23.01.23.png

ちゃんと日本語で来るあたり、優しいですね。
日本語で返信すれば大丈夫です。

概ね以下のような内容で返信しました。

  • APIは趣味で利用する。自動的に重要な情報のみを収集できるようにしたい
  • ツイート、いいね数などを利用して重要度を分析したい
  • コンテンツはFlaskなどを利用して、ローカル上で処理する

受理

メールに返信して数時間後、今度は「受理されたよ」というメールが英語で届きました。
スクリーンショット 2020-07-23 23.12.02.png

これで、Developer Poralが使えるようになりました。

アクセスキーの取得

(プロジェクト)→アプリ→APIキーの順番で作成していきます。

ポータルの「Dashboard」にアクセスすると、アプリの一覧が表示されるようになっています。
左カラムから「Projects & Apps」の「Overview」を選択すると、プロジェクトの一覧が表示されます。
下の方にある「+Create App」ボタンをクリックすると以下の画面になります。

スクリーンショット 2020-07-23 23.24.56.png
名前は既存のアプリとかぶらないようにしなければなりません。

「Complete」ボタンを押すとアプリが作成され、API Key、Access Tokenが表示されるので大切に保管しましょう。

Pythonでツイートの取得

API Key, Access Tokenが取得できれば、準備完了です。
Pythonでツイートが取得できます。

以下ではtweepyというモジュールを使用し、私がフォローしているユーザさんの直近10個のツイートの中から、最もいいね数の多かったツイートをリストアップし、csvファイルとして出力しています。

import tweepy
import csv

Consumer_key = 'YOUR_API_KEY'
Consumer_secret = 'YOUR_API_SECRET'
Access_token = 'YOUR_ACCESS_TOKEN'
Access_secret = 'YOUR_ACCESS_SECRET'

auth = tweepy.OAuthHandler(Consumer_key, Consumer_secret)
auth.set_access_token(Access_token, Access_secret)
api = tweepy.API(auth)

# フォロー数を取得
num_friends = api.me().friends_count - 1
# API制限に引っかからないよう200人以下に抑える。そのうちsleepなどを入れて全部取れるようにしたい
if num_friends > 200:
  num_friends = 200

screen_names = []
user_names = []
max_fav_tweets = []
max_fav_favs = []

# api.friendsでフォロワーの情報が取れる!
for user in api.friends(count=num_friends):
  screen_names.append(user.screen_name)
  user_names.append(user.name)

for screen_name in screen_names:
  tweets_data = api.user_timeline(screen_name=screen_name, count=10)
  favs = [td.favorite_count for td in tweets_data]
  max_fav_data = tweets_data[favs.index(max(favs))]
  max_fav_tweet = max_fav_data.text
  max_fav_tweets.append(max_fav_tweet)
  max_fav_favs.append(max_fav_data.favorite_count)

# 以降はcsv整形の処理
output_list = [["no.", "名前", "id", "いいね!数",  "メッセージ"]]
numbering_list = list(range(1, len(max_fav_tweets) + 1))

for num, name, id, n_fav, fav in zip(numbering_list, user_names, screen_names, max_fav_favs,  max_fav_tweets):
  output_list.append([num, name, id, n_fav, fav])

with open("tweets.csv", "w", encoding="utf-8") as f:
  writer = csv.writer(f, lineterminator="\n")
  writer.writerows(output_list)

さいごに

Twitterは身近なサービスなので、API学習の入口としてとても良いです。
ぜひチャレンジしてみてください!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2