アカウント作成からPythonでXのv2APIを使ってポストを行うまでの方法（2025年2月時点）

# 概要
本記事は、Xのv2 APIを使って、Pythonでポストを行う方法を紹介します。Xでのアカウント作成からキー取得、Pythonのコードの書き方まで記載していますので、Pythonの実行環境があればこの記事を読むだけでポストができるようになります。

# アカウント発行手順
[X開発者プラットフォーム](https://developer.x.com/ja)から、ポストしたいユーザーにログインします。
![スクリーンショット 2025-02-01 100248.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/1732addc-8017-31f5-3ee0-29a99a648468.png)


ユーザー作成がまだの場合、ここから登録ができます。
![スクリーンショット 2025-02-01 100552.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/74bcb52f-d7f5-be76-ed22-fab3930a0f7f.png)

ユーザーログイン後、「開発者ポータル」に移動します。
移動すると課金体系を選ぶ画面に遷移するので、「Sign up for Free Account」を選択します。
![スクリーンショット 2025-02-01 101703.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/7cefc30e-3750-ac9e-abb0-8724ed8765ac.png)

その後、「Developer agreement & policy」画面に遷移します。ここでAPIの用途を記載します。
![スクリーンショット 2025-02-01 102411.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/abcdf763-2b85-d38d-a48e-2a7bb8ae5d1c.png)

記載は英語で250字以上必要です。英語が得意な方は自分で記載してもよいと思いますが、ChatGPTなどで目的を日本語で書いたうえで、250字以上の英語に要約してもらうのもよいと思います。こんな感じ↓です。
![スクリーンショット 2025-02-01 103242.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/a0de1081-19e6-ac8e-3bd5-1cbf77c436a8.png)

用途を入力後、チェック項目の記載内容を確認の上チェックし、Submitを選択します。以前は承認までに時間がかかった記憶がありますが、今は自動承認のようで、すぐに画面遷移します。
開発者ポータル画面が開ければユーザー準備は完了です。
![スクリーンショット 2025-02-01 103938.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/7466e0b4-3238-593a-94b9-b35a336da00d.png)

# キー発行手順
API利用のために必要なキーは、認証方法によって異なります。OAuth1.0aを使うパターンとOAuth2.0を使うパターンの大まかに2種類ありますが、本記事ではOAuth1.0aで認証を行う方法を紹介します。

OAuth1.0aで認証を行う場合、必要なキーは以下です。
- API Key (=Consumer Key)
- API Secret Key (=Consumer Secret)
- Access Token
- Access Token Secret

キーを発行する前にOAuth1.0aの認証の権限を設定します。デフォルトではReadOnlyの権限しかないので、ポストを行うためにはWrite権限を付与する必要があります。
左メニューのProjects & Appsから対象のプロジェクトを選択し、Settingsタブを選択します。そしてUser Authentication Setupを選択します。下の画像では設定済みのためボタンが「Edit」となっていますが、最初は「Setup」となっているはずです。
![スクリーンショット 2025-02-01 114601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/cd893aff-0286-58d8-5afe-546d05d6b879.png)

そして、App permissionsでWriteを含む権限を選択します。今回は「Read and write and Direct message」を選択していますが、「Read and write」を選んでも問題ありません。
![スクリーンショット 2025-02-01 114242.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/681df897-5655-2ea0-adb0-b2d05ad55ada.png)
ほかの項目は今回は使用しないので、requiredだけ適当に埋めます。URLを入力する箇所もありますが、`https://x.com/`など適当なURLを入力して問題ありません。
Setup完了後、Client IDとClient Secretが表示されますが、今回は使いません。

上記のSetupが終わったら、キーを作成します。左メニューのProjects & Appsから対象のプロジェクトを選択し、Keys and Tokensタブを選択します。API Key and Secret、Access Token and SecretのGenerate、Regenerateでそれぞれのキーを作成します。作成後、キーが表示されますが、一度閉じると再表示できなくなるので、それぞれのキーをメモしておきます。
![スクリーンショット 2025-02-01 105715.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/171e4fa0-a4ed-239f-4c3a-6c2213daab1c.png)

# Pythonでのポスト手順
キー作成が完了したらPythonでAPIを呼び出してポストを実行します。Pythonの実行環境は構築済みであることを前提に記載します。

ポストの実行には今回[tweepy](https://docs.tweepy.org/en/stable/)というライブラリを使用します。
```
pip install tweepy
```
でライブラリのインストールを実行後、以下のコードを実行するとポストすることができます。各キーは前手順で取得したキーに置き換えてください。API Key = Consumer Key、API Key Secret = Consumer Key Secretであることに気を付けてください。
```
import tweepy

ck = '<API Key>'
cs = '<API Key Secret>'
at = '<Access Token>'
ats = '<Access Token Secret>'

client = tweepy.Client(consumer_key=ck, consumer_secret=cs, access_token=at, access_token_secret=ats)

client.create_tweet(text="Hello World!")
```

以下が実行結果です。
![スクリーンショット 2025-02-01 115755.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1870268/8e71db5f-46de-b1ca-331a-b1baa37fd021.png)

以上がXのAPIを使ってPythonでポストする手順になります。
皆さんの参考になれば幸いです。

今後の記事作成のモチベーションになりますので、この投稿が役に立った！という方はいいね、コメントをしていただければと思います。