2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenAIとTwitter APIを使って、“続けたくなる”アプリを作ってみた話

Posted at

はじめに

最近、個人開発で「ぽもログ」というWebサービスを作りました。
スキマ時間を活用してポモドーロタイマーを記録し、その日の頑張りを AI がやさしく採点してくれるサービスです。

ぽもログ

この中で、以下の2つの外部サービスを活用しました:

✅ OpenAI API(ChatGPTを使った自動採点・フィードバック生成)

✅ Twitter API(Xアカウントでのログインやシェア連携)

本記事では、これらのAPIを使った理由や実装の流れ・つまずいたポイントなどを、技術者向けにまとめてみました。
同じように「AI」や「SNS連携」を自分のサービスに組み込みたい方の参考になれば幸いです。

使う流れ(ChatGPTモデル)

1OpenAIでアカウントを作成し、APIキーを取得(.envなどに持たせる)
2PythonなどのプログラムでAPIを呼び出す
(使った分だけ課金される従量課金制です)

main.py

from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY")

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "あなたは親切なAIです"},
        {"role": "user", "content": "AIとは何ですか?"}
    ]
)

print(response.choices[0].message.content)


OpenAI APIの大きな魅力のひとつは、使用するモデルやプロンプト(AIへの指示文)を自由に設計できる点です。
これにより、サービスの目的やユーザー体験に合わせて、最適なAIの挙動を引き出すことが可能になります。
APIでは、モデル名を指定するだけで、GPT-3.5やGPT-4、最新のGPT-4oといったさまざまなモデルを使い分けることができます。たとえば、

example.py

model="gpt-3.5-turbo"  # 軽量・高速・安価
model="gpt-4"          # 高精度・論理的思考に強い
model="gpt-4o"         # 最新・高性能・画像も扱える

また、AIに渡すメッセージ(プロンプト)も完全に自由に設計可能です。
たとえば、AIに「やさしく励ましてほしい」「プログラマー風に厳しく指摘してほしい」など、キャラや口調、目的に合わせて個性を持たせることができます。

example.py

messages=[
    {"role": "system", "content": "あなたはやさしくユーザーを応援するAIです。"},
    {"role": "user", "content": "~を頑張りました…"}
]

使う流れ(X API+Flask)

1Twitter Developerアカウント登録
こちらで登録
2プロジェクトとアプリを作成(X APIの鍵を得るため)
3 APIキー・シークレットを取得

main.py

@main_bp.route("/login/twitter")
def login_twitter():
    redirect_uri = "https://pomolog.net/login/callback"
    return current_app.twitter.authorize_redirect(redirect_uri)

@main_bp.route("/login/callback")
def twitter_callback():
    token = current_app.twitter.authorize_access_token()
    resp = current_app.twitter.get("account/verify_credentials.json")
    user_info = resp.json()
    username = user_info["screen_name"]

authlib を使って Twitter OAuth 1.0a を登録

app.twitter に認証機能をアタッチ

これにより /login/twitter で Twitterログインができるようになる

_init.py

from authlib.integrations.flask_client import OAuth

oauth = OAuth(app)
twitter = oauth.register(
    name='twitter',
    client_id=os.getenv("TWITTER_API_KEY"),
    client_secret=os.getenv("TWITTER_API_SECRET"),
    request_token_url='https://api.twitter.com/oauth/request_token',
    access_token_url='https://api.twitter.com/oauth/access_token',
    authorize_url='https://api.twitter.com/oauth/authorize',
    api_base_url='https://api.twitter.com/1.1/',
)

終わりに

今回は、OpenAI APIとTwitter APIを使って、実際に「ぽもログ」というサービスに機能を組み込んだ経験を紹介しました。

どちらのAPIもドキュメントが充実しており、初心者でも取り組みやすい反面、OAuthの認証フローやトークン管理など、細かい部分では意外とハマりどころも多かった印象です。
AIを活用しながらの開発でしたがかなりつまずくこともありました。

もしこの記事が、同じように「AI」や「SNS連携」をサービスに組み込みたい方のヒントになればうれしいです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?