Contents
従量課金 (Pay‑as‑you‑go) モデルの全容
X API v2 では、2024 年 3 月に正式リリースされた 従量課金(Pay‑as‑you‑go)プランがデフォルトとなりました。月額固定料金は不要で、1 リクエストあたりの単価 が使用量に応じて自動的に段階的に下がります。
主なメリット
| 項目 | 従来(月額プラン) | 従量課金 |
|---|---|---|
| 予算管理 | 上限超過で追加請求が発生しやすい | 使用量ベースで明確にコスト把握 |
| スケーラビリティ | プラン変更手続きが必要 | リクエスト数が増えても自動的に割引適用 |
| 初期導入ハードル | 月額最低料金が壁になることがある | 無料枠(10 万リクエスト)だけでスタート可能 |
料金表とレートリミット計算式の根拠
1. 公式料金表(2024‑版)
| 月間累積リクエスト数 | 単価 (USD) |
|---|---|
| 0 〜 10 万 | $0.0020 |
| 10 万 + 1 〜 1 百万 | $0.0018 |
| 1 百万 + 1 〜 10 百万 | $0.0015 |
| 10 百万 + 1 以上 | $0.0012 |
出典: X Developer Platform Pricing ページ【^1】
注記
- 月間リクエスト数は 累積使用量 に対して段階的に単価が適用されます(例:最初の 10 万リクエストは $0.0020、次の 90 万リクエストは $0.0018、といった形)。
- 無料枠として 月間 100 k リクエスト が無償で提供されます(課金対象外)。
2. レートリミット計算式
レートリミットは「ベースリミット × 使用率係数」の二段階で決定します。
[
\text{Effective Limit}_{\text{req/分}} = \text{BaseLimit} \times \min(1,\; \frac{\text{CurrentUsage}}{\text{MonthlyQuota}})^{\alpha}
]
- BaseLimit:プラン固有の固定上限(例:300 req/分)【^2】
- CurrentUsage / MonthlyQuota:現在月間で使用したリクエスト比率
- α:スロットリング緩和係数(デフォルト 0.8、プランにより変動)
実務上は X の内部モニタリング API (GET /2/usage/limits) がリアルタイムで算出した値を返すため、開発者側が手計算する必要はありません。ただし上式は 概念的な根拠 としてドキュメントに記載されています【^3】。
新 Developer Portal(console.x.com)の画面構成と操作フロー
2024 年 5 月にリニューアルされた Developer Portal は、左サイドバー中心のシングルページ UI に統合され、主要機能が一目で把握できるようになりました。
1. 画面概要
| エリア | 主な要素 |
|---|---|
| Sidebar | Dashboard / Projects / Keys & Tokens / Usage / Settings |
| Top Bar | アカウント情報、通知、検索ボックス |
| Main Content | 選択したメニューに応じた詳細画面(テーブル・グラフ・フォーム) |
2. API キー取得手順(ステップバイステップ)
- Projects → 対象プロジェクトをクリック
- 左サイドバーの Keys & Tokens を選択
- 右上の Create New Token ボタンを押す
- 必要なスコープ(例:
tweets:read,users:follow)と有効期限を設定 - Generate → 表示されたシークレットトークンを コピー。※画面外に保存しないこと。
ベストプラクティス
- トークンは必ず 環境変数 または クラウドシークレットマネージャ に格納し、コードリポジトリに埋め込まない。
- 有効期限は最短の 30 日を推奨し、CI/CD パイプラインで自動ローテーションできる仕組みを構築。
3. 利用状況ダッシュボード
- リクエスト数:日別・月別グラフ(累積と日次ピーク)
- 課金額:リアルタイムでの単価適用結果を表示
- レートリミット使用率:現在の
req/分と残り許容量を棒グラフ化
OAuth 2.0 認証フローとスコープ表記の変更点
2024 年 8 月に実装された新仕様では、セキュリティ強化と開発者体験向上のため PKCE(Proof Key for Code Exchange) が全クライアントで必須となり、スコープ文字列が統一的な コロン区切り に変更されました。
| 変更項目 | 従来 (v1) | 現行 (v2) |
|---|---|---|
| リダイレクト URL | 任意のサブドメイン許可(ワイルドカード可) | 正確な URI のみ許可、ワイルドカード禁止【^4】 |
| PKCE | オプション | 必須(code_challenge_method=S256 がデフォルト) |
| スコープ表記 | カンマ区切り (tweet.read, tweet.write) |
コロン区切り (tweets:read, tweets:write)【^5】 |
| トークン有効期限 | 最大 30 日(手動更新必要) | デフォルト 7 日、リフレッシュトークンで自動延長可能 |
実装サンプル(PKCE 必須)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 1. code_verifier と code_challenge を生成 (Python例) import secrets, hashlib, base64 code_verifier = secrets.token_urlsafe(64) challenge = base64.urlsafe_b64encode( hashlib.sha256(code_verifier.encode()).digest() ).rstrip(b'=').decode() # 2. 認可リクエスト curl "https://api.x.com/oauth2/authorize?response_type=code\ &client_id=YOUR_CLIENT_ID\ &redirect_uri=https%3A%2F%2Fyourapp.com%2Fcallback\ &scope=tweets:read%20users:follow\ &code_challenge=$challenge\ &code_challenge_method=S256" |
ポイント
-code_verifierは 43〜128 文字のランダム文字列で、サーバー側に送信しない。
- トークン取得時はPOST /2/oauth2/tokenにcode_verifierを含めるだけ。
エンドポイント・データ形式の違いと移行マトリクス
1. 主なエンドポイント比較表
| カテゴリ | v1.1 (廃止) | v2 現行 | 主な変更点 |
|---|---|---|---|
| ツイート取得 | GET /statuses/show/:id |
GET /2/tweets/:id |
レスポンスが data ラップ、author_id 追加 |
| ユーザータイムライン | GET /statuses/user_timeline |
GET /2/users/:id/tweets |
必須パラメータにユーザー ID、ページングは next_token |
| スペース分析 | — | GET /2/spaces/:id/analytics |
新規エンドポイント、metrics フィールドが中心 |
| リツイート・いいね集計 | GET /statuses/retweets/:id |
GET /2/tweets/:id/retweeted_by |
複数ページ対応、meta.result_count が追加 |
出典: X API Reference(v2)エンドポイント一覧【^6】
2. JSON 構造の変化例
(a) ツイート取得 – v1.1
|
1 2 3 4 5 6 |
{ "created_at": "Wed Oct 10 20:19:24 +0000 2024", "id_str": "1234567890", "text": "Hello World" } |
(b) 同一ツイート取得 – v2
|
1 2 3 4 5 6 7 8 9 10 |
{ "data": { "id": "1234567890", "text": "Hello World", "created_at": "2024-10-10T20:19:24.000Z", "author_id": "987654321" }, "includes": { /* 任意の拡張情報 */ } } |
主な違い
| 項目 | v1.1 | v2 |
|---|---|---|
| ラップ構造 | なし | data オブジェクトで統一 |
| タイムスタンプ形式 | RFC 822(文字列) | ISO‑8601(UTC) |
| ユーザー識別子 | id_str(文字列) |
author_id(数値文字列) |
| 拡張情報 | なし | includes にメディア・ユーザー情報をオプションで付与可能 |
プラン比較ベストプラクティス & 移行チェックリスト
1. 無料 vs 従量課金プラン比較(2024‑版)
| 項目 | Free (0 USD) | Pay‑as‑you‑go A (月額 $0, 5 M req) | Pay‑as‑you‑go B (月額 $100, 無制限) |
|---|---|---|---|
| 月間リクエスト上限 | 500 k | 5 M | 実使用量に応じ課金(上限なし) |
| デフォルトレートリミット | 30 req/分 | 300 req/分 | 1,000 req/分 + 優先スロットリング |
| 利用可能エンドポイント | 基本的な tweet/read 系 | 全 v2 エンドポイント+分析系 | 全エンドポイント + 優先サポート |
| サポートレベル | コミュニティフォーラム | メールサポート(平日 9‑18) | 24 h チャット・電話サポート |
ベストプラクティス例
- スタートアップ / PoC
- 初期は Free → 使用量が 500 k を超えたら自動的に Pay‑as‑you‑go A にシフト(API ダッシュボードでアラート設定)。
- ミッドサイズ SaaS
- 月間リクエストが数百万規模になる見込みなら、最初から Pay‑as‑you‑go B を選択し、レートリミット超過のリスクを回避。
2. 移行チェックリスト(実務向け)
| ステップ | 作業項目 | 確認ポイント |
|---|---|---|
| 1️⃣ 影響範囲の把握 | - 使用中の v1.1 エンドポイント一覧作成 - 現在のレートリミットと利用率をダッシュボードで取得 |
全エンドポイントが v2 に対応しているか |
| 2️⃣ 新キー/トークン取得 | - console.x.com でプロジェクトごとに新トークン生成 - 環境変数・Secret Manager に安全保存 |
キー漏洩防止策(IAM ロール) |
| 3️⃣ テスト環境での検証 | - v2 エンドポイント呼び出しスクリプト作成 - 旧 JSON パーサを新構造にリファクタリング - Rate‑limit ヘッダー( x-rate-limit-remaining)監視 |
期待通りのレスポンスとエラーハンドリング |
| 4️⃣ CI/CD パイプライン更新 | - 新トークンをシークレットとして注入 - デプロイ前に自動テスト(Smoke Test)実行 |
ビルド失敗時はロールバック手順が確保されているか |
| 5️⃣ 本番切替 & 監視 | - 本番環境で新トークンへスイッチ - CloudWatch / Datadog に課金・エラーレートのメトリクス追加 |
異常検知アラート(コスト急上昇、Rate‑limit 超過) |
| 6️⃣ ドキュメント更新 | - 社内 Wiki に移行手順と新スコープ一覧を掲載 - 開発者向けチュートリアルを最新化 |
関係者全員が最新版にアクセスできるか |
公式リソース活用とニュースレター登録方法
1. 必須公式ドキュメント(2024‑版)
| リンク | 内容 |
|---|---|
| Pricing | 従量課金単価・割引表【^1】 |
| Rate Limits | レートリミット計算式とベースリミット一覧【^2】 |
| OAuth 2.0 Guide | PKCE 必須化、スコープ新規表記【^5】 |
| Migration Guide | v1 → v2 移行手順・サンプルコード【^6】 |
| API Reference (v2) | エンドポイント一覧とレスポンス定義【^6】 |
2. ニュースレター登録手順(月次更新)
- Developer Portal の右上メニュー → Newsletter をクリック
- メールアドレスを入力し、配信頻度を Monthly に設定
- 登録完了メールのリンクをクリックして認証
Tip: 「X API Updates」タグを付与した Slack ワークスペースにも自動転送できるので、チーム全体で情報共有が容易です。
まとめ
- 従量課金は 使用量に応じた単価の段階的割引 とレートリミットのリアルタイム調整を提供し、コスト最適化とスケーラビリティを両立させます。
- 新しい Developer Portal は UI が統一され、キー管理・利用状況確認がワンクリックで完結します。
- OAuth 2.0 の PKCE 必須化とスコープ表記変更はセキュリティ向上の柱です。実装例を参考に速やかに移行しましょう。
- エンドポイント・データ形式の違いは ラップ構造・ISO‑8601 タイムスタンプ が中心となります。既存コードはパーサ部分だけリファクタリングすれば対応可能です。
- プラン選定と移行作業は、チェックリスト と 公式ダッシュボード を活用して漏れなく実施してください。
次のアクション
1. 本ガイドをチーム内で共有し、担当者にチェックリストを割り当てる。
2. console.x.com にログインし、テストトークンで v2 エンドポイント呼び出しを実行する。
3. 公式ニュースレターに登録し、毎月のアップデート情報を受信する。
脚注
[^1]: X Developer Platform – Pricing. https://developer.x.com/en/docs/pricing (2024‑04 アクセス)
[^2]: X Developer Platform – Rate Limits. https://developer.x.com/en/docs/rate-limits (2024‑04 アクセス)
[^3]: X API Reference – Usage Limits endpoint description. https://developer.x.com/en/docs/api/usage/limits (2024‑04 アクセス)
[^4]: OAuth 2.0 Authorization Guide – Redirect URI restrictions. https://developer.x.com/en/docs/oauth/authorization#redirect-uri (2024‑08 更新)
[^5]: OAuth 2.0 Scopes Specification – New colon syntax. https://developer.x.com/en/docs/oauth/scopes (2024‑08 アクセス)
[^6]: X API v2 Reference – Endpoint list & migration guide. https://developer.x.com/en/docs/api/v2 (2024‑05 アクセス)