ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
X (Twitter) API の概要
2023 年 4 月、Elon Musk 体制下で従来の無料 API がほぼ廃止され、X API v2 という新体系に統一されました。スクレイピング対策強化と収益化が目的で、開発者コミュニティに大きな影響を与えた変更です。
本記事執筆時点 (2026 年) で v1.1 は段階的に停止され、新規開発はすべて v2 で行います。
料金プラン (2026 年時点)
| プラン | 月額 | 投稿上限/月 | 読み取り | 検索 | 用途 |
|---|---|---|---|---|---|
| Free | $0 | 500 (書き込みのみ) | 自分のツイートのみ | × | ボット投稿のみ |
| Basic | $100 | 3,000 (User) / 50,000 (App) | 月 10,000 件 | 過去 7 日 | 個人開発・小規模 |
| Pro | $5,000 | 300,000 | 月 1,000,000 件 | フルアーカイブ | 商用サービス |
| Enterprise | 応相談 | 制限大 | 制限大 | フルアーカイブ + Firehose | 研究機関・大企業 |
無料 tier が極めて限定的なため、個人開発でも実質 Basic $100/月が最低ラインになっています。
認証方式
v2 API は 3 種類の認証をユースケース別に使い分けます:
| 方式 | 用途 | 取得物 |
|---|---|---|
| OAuth 2.0 Bearer Token | App-only 読み取り (検索、公開タイムライン) | Bearer Token |
| OAuth 2.0 PKCE | ユーザー認可、ツイート投稿、DM | Access / Refresh Token |
| OAuth 1.0a User Context | 従来互換、メディアアップロード | API Key + Secret + Access Token + Secret |
Tweepy (Python) の使い方
# pip install tweepy
import tweepy
# Bearer Token (App-only, 読み取り専用)
client = tweepy.Client(bearer_token="YOUR_BEARER_TOKEN")
# 自分の最新 5 件取得
me = client.get_me()
tweets = client.get_users_tweets(id=me.data.id, max_results=5)
for t in tweets.data:
print(t.id, t.text)
# 投稿には OAuth 1.0a または OAuth 2.0 User Context が必要
client = tweepy.Client(
consumer_key="API_KEY",
consumer_secret="API_SECRET",
access_token="ACCESS_TOKEN",
access_token_secret="ACCESS_SECRET",
)
client.create_tweet(text="Hello from API v2!")
twitter-api-v2 (Node.js)
// npm install twitter-api-v2
import { TwitterApi } from 'twitter-api-v2';
const client = new TwitterApi({
appKey: process.env.X_API_KEY,
appSecret: process.env.X_API_SECRET,
accessToken: process.env.X_ACCESS_TOKEN,
accessSecret: process.env.X_ACCESS_SECRET,
});
// ツイート投稿
const tweet = await client.v2.tweet('Hello X API v2!');
console.log(tweet.data.id);
// 検索 (Basic 以上)
const search = await client.v2.search('from:elonmusk -is:retweet', {
max_results: 10,
'tweet.fields': ['created_at', 'public_metrics'],
});
for await (const t of search) {
console.log(t.text, t.public_metrics);
}
主要エンドポイント (v2)
| エンドポイント | 用途 | 必要プラン |
|---|---|---|
POST /2/tweets | ツイート投稿 | Free 以上 |
DELETE /2/tweets/:id | ツイート削除 | Free 以上 |
GET /2/tweets/search/recent | 直近 7 日検索 | Basic 以上 |
GET /2/tweets/search/all | 全期間検索 | Pro 以上 |
GET /2/users/:id | ユーザー情報 | Basic 以上 |
GET /2/users/:id/tweets | ユーザータイムライン | Basic 以上 |
GET /2/spaces | Spaces 情報 | Basic 以上 |
GET /2/tweets/:id/liking_users | いいねしたユーザー | Pro 以上 |
レート制限の確認
レスポンスヘッダで残量を確認できます:
x-rate-limit-limit: 75
x-rate-limit-remaining: 73
x-rate-limit-reset: 1715000000
# x-rate-limit-reset は Unix 秒。
# 0 になったら 429 Too Many Requests が返る。import tweepy, time
def safe_call(fn, *args, **kwargs):
while True:
try:
return fn(*args, **kwargs)
except tweepy.TooManyRequests as e:
reset = int(e.response.headers.get('x-rate-limit-reset', time.time() + 60))
wait = max(reset - int(time.time()), 5)
print(f"Rate limit, sleeping {wait}s")
time.sleep(wait)
v1.1 から v2 への移行
| v1.1 | v2 |
|---|---|
POST statuses/update.json | POST /2/tweets |
GET statuses/user_timeline.json | GET /2/users/:id/tweets |
GET search/tweets.json | GET /2/tweets/search/recent |
GET friends/list.json | GET /2/users/:id/following |
| レスポンスがフラット | data + includes + meta 構造 |
代替プラットフォーム
X API の有料化を受け、開発者の一部は分散型プロトコルへ移行しています:
- Mastodon API — 各インスタンスごとに OAuth、REST/Streaming、無料。
statusesエンドポイントが Twitter v1.1 に近い - Bluesky AT Protocol — DID ベースの分散 ID、
com.atproto.*/app.bsky.*名前空間、無料、レート制限緩め - Threads API (Meta) — 2024 年から提供開始、Instagram と連携、無料枠あり
- Misskey / Nostr — フォロワー数は少ないが完全無料
規約変更の経緯
- 2023 年 2 月: 無料 API 廃止予告
- 2023 年 3 月: v2 新料金体系発表 ($100 / $5,000)
- 2023 年 4 月: 旧無料 tier 停止
- 2023 年 6 月: 読み取り制限 (デイリーリミット) 導入
- 2024 年: Free tier に「書き込みのみ 500/月」追加
- 2024 年以降: 学術研究者向け無料アクセスは原則廃止 (個別申請)
FAQ
Q: 個人の bot を運用したい。最低いくらかかる?
A: 投稿のみで月 500 件以内なら Free で可能。タイムライン取得が必要なら Basic $100/月。
Q: v1.1 で動いていたコードが急に動かなくなった
A: v1.1 は段階的に shutdown 中。v2 に書き直すか、互換ラッパー (Tweepy 4.x など) を使ってください。
Q: ローカル開発で課金を抑えたい
A: Free で開発し、本番だけ Basic 契約する運用が一般的。プロジェクト単位で API Key を分けます。
Q: Mastodon や Bluesky は本当に Twitter 代替になる?
A: ユーザー数は 1/10 以下ですが、API は緩く、開発体験は良好です。クロスポスト用ライブラリ (mastodon.py, atproto) が充実。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?