【Twitter API】デベロッパーアカウント開設とAPIキー取得までの解説と実録（※翻訳付き）

#はじめに
Twitter APIを使用したいと思いつき、デベロッパーアカウントの申請をして、無事開設できましたので、その実録を綴りたいと思います。

**（キャプチャ多め・翻訳、メールのやりとり付き）**


#TL;DR：Twitter API承認までの流れ
1. 申請するTwitterアカウントにログインした状態で、[デベロッパーサイト](https://developer.twitter.com/en/apps/)にアクセス（※アカウントに電話番号登録しておくとスムーズ） 
2. Twitter APIを登録申請（**※最初は英文で記述**）
3. Twitter社からTwitter APIの利用目的についての確認メールが**日本語で来た**
4. Twitter APIの利用目的をざっくりと**日本語で記載**してメール返信
5. 再度Twitter社からTwitter APIの利用目的についてのより詳細な確認メールが**日本語で来た**
6. Twitter APIの利用目的をより粒度を高めて**日本語で記載**してメール返信
7. Twitter社からApprovedのメールが届き、晴れてアカウント開設
8. Twitter API アプリ作成とKeyの取得

####※実際にかかった時間は、3日
2021/5/12に申請して、2021/5/14に申請が降りたので、３日かかりました。
一番時間を食われたのは、Twitter社とのメールのやりとり。
Twitter社からメールの来る時間が夜遅くて、メールの受信に気づかず、返信するまでのタイムラグで時間を食われた


#Twitter API 登録申請
##[Twitterデベロッパーサイト](https://developer.twitter.com/en/apps/)にアクセス
申請するTwitterアカウントにログインした状態で、アクセスするとスムーズです。

###[`Create an app`]をクリック
![スクリーンショット 2021-05-17 14.35.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/f89b0b3f-0378-5d52-608f-2b363475ca14.png)

###申請するにあたっての簡単な説明を読んだら、[`Apply`]をクリック
![スクリーンショット 2021-05-17 14.37.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/6b616f5e-d2aa-eeb7-1b92-4a425475bb31.png)

```text:DeepL翻訳
既存のアプリの管理は継続できますが、新しいアプリの作成やTwitterプレミアムAPIの利用をご希望の場合は、
開発者アカウントを申請してください。
開発者向けプラットフォームとしての私たちの第一の責任は、
ユーザーに対して、Twitterでの会話の健全性をサポートする場を提供することです。
プラットフォームの悪用を防ぐために、開発者向けにいくつかの新しい要件を導入しています。
```

###[`Hobbyist`]を選択後、[`Exploring the API]`をチェックし[`Get started`]
用途に応じて選択してください。
![スクリーンショット 2021-05-17 14.38.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/d0e00196-0ad9-eb93-55ab-85f7a89215dd.png)

###基本情報の入力し次へ
![スクリーンショット 2021-05-17 14.52.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/b4dd3386-78f1-14e8-b244-4fb8d50c8a18.png)

###Twitter API/Twitter Dataの利用目的を詳細に記載
※200文字以上で記載します。
![スクリーンショット 2021-05-17 14.53.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/10806fdd-bfed-3dda-aa24-76a78059531b.png)

```text:DeepL翻訳
Twitter APIやTwitterデータをどのように利用しますか？
あなたの言葉で。
英語で、Twitterデータおよび/またはAPIをどのように使用する予定かを説明してください。
回答が詳細であればあるほど、審査・承認がしやすくなります。
```

###Twitter Dataの分析の手法を詳細に記載する
Yesの場合に100文字以上で記載。
![スクリーンショット 2021-05-17 14.54.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/3680e0c0-1bcf-468c-1ee0-a4b01b307d3d.png)

```text:DeepL翻訳
具体的な内容として

以下の各項目について、できるだけ詳細かつ正確にお答えください。
ご回答いただけない場合、Twitter開発者向けプラットフォームへのアクセスが遅れたり、
申請が却下されたりする可能性があります。

Twitterのデータを分析しようとしていますか？
Twitterのデータをどのように分析するのか、ツイートやTwitterユーザーの分析も含めて説明してください。
```

###`Tweet, Retweet, Like...`等の機能を使うならその用途を記載
Yesの場合に100文字以上で記載。
最後の二つの質問は、使わなかったので`No`としました。
![スクリーンショット 2021-05-17 14.55.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/64d05caf-d10a-2a8f-285d-c1e0a2813504.png)

```text:DeepL翻訳
Tweet、Retweet、Like、Follow、またはDirect Message機能を使用しますか？
これらの機能の使用予定について教えてください。

Twitterのコンテンツに関するツイートや集計データを、Twitter以外の場所で表示する予定はありますか？

貴社の製品、サービス、分析によって、Twitterのコンテンツや派生する情報が政府機関に提供されますか？
```

###[`Next`]すると確認画面にでるので、記載内容を確認し、申請しましょう。
利用規約に同意した後に、申請します。


#Twitter社とTwitter APIの用途に関して、日本語でやりとりした
申請が終わると、夜10時くらいになって、より詳細の目的を教えてくださいという日本語のメールが来ました。
**悪用されるケースがあるので、審査自体が結構厳しくなったんだと思います。**

##Twitter社とのやりとり実録
###Twitter社からの最初の確認メール
`Date: 2021/5/12, Wed 22:36`
![スクリーンショット 2021-05-18 9.32.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/abd7f7be-d908-87bc-0146-a76bea12fe3d.png)

うわあああなんか来たよ、やべえ面倒臭いなぁぁ、
え、初回でも下記のサイトに書かれているくらいの粒度で自分の利用目的書いたんだけどなぁあ、おかしいなあ。

https://www.itti.jp/web-direction/how-to-apply-for-twitter-api/


###Twitter社への自分の返信
よし、これでいけるでしょう。申請したときよりもより詳細には書いたつもりだ！

```text:メール返信内容(1回目)
2021/5/13, Thu 09:05
Twitter ご担当者様

お世話になります。〇〇と申します。
ご連絡ありがとうございます。

Twitter APIの利用目的を記載いたします。

・目的としては、ビジネス目的ではなく、あくまで趣味と個人の技術向上のためです。
・実施する分析の内容と手法または技術としては、Pythonで、TwitterAPIを使い、
 自分もしくは他のアカウントのツイートタイムラインからツイートを取得し、そのつぶやき文章から辞書を作り、
 ランダムに言葉を組み替えて、ツイート文言を作るということを考えています。
・その作成したツイート文言を自動投稿も考えています。（※1日4回程度（予定））

以上でございます。

大変恐れ入りますが、ご確認のほどよろしくお願いいたします。

〇〇
```

###Twitter社からの最初の二回目の確認メール
`Date: 2021/5/13, Thu 21:52`
![スクリーンショット 2021-05-18 9.32.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/7dc38a11-496a-354a-f4f1-978592cfb957.png)

えええええええええちょ、待てよ、、、なんでなんで、なんで来たの？
キムタクばりのちょ、待てよ、、、
え、さっきの粒度じゃだめなの？結構てんぱってるんだけど、どうすりゃ良いんだ？
う〜んとりあえず、箇条書きで聞かれている項目に対して、全て返信するように心がけてみよう。
これで却下とかされたら洒落にならないわああ〜
早くTwitter API試したいのにな。


###Twitter社への自分の返信
```text:メール返信内容(2回目)
2021/5/14, Fri 00:11
Twitterご担当者様

お世話になります。〇〇と申します。
ご連絡ありがとうございます。

詳細情報につきまして、
TwitterAPIを利用して、自分もしくは他のアカウントのツイート情報を取得し、PythonでAPIを叩き、
取得したツイート文言をMeCabという形態素解析ライブラリで解析したのちに、
マルコフ連鎖で文言をつなげて自然言語処理の調査と分析、並びに実践を行いたく、申請をしております。
最終的には、その自動生成した文言をもって自動投稿をするBotの作成など、
様々な技術を洗練しようと考えております。（1日に4投稿程度のBOT作成）
つまり「分析」というのは、ツイート文言の自然言語処理的な文言の分析をしようとしております。
ツイートに関しては、自分で作ったアカウントに対し、上記で作ったツイート文言を自動投稿するためのツイートです。
Twitter以外で表示する場合はありません。
現在ローカルでの開発しかしておらず、共有できるリンクがありませんが、
https://takuti.me/ja/note/twitter-bot/
こんなようなイメージの実験をしようと考えております。ただそれだけの利用になります。

お手数おかけしますが、ご確認のほどよろしくお願いいたします。

〇〇
```

#Twitter社様からついにお許しをいただきました。
`2021/5/14, Fri 01:09`
![スクリーンショット 2021-05-18 9.46.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/933d4886-8850-9d99-28a3-fbf5a1b9e9b1.png)
やっと承認されました。安心しました。
**なかなか詳細に書かないとダメなもんなんだな〜〜〜**
勉強になりました。

##Twitter APIデベロッパーアカウント開設された↑↑
やっと開設できました。安心感と嬉しさがじわじわ来る。
![スクリーンショット 2021-05-18 9.49.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/77c69dae-1236-d463-d1c4-2447144c9e4a.png)


#Twitter API Keyの取得方法
自分は、Projectを作ってまで、`Twitter API v2`を使うほどの大きなアプリを今回作るわけではないので、
`Standalone Apps`から、`Twitter API v1.1`のAPIを使うことを目的として、
API Keyの取得をしていきたいと思います。

##`Standalone Apps`から[`Create App`]をクリック
左サイドバーから`Projects & Apps`の`Overview`タブを選択し、
`+ Create App`クリック後は、 `App Name`を入れたら、`Keys & Tokens`を取得するのみです。
※セキュリティの理由から、キーとトークンは、作成時に遷移した画面のみで取得できます。コピペし忘れたら、`Regenerate(再生成)`しましょう。
![スクリーンショット 2021-05-18 9.52.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/2587c4a6-758e-5c9b-9a27-b8106872e628.png)



##Twitter API App作成後の確認
###Settings - App Details
アプリの名前と、パーミッションを選択します。
`Read/write/Direct Messages`
![スクリーンショット 2021-05-18 10.00.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/db0df5bc-7ffb-0ee3-79e3-32cb23a21aab.png)


###Keys and tokes - Details
キーとトークンの再生成ができます。
今回、コード上で、Twitter APIを使うので、`Access Token and Secret`を作りました。
※自分は`Bearer Token`使いませんでした。
![スクリーンショット 2021-05-18 10.01.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1075243/da48655f-2e74-b47f-62ae-9a162dbdf5b1.png)

####ベアラートークンを使用するタイミング
>ベアラートークンの使用が必要な商品は以下の通りです。
エンゲージメントAPI
プレミアム検索ツイートAPI
アカウントアクティビティAPI
v2やLabsエンドポイントなど、OAuth 2.0ベアラートークン認証を使用するその他のAPI。
参照元：[Twitter公式より](https://developer.twitter.com/ja/docs/authentication/oauth-2-0/bearer-tokens)


#感想とまとめ

最初手順が分からず、どうやってやるのかなあって思っていたけど、デベロッパーアカウント開設までを解説してくれているブログ記事があり、案外、スムーズに申請して、承認を得られました。

ただ、どのくらいの粒度で利用目的をTwitter社に伝えればいいか分からず、

そこで苦戦。(うわぁぁぁぁぁぁぁああああああああああ)


メールのやりとりで時間を食われてしまい、想定よりも結構時間がかかってしまった。
ただ問題なく、使えるようになったので、よかったです！✨

これからTwitter APIを使って、いろんなこと試してみたいと思います。

直近では、マルコフ連鎖と形態素解析を使って、Twitter APIで取得したつぶやきテキストを面白く加工してみたいなと思っていたり。

こちらの記事参考にしてみてください〜

https://qiita.com/ichi_zamurai/items/60d2480edcb68a76aeb6

以上、ありがとうございました！