aquarlaのブログ

141文字以上のつぶやき

マストドンのマルコフ連鎖BOTをサーバーレス環境で動かそう

みなさんこんにちは、あくあーらと申します。イワテドン および ごちそうフォト の管理人をしております。

本記事は、Fediverse (4) Advent Calendar 2020 18日目の投稿となります。どうぞよろしくお願いします。

ことのはじまり

マストドンの一部界隈でなぜか微妙な流行を見せているマルコフ連鎖BOT

技術的にはさほど難しいものでもないので、わたしのサーバでも1個くらいは動かしてみてもいいかなと思っていたものの、そのためにわざわざどこかのマシンにプログラムを仕込むのもだるいなあ、せっかくなのでAWS Lambdaのサーバーレス環境で気軽に動かせるものを作りたいなあ、、、と考えておりました。

というわけで、

ちゃちゃっと作りました。

github.com

以下実装の概要です。

  • プログラム本体は AWS Lambda上で動作、Amazon S3上にデータを永続化。
  • ランタイムは Ruby 2.7 を使用
  • 日本語形態素解析には MeCabを使用
    • Lambda上で MeCab を実行するために、Lambdaと同等の環境を再現したDockerイメージを利用し、その上でMeCabのmakeを実行
    • プログラム本体より、そのためのDockerfileを書くほうがよっぽど面倒だった

本プログラムをベースに動いているのが以下のBOTです。

iwatedon.net

f:id:aquarla:20201217171148p:plain f:id:aquarla:20201217171203p:plain

動かしてみた感想としては、ほぼ問題もなく正常に稼働し続けているのと、必要となる費用もAmazon S3に保存するごくわずかのデータに対する課金のみなので、非常に快適といった感じです。 ユーザー辞書をちゃんと作成すると、もう少し良い感じに動くかもしれない。でもたぶん面倒なのでやらない。

本プログラムは、私以外の人も気軽に使えるように公開したつもりです。Dockerが入っている環境であれば簡単にデプロイパッケージをビルドできると思うので、興味がある人がいれば使ってみてください。

GitHub - aquarla/mmb-lambda: Mastodon Markov Bot for AWS Lambda.

ご意見、ご感想、苦情等はこちらまで

おわりに

個人的にはサーバーレスアーキテクチャというものにほとんど興味を持っていなかったのですが、マストドンBOTのような些細なプログラムを、サーバの御守りを気にすることなく動かせるという点においては、非常に良いものじゃないかなあと思っています。

以後他のマストドンBOTを実装することがもしあれば、そちらもLambda上でサクっと動かせるように作っていくかもしれません。おしまい。