thrakt's tech blog

コードとかやってる事の話。エモい話とかも含める。

TwitterのユーザタイムラインをAtomフィードで出す物作った2018 on the AWS Lambda

github.com

前からtwitterのユーザタイムラインをRSSリーダで読むという事をしていましたが、120文字以上書けるようになったあたりから微妙にキャッチアップできておらず、この程対応しました。

前からの物 d.hatena.ne.jp

変更点

一番大きいのは、個々のアカウントのタイムラインを個々に見ていくのではなく、個々のアカウントを予めリストに追加しておいて、そのリストを見に行くようにした。
前のやり方だとAPIのrate limitの関係で、あんまり巡回先を増やすと巡回頻度が落ちるという問題があった。更新頻度は結構違うのに、巡回頻度は同じという無駄さ。なので、全部リストに突っ込んで、更新分を振り分ければ無限に対応できるのでは? と考えた。
このアイデアは今の所うまく行っている。よかったですね。巡回頻度も上がり、Mastodonで一躍有名になったWebSub(PubSubHubbub)もしっかり動いており、後述の地味な変更もあり、思いの外満足度が上がりよかった。

  • Google AppEngine(standard)からAWS lambaにインフラを変更。
  • extended tweetに対応
  • ツイート内にURLが含まれる場合、フィード記事のリンクをツイート本体でなくURLに変更。
  • 上の変更と合わせて、フィード本文にツイート本体のリンクを追加。

感想

  • Dynamo DB だった。便利ですね。Dynamo DB に雑に突っ込んでいってるので、問題が出るのが今から楽しみ。
  • twitter APIのresponseをそのままDynamoに突っ込めると思ったら、空要素があると駄目。地味に詰まった。
  • Pythonは私用lambdaでしか使わず、都度思い出しながら書いてる。やっと覚えてきた気がする……。
  • 前のコードはデプロイとかがめんどくさく、AppEngineのstandardの環境がもはや微妙なのもあり、全くメンテできなくなっていた。
  • やはり時代はFaaSや! 経済的になったと思ってる。正直herokuの方が手軽だけど、無料枠はもうない。FaaSもHeroku buttonてきなものがほしい。