npm run huequica:dev

なんか長めのはなしとか

ヒカキンシンメトリーbotをよみがえらせた

huequica.hatenadiary.jp

この記事をリリースしてその後もあきらめずにいろいろやった所, 一応最低限必要な機能の実装が完了したので公開としました.
一応まだ特大のバグが混入していたなどでなければ公開状態を維持する予定です.

ヒカキンシンメトリーbot(新型)

twitter.com

こちらになります.

特徴

できる限り先代に寄せる

Pythonが書けるわけではないですが, 先代のソースコードが公開されていた( latest のコードではないと思われる)ので, それを読んで中身で何をしているのか探りました.
幸いなことに難しいことは特になかったので, あとは各種ライブラリ(画像処理etc)の選定をして, モジュールを作ってみてという感じでした.

TypeScript で構築した

そもそも私はPythonがあんまり好きではないというのが持論です. 理由としては大きくなくて単純にブロックの明示がないのが個人的に見づらいというくらいのもんですが, それでもここ数年趣味でもJSを愛用した結果非同期周りをある程度(使う限り)は理解できたのでステップアップを目的に TypeScript で記述することにしました.
あとはモジュールの数やサポートされているプラットフォームの数も理由の一つです.

(一応)サーバレスにした

アプリケーション本体の稼働場所についてはいろいろあって GCE のVMインスタンス上に置いてサービスを動かしています. なお, Dockerイメージの保管には Container Registry を使用しています.

また, データベースを一部の処理に使用しています. 先代はローカルの SQLite3 を使用していましたが, コンテナ(およびVM)のストレージを自分でメンテナンスするのは面倒だなあという気持ちから Firestore を採用しています. Firestore を使えばある程度は管理するタスクを減らせるし, 何より node 向けにもライブラリが提供されているので楽に記述できました.

技術的な話

需要があるのか分かりませんが, そのうち zenn.dev に書くのでお待ちください


2021/05/25 追記
かきました。

ソースコード

こちらに保管しています.

github.com

費用

非常に大事な話ですが現状 できる限り安く済ませる ことを念頭に開発, 管理しています.
故にインスタンスのマシンタイプは一番弱い e2-micro で, ストレージも10GB にしています.
その代わりインスタンスに限って言えば試算上, 一か月700円で運用できる感じになっています.


最後になりますが, 当然ながらこのプロジェクトでお金は一円たりとも貰っていません.(貰うに値しないと思っています)
私としては TSで何か動くものを作りたい というモチベーションで書いていたので, 結構満足のいくものが出来たかなと思います.
あとは心配なのはDBやAPIの使用にかかわるコストかなあという所ですが, 費用次第では最悪止めちゃうかもしれません.
その時はまたTwitterやここでお知らせします.