ゼロからはじめるTwitter API v2 〜 開発者登録からはじめてのリクエストまで 〜

## 背景

Twitter API v2は、本記事執筆時点のTwitter APIの最新バージョンです。[Twitter開発者プラットフォーム](https://developer.twitter.com/ja)は、2020年6月にTwitter API v2のアーリーアクセス版を公開し、2021年11月にTwitter API v2の安定バージョンをリリースしました。

本稿では、Twitter開発者プラットフォームの登録から、Twitter API v2にはじめてのリクエストを送るまでの方法をご紹介します。

## 目標

このチュートリアルを最後まで進めると、Twitter開発者プラットフォームの登録方法から、Twitter API v2への基本的なリクエストの送信方法が学べます。

Twitter API v2へのリクエストの送信方法は、以下の４種類をご紹介します。 

- cURL
- Twitter API v2サンプルコード
- Postman
- Twitter API v2 SDK・ライブラリ

## 必要項目

このチュートリアルを最後まで進めるには、以下の項目が必要です。
- Twitterアカウント
- APIの基礎知識

## ステップ１：開発者登録する

Twitter API v2を使用するには、Twitter開発者プラットフォームで開発者登録をする必要があります。開発者登録は、基本情報の入力のみで、申請理由などを長文で記入する必要はありません。

[Twitter開発者プラットフォームの登録ページ](https://developer.twitter.com/en/docs/twitter-api?utm_source=advocacy&utm_medium=organic&utm_campaign=signup)の [Sign up] をクリックします。

まだTwitterにログインしていない場合は、ログインします。

開発者登録フォームに必要事項を入力します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/683fdbb3-418d-ff2d-a597-7b8665b3aee8.png" alt="drawing" width="550"/>

Twitterアカウントにメールアドレスが連携されていない場合は、[Add email] から追加します。

必要事項が入力できたら、[Let’s do this] をクリックします。

利用規約が表示されます。利用規約を確認し、同意ボックスにチェックを入れます。[Submit] をクリックします。

Twitterアカウントに連携したメールアドレスに、確認メールが送信されます。届いたメールを開き、[Confirm your email]をクリックしてメールアドレスを認証します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/728bf163-bc16-ddf6-38d4-b81d54c7cad0.png" alt="drawing" width="500"/>

これで、開発者登録が完了しました。次に、アプリケーションを作成します。

## ステップ２：アプリケーションを作成する

アプリケーションの命名画面が表示されます。アプリケーション名を入力し、[Get keys] をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/487b99ee-57e5-e0cf-394f-aba573012700.png" alt="drawing" width="500"/>

Twitter APIの利用に必要なアプリケーションの認証情報が表示されます。

:::note warn
認証情報は、一度しか表示されませんので、安全な場所に保管してください。認証情報は他者に共有しないでください。
:::

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/df9a70dc-8c41-11c2-cf27-d0c6ab29e866.png" alt="drawing" width="500"/>

各認証情報の概要は以下のとおりです。

- **API Key（APIキー）**
アプリケーションのユーザー名にあたる情報。
- **API Key Secret（APIキーシークレット）**
アプリケーションのパスワードにあたる情報。APIキーと、シークレットをもとに、アプリケーションを判別し、APIを利用する権限を持っているかを確認します。
- **Bearer Token（ベアラートークン）**
Twitter APIを安全に利用するための、アプリケーション単独認証トークン。

これで、リクエストを送信する準備ができました。

## ステップ３：HTTPリクエストを送信する

本稿では、ツイートを、ツイートIDをもとに取得できる、[Tweets lookup](https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/introduction)エンドポイントにリクエストを送信します。

リクエストの送信方法を、４種類ご紹介します。

### 1. cURLを使用する

一つ目は、ターミナルでcURLを使用してリクエストを送信する方法です。以下のコード例は、[＠TwitterDevJP](https://twitter.com/TwitterDevJP)が発行した[ツイート](https://twitter.com/TwitterDevJP/status/1577176033891332096)（ツイートID:`1577176033891332096`）の情報を取得する方法を示しています。 `{ベアラートークン}`を、ステップ２で取得したベアラートークンに置き換えて、ターミナルで以下のコードを実行します。

```bash
curl -H "Authorization: Bearer {ベアラートークン}" \
"https://api.twitter.com/2/tweets/1577176033891332096"
```

以下のようなレスポンスが返ってきます。

```json
{
   "data": {
       "edit_history_tweet_ids":[
           "1577176033891332096"
       ],
       "id":"1577176033891332096",
       "text":"お待たせしました！ツイート編集について、Twitter API v2からのメタデータの読取りが可能になりました。編集済みのツイートや編集履歴、関連するフィールドの値が取得できます。 https://t.co/PhBUSH1at0"
   }
}
```

ぜひ、[Tweets lookupエンドポイントのAPIリファレンスページ](https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets-id)を参照して、ツイート作者に関する情報や、ツイートの言語、ツイートに含まれるメディアやURLなど、さらに詳しいデータを取得してみてください。

たとえば、ツイートの言語は、以下のようにエンドポイントに`tweet.fields=lang`を追加して取得できます。

```bash
curl -H "Authorization: Bearer {ベアラートークン}" \
"https://api.twitter.com/2/tweets/1577176033891332096?tweet.fields=lang"
```

### 2. Twitter API v2サンプルコードを使用する

Twitter開発者プラットフォームがGitHubで公開している、[言語ごとのサンプルコード集](https://github.com/twitterdev/Twitter-API-v2-sample-code)を使用してリクエストを送信することも可能です。本稿執筆時点では、JavaScript、Python、Ruby、Javaのサンプルを提供しています。

本稿では、一例として、JavaScript (Node.js)で[Tweet lookupエンドポイント](https://github.com/twitterdev/Twitter-API-v2-sample-code/tree/main/Tweet-Lookup)にリクエストを送信する方法をご紹介します。

ターミナルで、任意のディレクトリで以下のコマンドを実行して、サンプルリポジトリをクローンし、リポジトリに移動します。
```bash
git clone https://github.com/twitterdev/Twitter-API-v2-sample-code.git
cd Twitter-API-v2-sample-code
```

以下のコマンドで、必要なライブラリをインストールします。
```bash
npm install needle
```

ベアラートークンを環境変数として設定します。ターミナルで以下のコマンドの`{ベアラートークン}`を、前のステップで取得したベアラートークンに置き換えて、実行します。
```bash
export BEARER_TOKEN='{ベアラートークン}'
```

リポジトリのTweet lookupフォルダに移動し、get_tweets_with_bearer_token.js ファイルを実行します。
```bash
cd Tweet-Lookup
node get_tweets_with_bearer_token.js
```
ファイルに指定されたツイートに関する以下のようなデータが、レスポンスとして返ってきます。
```json
{
    data: [
      {
        id: '1278747501642657792',
        edit_history_tweet_ids: [ '1278747501642657792' ],
        lang: 'en',
        text: "It's been a year since Twitter's Developer Labs launched.\n" +
          '\n' +
          "As we build towards the next generation of the #TwitterAPI (coming VERY soon), see what we've learned and changed along the way. https://t.co/WvjuEWCa6G",
        author_id: '2244994945'
      },
      ...一部省略
    ]
}
```

### 3. Postmanを使用する

Twitter API v2にリクエストを送信する方法として、Postmanも有効です。[Postman](https://www.postman.com/downloads/)は、GUIを使ってリクエストURL、パラメータ、ヘッダーなどを指定してHTTPリクエストを行うことができるツールです。

本稿では、Tweet lookupエンドポイントにPostmanを通してリクエストを送信する方法をご紹介します。

まだPostmanでアカウント登録していない場合は、[登録](https://identity.getpostman.com/signup)します。

[Twitter API v2公式コレクションのフォーク](https://www.postman.com/twitter/workspace/twitter-s-public-workspace/collection/9956214-784efcda-ed4c-4491-a4c0-a26470a67400/fork?origin=request-send)を作成します。
Twitter API v2コレクションから、[Tweet Lookup] > [Single Tweet]を選択します。

![image9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/c40d060c-8e46-84d8-17e2-945af55f3a96.png)

[Path variables]の`id`キーの値に、取得したいツイートのIDを指定します。

![image8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/83b0b36f-66e9-7553-28f9-b4158f46bd6c.png)

[Authorization] タブを選択し、[Type]を`Bearer Token`に変更します。[Token]に、前のステップで取得したベアラートークンを入力します。

![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/dbe88b67-b37e-2647-9db5-9be4419171a1.png)

[Send]をクリックします。

![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/10b02422-60ea-9f26-0326-09dc84ff3d85.png)

以下のようなレスポンスが返ってきます。

![image7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2735808/6b39da00-d0de-86ec-6fbf-a5aa35fa56eb.png)

### 4. Twitter API v2 SDKやライブラリを使用する

Twitter API v2には、多くのSDKやライブラリが存在します。Twitter API v2のSDKやライブラリは、Twitter開発者ドキュメントの「[Tools and libraries](https://developer.twitter.com/en/docs/twitter-api/tools-and-libraries/v2)」 から確認できます。

本稿執筆時点で、以下の2点のTwitter公式SDK（ベータ版）が存在します。
- [Java SDK](https://github.com/twitterdev/twitter-api-java-sdk)
- [JavaScript/TypeScript SDK](https://github.com/twitterdev/twitter-api-typescript-sdk)
JavaScript/TypeScript SDKから、エンドポイントごとのリクエストスニペットを自動生成できる[Twitter API Explorer](https://developer.twitter.com/apitools/api)もぜひご活用ください。

また、その他にも開発者コミュニティの皆さまが構築してくださったTwitter API v2 SDKが多数掲載されています。ぜひ、お使いのプログラミング言語のライブラリをお試しください。

## 最後に

本稿では、Twitter開発者プラットフォームの登録方法から、Twitter API v2へのはじめてのリクエスト送信方法までをご紹介しました。

Twitter API v2は、日々開発者の皆さまのフィードバックをもとに、進化を続けています。今後のプロダクトロードマップも公開しておりますので、ぜひご確認ください。

[Twitter開発者プラットフォームロードマップ](https://trello.com/b/myf7rKwV/twitter-developer-platform-roadmap)