この記事にはこんなことが書かれています。
- 記事紹介
Twitterの名前を5分毎に東京の天気⛅☂☃と連動させるサーバレスプログラムを書いた
個人でも使える!おすすめAPI一覧
- Web APIで何を作るかきめよう
- X(旧Twitter)でAPIを利用する際の諸々手続き
- Replitを使って、Xにツイートできた
- バックエンドはFirebaseで構築が良さそう
■モチベーション
前回記事でWebhookを使った情報伝達方法について実装したり、Web APIについて深堀してみたりしました。
1.【情報処理】AWSでwebhookの受信&メール通知を実装する(API Gateway+Lambda)
2.Web APIについて
2つ目の記事の最後に書きましたが、今回は実践してみた紹介記事になります。
この記事を書きながら色々試していこうと思っていて、現時点で何ができるか想像もついていません…。
もし詰まって、次回!ということになっても、一緒に悩んで進めていただけたらと思っています。
■何を作るかきめよう
まずは先人たちがどんな面白いことをやっているか検索してみました。面白いですねぇ↓
‐Twitterの名前を5分毎に東京の天気⛅☂☃と連動させるサーバレスプログラムを書いたら色々知らないことが出てきた話
もうちょっと調べてみましたら、以下色々なAPIがあるようです。
‐個人でも使える!おすすめAPI一覧
上記踏まえて、以下のサービスなんか作ると面白いかなと思ったりしています。
「地域(ランダム)の出生数や経済指数などの統計情報をツイートするbot」を作成する
…ちょっと変わってますよね。。。😢
経緯を少しだけ語りますと、Open APIについて調べていて、内閣府が統計情報をAPIで提供していることを知りました。↓
‐地域経済分析システムRESAS
こんな風に私が住んでいる愛知県の人口ピラミッドなんかも図式化できたりします。
…なんかここ20年くらい女性より男性の人口が多いんだな!?
とか、何となく面白いものが見えてこないでしょうか。
個人的な話をすると、最近祖父が亡くなったり、子供が生まれたりと人生の始まりと終わりについて考える機会が多くて、
「命は限りあるものだから今日はちょっとでも頑張ろう」とか
「生まれてくる子供たちのためにできることなんだろうか」とか
を少しでも考える機会
になればなぁと思った次第です
本当は、昨日の出生者数とか出したかったんですが
昨日今日の出来事をAPIで提供してくれるシステムはなさそう…?でした。
安直な考えでは、
難易度的にも「ある内容を引っ張ってきて自動ツイートする」ことは丁度よいかなと推測しているのと、
誰かがやった内容そのままではなくてちょっと捻りたかったというのもあり、一旦このテーマで進めてみることにします。
■X(旧Twitter)でAPIを利用する際の諸々手続き
XのAPI利用は、公式の許可がいるようです。以下サイトから申請をします。
‐X開発者プラットフォーム > Twitter API
以下のとおり有料枠もありますが、今回の利用用途にはオーバースペック、かつ、勉強のためなので基本は無料で構成したいと思います。
手順は以下のとおりです。
1.開発者アカウントに登録する。
API利用の目的などを記入する必要があります。もちろん英語です…翻訳機と照らしながら確からしい英語で利用目的を記入しました。
無料枠の申請なので、記入後すぐに(クレカ登録などなく)ダッシュボードにアクセス可能になりました。
ダッシュボードは以下のような感じです。ツイート数のUsageがわかるようになっていそうです。
色々と英語読み飛ばしてポチポチしていたので、間違って有料版に登録してないか不安になりましたが、“Free”の表記があり、ちょっと安心しました。
サンプルアプリも提供されているようです。参考になりそう
公式:Twitter サンプルアプリ(@TwitterDev)
2.Xのbotを使うための設定をしていく
こちらの記事が非常にわかりやすかったです。「botを動かせるようにしていく」というところを進めていきます。
‐Twitter api freeでpythonを利用してbot(ボット)を作る
各種情報はローカルにメモして完了しました。
3.ツイートできるかのテストをする
上記2.で示した参考サイトに従ってテストしてみます。
Replitという環境は初めて使いましたが、すぐコーディングできて初学者には嬉しいですね!
ちなみに、Githubでアカウント連携してみましたが、Githubと連携した場合は1ヶ月Proモードで試用できるようです。
freeで使いたかったのですが以下のようにProとなっていて焦りました…。
上記2.のとおりアクセスキーの設定をしたあと、コードを拝借して実行してみました。
以下エラーが。
Traceback (most recent call last):
File "/home/runner/twitter-bot/main.py", line 8, in <module>
ACCESS_SECRET = os.environ['ACCESS_SECRET']
File "/nix/store/xf54733x4chbawkh1qvy9i1i4mlscy1c-python3-3.10.11/lib/python3.10/os.py", line 680, in __getitem__
raise KeyError(key) from None
KeyError: 'ACCESS_SECRET'
サンプルコードの引数が“ACCESS_SECRET”ではなく、“ACCESS_TOKEN_SECRET”が正しそうですね。
以下修正して再実行!
で、できたー!!!
ここまでで
“外部からXのAPIを叩いて、ツイートする”はできることを確認できました。
一個ずつ見ていかないとどこがおかしいのか分からなくなるので、一歩一歩行きたいと思います
さて、上記見真似でアクセストークンとやらを設定していましたが、これらがなにか気になりませんか?
次章にまとめておきます。
<追記:あとから知ったことを参考までに>
*コードで試用している「tweepy」はメンテナンスされなくなったようなので、使用するのを避けた方が良いという記事を見つけました。
‐PythonでTwitter
*上記記事で、Twitter apiの利用目的は300 words 以上で使用目的を記載とあります。
私はそんなに書かなかったと思います。後から気づきました。
偶然にもフォーマットは同じ感じで書いていますので、意味合いは伝わるとは信じていますが、もし文字数の条件が満たされないとして後から取り消しされることもあるかもしれません、できるだけ詳しく書いた方がよいということです。
■認証の仕組みについて
認証の仕組みについては、以下記事を参照。
‐一番分かりやすい OAuth の説明
‐APIキー取得を解説!キーの役割・アクセストークンとの違いも
まとめると、
API キーは、APIにアクセスするための情報で、主に「誰がそのAPIを使用しているかを特定する」もの
API シークレットキーは、APIにアクセスする際に使用するパスワードのような情報
アクセストークンは、ユーザがAPIを利用する際に発行されるキーで、ユーザー・端末の数だけアクセストークンが発行されるもの。ユーザ確認のための情報
APIキーは不変な情報で、アクセストークンはクライアントとサーバ間の通信で利用するもの
アクセストークンについては、上記参照URLの1個めの図がわかりやすいですね。
■バックエンドを実装してみるか
上記で紹介したbotを常時稼働させるためにはサーバ立ち上げがいるが、AWSを利用しようとするとどうしてもコストが心配になる。
そんな大した情報ではないので、いいのだが、調べているとfirebaseを使用してアプリ開発をしている方が多くいる事に気づいた。
‐Webアプリ無料運営のススメ:FirebaseとNuxt(Vue)なら最強!
‐Firebaseとは?できることや料金体系などをわかりやすく解説
‐あなたに最適なmBaaSはどれ?
ここらへんを掘って、最適なシステムを検討していこうと思う
バックエンドの開発は次回!
<以下次回確認すること・メモ情報>
‐Firebaseとは?できることや料金体系などをわかりやすく解説
‐地域経済分析システムRESAS
‐RESAS API仕様書