PythonとTkinterでTwitter投稿アプリを作る

# はじめに
Twitter APIを使ったシンプルな投稿アプリです。このアプリはPythonのGUIライブラリであるTkinterを使用して、入力した内容をTwitterに投稿するものです。windows11で無料でできます。

# 対象者
他人の投稿を見ずにtwitterの投稿だけをしたい方

# 結論
以下のコードを実行することで、Twitterへの投稿が可能な簡易アプリが完成します。
### 動作例
以下は実際に動作中のスクリーンショットです。


![スクリーンショット 2025-04-11 020223.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987176/29f6727f-e8cf-4617-9b59-d7b6af682cb9.png)
![スクリーンショット 2025-04-11 024149.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987176/ae55f280-165d-4d81-9ee3-7632992a54fc.png)
![スクリーンショット 2025-04-11 023704.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987176/cbfd95b0-0585-4131-adf7-1176f64714c9.png)


## 必要な準備
### Twitter APIキー取得
Twitter APIの認証情報を取得し、コード内に設定する必要があります。Twitter Developer PortalでAPIキー（Consumer Key, Consumer Secret, Access Token, Access Secret）を取得してください。以下の記事に全部書いてあります。

参考: [Twitter API認証情報の取得方法](https://zenn.dev/rescuenow/articles/e8e896fd722d2d)

### Tweepyライブラリインストール
以下のコマンドでTweepyライブラリをインストールします。
```bash
pip install tweepy
```
### Python環境準備
Python 3.xをインストール

## 実装コード
以下が実際のコードです。これをPython環境で実行すれば、GUIアプリケーションが起動します。
```py
import tweepy
import tkinter as tk
from tkinter import messagebox

# 認証情報（Twitter Developer Portalで取得）
CONSUMER_KEY = "あなたのConsumer Key"
CONSUMER_SECRET = "あなたのConsumer Secret"
ACCESS_TOKEN = "あなたのAccess Token"
ACCESS_SECRET = "あなたのAccess Secret"

def post_tweet():
    """
    入力されたメッセージをツイートする関数
    """
    message = text_widget.get("1.0", tk.END).strip()  # テキストボックスから入力内容を取得

    if not message:
        messagebox.showwarning("警告", "ツイート内容が空です。入力してください。")
        return

    # Tweepy Clientを使用して認証
    client = tweepy.Client(
        consumer_key=CONSUMER_KEY,
        consumer_secret=CONSUMER_SECRET,
        access_token=ACCESS_TOKEN,
        access_token_secret=ACCESS_SECRET
    )

    try:
        # ツイート投稿（API v2）
        response = client.create_tweet(text=message)
        messagebox.showinfo("成功", f"ツイートが投稿されました！\nツイートID: {response.data['id']}")
        text_widget.delete("1.0", tk.END)  # 投稿後にテキストボックスをクリア
    except Exception as e:
        messagebox.showerror("エラー", f"ツイートの投稿中にエラーが発生しました: {e}")

def bind_shortcut(event):
    """
    Ctrl+Enterでpost_tweet関数を呼び出す
    """
    post_tweet()

# Tkinterウィンドウの設定
root = tk.Tk()
root.title("Twitter投稿アプリ")
root.geometry("400x300")

# ラベル
label = tk.Label(root, text="ツイート内容を入力してください:")
label.pack(pady=10)

# テキストボックス
text_widget = tk.Text(root, height=10, width=40)
text_widget.pack(pady=10)

# 投稿ボタン
tweet_button = tk.Button(root, text="ツイートする", command=post_tweet)
tweet_button.pack(pady=10)

# Ctrl+Enterキーのバインド
root.bind("<Control-Return>", bind_shortcut)

# メインループ
root.mainloop()
```



## コードでやっていること
### TkinterによるGUI構築
Tkinterでシンプルなウィンドウとテキスト入力欄、ボタンを作成しています。
### Twitter API認証
Tweepyライブラリを使い、APIキーで認証しています。
### ツイート投稿処理
client.create_tweet()メソッドで入力された内容をツイートしています。

## もっとシンプルにするには
```py
response = client.create_tweet(text=message)
messagebox.showinfo("成功", f"ツイートが投稿されました！\nツイートID: {response.data['id']}")
```
↑を↓にすれば投稿完了のメッセージボックスが出なくなります
```py
client.create_tweet(text=message)
```

## .exeにするには
### 必要なツールのインストール
Pythonスクリプトをアプリ化するには、PyInstallerというライブラリを使用します。以下のコマンドでインストールしてください。

```bash
pip install pyinstaller
```
### 実行可能ファイルの作成
以下のコマンドを実行して、Pythonスクリプトを実行可能ファイルに変換します。

```bash
pyinstaller --onefile --noconsole your_script_name.py
```

# おわりに
Twitter API認証情報の取得は面倒ですが、ぜひ試してみてください。

# 追記（2025/04/21）
API制限がやけに早いと感じたので調べたところ、無料プランのAPI経由投稿数の上限が17件/1日になってたらしい。残念

https://qiita.com/neru-dev/items/857cc27fd69411496388#:~:text=%E5%85%A5%E5%8A%9B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82-,Twitter%20API%20v2(X%20API,)%E3%81%AE%E6%96%99%E9%87%91(2025%E5%B9%B4)&text=Free%E3%83%97%E3%83%A9%E3%83%B3%EF%BC%9A%E7%84%A1%E6%96%99%E3%80%82,ID%E6%95%B0%EF%BC%9A1%E4%BB%B6%E3%81%BE%E3%81%A7%E3%80%82