Twitter API

# Twitter API 有料化

Twitter API は、そのほとんどが有料化されました。
ツイートの取得が可能な "Basic" アクセスは $100/月です。
無料の "Free" アクセスでは、ツイートの投稿しかできません。

Getting started (Twitter Developer Platform)
Twitter API有料（Basic）・無料プラン利用開始手順 (Programming ZERO)

以下の情報は、$100/月を支払う人のために残しておきます。

# Twitter API

Twitter 社は多様な API を公開しており、ユーザが Twitter のページでできることは API でもほぼできるようになっている。
ただし、API の場合にはリクエスト数(頻度)の制限が厳しく、したいことが現実的に可能かどうか見極めが必要となる。

Twitter の API は仕様変更が多く、Webにある情報を参照する際には注意が必要である。
現在の API は API v2 であるが、多くの情報は v1.1 に対応したものである。

## APIの種類と仕様

ライブラリを使う場合には API を直接叩くわけではないが、
パラメータの値の範囲など、API の仕様書を参照すべきことも多い。

Twitter API v2 (twitter)
アクセスレベル:

Essential: 基本レベル。登録が容易。API v1.1 は使えない。
Elevated: 上級レベル。API v1.1 も使える。
Academic Research: 研究用なので授業では使用できない。

→ 比較表

開発者アカウントを2021年11月15日より前に取得していた人は、
自動的に Elevated に変更されており、引き続き API v1.1 を利用することができる。
なお、API v2 を使い始める際には、新たに Project を作成しアプリを紐付ける必要がある。

API の形式は通常の REST の他に、リアルタイムのデータ取得が可能なストリーミング形式の API も提供されている。

### 留意事項

リクエスト数の上限はリクエストの種類ごとに定められている。
例えばツイート検索では 180リクエスト/15分 (OAuth 2.0 Bearer Token で認証する場合は 450リクエスト/15分)。
なお、1回のリクエストで取得可能なツイート数は 100ツイートなので、1回の検索で数回のリクエストが必要になることもある。
ツイート検索の対象は直近1週間のみである。
つまり Twitter の Webページで (手動で) 検索できるツイートが API では取得できない。
ストリーミングで取得可能なツイート数には上限がある。アクセスレベルが Essential の場合は 50万ツイート/月。
トレンドは API v1.1 でしか取得できない (API v2 でも提供予定であるが準備中)。

## 開発者登録とキーの発行

Twitter の API を使うには、まずアカウントを開発者として登録し、さらにアプリケーションを登録する。

Step-by-step guide to making your first request to the new Twitter API v2 (Twitter)

twitter に自分のアカウントでサインインしておく(電話番号の認証が済んでいる必要あり)
開発者アカウント(Essential)の登録をする。登録後、メールの認証がある。

- Just a few questions to get you Essential access
- アプリの名前を決める (世界で唯一のものをつける)
「Get key」ボタンを押すと 3つのキーが発行されるのでコピーしておく。
- API Key
API Key Secret
Bearer Token
- ダッシュボードにアクセスしてみる。「Project 1」というプロジェクトが自動で生成され、先ほどのアプリが属している。
- Dashboard
- 自分のタイムラインを取得するなどユーザ権限が必要な API を使用する場合には、
アプリ名の右にある鍵アイコンをクリックする。
Access Token and Secret の「Generate」ボタンを押すと 2つのキーが発行されるのでコピーしておく。
- Access Token
Access Token Secret

なお、これらのキーは「Read Only」の権限で生成されている。

## プログラミング

### ライブラリの利用

Java から Twitter API を使う場合、直接利用するのではなく、クラスライブラリを介して使うのが便利である。
最近開発者アカウント(Essential)を作成した場合には API v2 しか使えないので、
API v2 に対応したライブラリを選択する必要がある。

以下のリストの先頭の twittered については、検索とタイムライン取得のサンプルプログラムを提供している。

twittered (Twitter API v2, v1.1 に対応) おすすめ
twitter4j (Twitter API v1.1 に対応)
twitter4j-v2 (twitter4j の wrapper, Twitter API v2 に対応)
JTW (for Twitter API v2)
Twitter API Client Library for Java (for Twitter API v2)

専用のライブラリを使わずに Json を直接扱いたい場合には、公式のサンプルコードが参考になる。

Twitter-API-v2-sample-code (for Twitter API v2)