【Twitter API v2.0】利用申請通ったので方法を記録_2021年5月

#はじめに
Twitter APIを使いたいと思って調べ始めると、
「利用申請が必要で、申請後にTwitter社から承認のメールが来る」
「申請しても承認されないことがある」
等の情報が出てきました。

何はともあれ申請してみよう！と申請してみたら、
仕様が変わったのか、特に審査を待つこともなくすぐに承認され、
Developer Portalの画面を操作できるようになりました。

この記事は、私が申請したとき（2021/05/03）の手順の記録です。

#なぜTwitter APIを使いたいのか
業務で、あるキーワードについてのツイート件数を調べる必要が出てきました。
「件数調べられるサイトとかあるんでしょ♪」と思って調べると、
何種類か出てきました。

|サイト|概要|
|:--|:--|
|[twimp](https://twimp.nu/)|3か月前まで(?)、かつ調査に時間がかかる|
|[Yahooのリアルタイム検索](https://search.yahoo.co.jp/realtime/search?p=%E5%B1%B1%E7%99%BB%E3%82%8A&ei=UTF-8&ifr=tp_sc)|1ヶ月前までのデータ|

やりたいことは、
・キーワードを含むツイートが日ごとに何件あるか、推移を調べたい。
（直近の半年分集められたら嬉しい。年毎の数も10年分とか集められたらなお嬉しい。…できるのか！？）
・キーワードで検索された件数を調べたい。
・キーワード検索時、他のどのワードと組み合わせて検索されたのか、調べたい。
です。

上記サイトだと、必要な情報が集めきれません。
調べてみると、Twitter APIなるものがあることがわかりました。
API、聞いたことはあるけど、何のこっちゃ？です。

Twitterの情報を得る為には、このAPIを使えるように、Twiiter社に対して申請する必要があるようです。
APIは、Python等で使う必要があるようです。Python...未知の世界です。
APIの使い方もよくわかっていませんが、とにかく申請してみることにしました。

こちらの記事を参考にしました。
・「[2021年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説](https://www.itti.jp/web-direction/how-to-apply-for-twitter-api/)」-ITTI STAFF BLOG 2021.02.15更新記事

・「[TwitterAPIを申請して一発で承認されるまでの手順まとめ（例文あり）＋APIキー、アクセストークン取得方法](https://dev.classmethod.jp/articles/twitter-api-approved-way/#pl2)」-Developers IO 2020.02.18記事
・「[TwitterのAPIについて](https://help.twitter.com/ja/rules-and-policies/twitter-api)」-Twitterヘルプセンター

#必要なもの
・Twitter APIに申請したことのないTwitterアカウント（電話番号も紐づけてある必要あり？？）

#API利用申請（デベロッパー登録）
Twitterにログインした状態で、[Twitter Developerサイト](https://developer.twitter.com/en)へGO　→　右上の「Apply」をクリック
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/81635b44-4ec1-dbe0-7b68-32ed49b705bc.png)

「Apply for a developer account」をクリック
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/0a9345bc-145d-f3c1-0795-78a3993d7313.png)

API申請の解説記事を何個か読みましたが、それらとは少し違う画面です。
用途を聞かれました。
目的は「社内プレゼン資料用に、キーワードが含まれるツイート数を調べる」ことなので、

・Proffesionalの「Building B2B products」
（I'm part of a business building solutions to help other businesses get value out of the Twitter platform.）

・Hobbyistの「Exploring the API」
（I want to explore the Twitter API to see what I can build with it）

どちらにするか、迷いました。後者の方が自分の気持ちに近そうだけど、一応仕事で使うから前者の方が良いのかな、とProffesionalを選択。
→後工程で「法人名」や「法人の公式アカウント」を入力する画面になってしまったので、
やはり「Hobbyist」に訂正。
→　その下に表示された「Get Started」をクリック。

![5 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/f0e90e7c-24f5-8da8-9335-f50c16beded9.png)

![4 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/8adbdab4-04e1-14aa-c3e6-6ee234833943.png)


ニックネーム、居住国、コーディングスキルレベルを入力　→　右下の「Next」をクリック。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/8a2014fe-eed5-d0de-9c6c-96488c5b0e05.png)

「How will you use the Twitter API or Twitter Data?」と問われました。
私の利用目的は下記の通り。
1.Twitterで特定のキーワードが特定期間に何件ツイートされているか調べたい。
2.社内プレゼンでそのキーワードが現在どれだけ流行っているかを説明するために、その件数の数字を使いたい。
3.現段階でツイート件数を調べたいと思っているが、自分のプログラミングスキルはPythonも触ったことがないというレベル。かつ、Twitter APIのFree版でどこまで調べられるか把握しきれていないので、実際に件数取得が自分にできるかどうかはわからない。

これをGoogle翻訳で英訳して、入力。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/33c74b92-f230-0363-61da-e92319bd1869.png)

「Are you planning to analyze Twitter data?」　→　Yes。
「Please describe how you will analyze Twitter data including any analysis of Tweets or Twitter users.」
→「Twitterで特定のキーワードが特定期間に何件ツイートされているか調べたい。」を英訳して入力。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/9bc99fac-40a7-504b-5cdd-b4d09051ae30.png)

「Will your app use Tweet, Retweet, Like, Follow, or Direct Message functionality?」
→ツイート数を検索するだけで、自分でツイートしたりはしないので、「No」。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/a70066c1-5d33-31c4-b09b-76e67d0fb3af.png)

「Do you plan to display Tweets or aggregate data about Twitter content outside Twitter?」
→同じく「No」。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/092edf1c-f225-2172-623d-cab8310228c2.png)

「Will your product, service, or analysis make Twitter content or derived information available to a government entity?」→「No」。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/78ecbf78-cd21-f518-998c-2070a86b85ea.png)

右下の「Next」をクリック。
入力内容の確認画面が表示されるので確認し、「Next」をクリック。
利用規約が表示されるので確認し、ボックスにチェックを入れ、「Submit application」をクリック。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/dfb69a0f-e688-dce6-7313-acbc93db3343.png)

申請完了！
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/d1d8c6d4-9640-a85c-0ba8-48326dddc7f5.png)

すぐに下記メールが届いたので「Confirm your email」をクリック。
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/968fb3a2-868d-1373-255b-cd571b91a336.png)

すると下記のような個人用ダッシュボートが表示される。
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/2e5ee361-afde-700e-4764-1032af9bc6fc.png)

真ん中に「v2」とありますね。
Twitter APIの申請方法を調べているときに、v1とv2があるらしいという情報を見ましたが、
「v2」に申請できていたようです。ホッ。

「Create Project」をクリックすれば、APIを使用していけそうです。

「Twitter API」の欄をクリックすると、
・Standard product track
・Cost:Free
・Tweet cap :500,000 Tweets / month PER PROJECT
と概要が書かれていました。
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/80949bf7-824d-e29a-328f-93a297510cb6.png)

v1では、スタンダード・プレミアム・エンタープライズの３つのプランごと、別々のAPIが提供されていました。
v2では、１つのAPIに対して、Basic・Elevate・Customのアクセスレベルが設定されるようになりました。
これにより、プランの切り替え時にAPIの変更が不要になりました！
（参考：[PythonでTwitter API v2を使ってみよう。ツイートを探す編](https://qiita.com/akky-tys/items/4a1b6a11acb1fe226361）-Qiita @akky-tys さん 2020.09.30更新記事)

私は「v2 の　Basic」になっているのですね。申請時の内容から振り分けられるのですかね。

・・・それにしても、パッと検索して出てきたAPI申請の記事で、同じ画面になっているものをまだ見たことがない。リニューアルしたてなのかな？？？

#API利用

デベロッパー登録が完了したので、早速APIを使ってみます！
「Create Project」をクリックしたら使えそうです。

##下調べ
何はともあれ下調べです。
以下4つの記事を読みました。

・[Twitter API v2.0について – アプリ認証編 –](https://blog.asial.co.jp/2033)-Asial Developers Blog 2020.10.09記事
・[PythonでTwitter API v2を使ってみよう。ツイートを探す編](https://qiita.com/akky-tys/items/4a1b6a11acb1fe226361)-Qiita @akky-tysさん 2020.09.30更新記事
・【難解!?】Twitter APIを使って投稿データを収集する方法-[「STEP3. 実際のデータの取得方法（by Python）」](https://gaaaon.jp/blog/twitterapi)-GaaaOn 2020.06.21記事
・TwitterAPIを申請して一発で承認されるまでの手順まとめ（例文あり）＋APIキー、アクセストークン取得方法-[「APIキーとアクセストークンを取得する」](https://dev.classmethod.jp/articles/twitter-api-approved-way/#pl3)-Developers IO 2020.02.18記事

まずは
・APIキー
・APIシークレットキー
・アクセストークン
・アクセストークンシークレットキー　←？
を取得する必要があるようです。

トークンって？？？何なんでしょうね。どうやって使うんでしょうね。

とにかく「Create Project」をクリックしてみましょうかね。

##Create Projectしてキー2種とトークンを取得
1.「+ Create Project」をクリック。
![101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/f9627348-3bb4-6cc6-8493-e15e72e27c77.png)

2.Projectの名前を入力し、「Next」。
![102.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/c4136562-9de8-2fc4-0c10-61c4a922943b.png)

3.用途をプルダウンから選択し、「Next」。
「Build customized solutions in-house」を選択したけど、「社内プレゼン用にキーワードを含むツイート数を調べる」っていうのは、この用途で良いのか？よくわからない。
![104.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/9a8b70be-06f0-acba-7050-4e459a234449.png)

4.Projectについての説明を入力し、「Next」。
API利用申請の際に入力した利用目的と同じ内容を入力しました。

1.Twitterで特定のキーワードが特定期間に何件ツイートされているか調べたい。
2.社内プレゼンでそのキーワードが現在どれだけ流行っているかを説明するために、その件数の数字を使いたい。
3.現段階でツイート件数を調べたいと思っているが、自分のプログラミングスキルはPythonも触ったことがないというレベル。かつ、Twitter APIのFree版でどこまで調べられるか把握しきれていないので、実際に件数取得が自分にできるかどうかはわからない。

をGoogle翻訳で英訳して、

1. I want to find out how many tweets of a specific keyword have been tweeted in a specific period on Twitter.
2. I want to use that number to explain how popular the keyword is in an in-house presentation.
3. I want to check the number of tweets at this stage, but my programming skill is at a level that I have never touched Python. Also, I don't know how much I can look up with the Free version of the Twitter API, so I'm not sure if I can actually get the number.

と入力。
![105.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/f652b490-054e-e4d1-09ee-36d2b65c4cdf.png)

5.appに名付けて「Complete」。
「app-kwsearch」と名付けてみました。
![106.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/5332447b-eac1-6e0c-cb8b-d221f1b78441.png)

6.API Key / API Secret Key / Bearea Token が発行された。

![200.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/9cf93cc3-5156-5469-712a-7c7f5b3b06ae.png)

スムーズにキーとトークンが発行されました。
忘れないように、どこかに保存しておき、右上の「×」をクリック。

それぞれの説明は、横の「i」マークでされていたので、メモしておきます。

≪API Key≫
Your key is like your username. It is used to verify who you are to Twitter.
→ユーザー名みたいなもの。

≪API Secret Key≫
Your secret key is used like a password. It identifies your account. Keep this safe!
→パスワードみたいなもの。

≪Bearea Token≫
An Access Token used in authentication that allows you to pull specific data.
→「トークン」について初めて調べた。識別番号ってことかな？
→「Bearea」って何？→Google翻訳で発音聞くと、ベアラーって言ってる。どんぴしゃの説明は見つけられなかったけど、認証方式のひとつみたい。Basic認証, Digest認証, Bearer認証,...と、様々な認証方式があるようだ。
参考：[Bearer Token とは？](https://idmlab.eidentity.jp/2013/09/bearer-token.html)-IdM実験室 2013.09.07記事
→トークンと、他のキーの違いがいまいちわからない。追々理解していこう。

7.キーとトークンを保存したか聞かれるので「Yes,I saved them」をクリック。
![300.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/0ea10b2f-6150-937c-6307-ef8ab626c04b.png)

8.ダッシュボードの表示が変わる。
project名、1か月にプルできるツイートの数の残、App名が表示されました。
「プル」は、引数として引いてこられるっていう意味かな？
![312.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/60c4d477-a26c-616f-29fd-aa328d59bc94.png)



##いよいよ！API使う！→挫折
いよいよここまで来ました！APIをたたいてみます。（←言ってみたかった）

Twitter公式に、「[Tutorials / Analyze past conversations](https://developer.twitter.com/en/docs/tutorials/analyze-past-conversations)（チュートリアル/過去の会話を分析する）」という記事がありました。
ここをじっくり読めばいけるのか！？

そもそもどんな環境にそこに記載されているコードを打ち込んでいけば良いのだろう？
WindowsのPowerShellに直接打ち込めば良い？？？

スタートから、どうすれば良いのかわからずつまずきました。

下記記事の「1.Tweetの内容で検索をしてみよう」のコードを実行すれば、お試しにちょうど良いのかも。
Pythonだって。PowerShellに直接打ち込めば動くのかな？？？

・「[API:Tweet recent search](https://qiita.com/akky-tys/items/4a1b6a11acb1fe226361#apitweet-recent-search) 」-PythonでTwitter API v2を使ってみよう。ツイートを探す編-Qiita @akky-tys さん 2020.09.30記事

だがしかし、Pythonも触ったことがない状態でいきなり打ち込んでいくのは、PC壊しそうで怖い。
今回はAPIたたくのはやめてここまでにする。
次回、記事にまとめながら挑戦しようと思う。

#未解決事項
・トークン（Bearea Token）と、他のキー（API Key/API Secret Key）の違いがいまいちわからない。追々理解していこう。

#参考
・「[2021年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説](https://www.itti.jp/web-direction/how-to-apply-for-twitter-api/)」-ITTI STAFF
BLOG