表の画像を取得する API を作りたい
そんなこともあるかと思います。具体的には Slack にスッと表を貼りたいとかそういうときね。 Block Kit 使えばもしかしたらできるのかもしれないけど、あんなもん覚えたくないし Outgoing Webhook かなんかで一瞬で実装できるとよい。
table image creator とか適当に検索してもあまりいい感じの結果が得られなかったので、数十秒考えた結果以下のようになった。
- HTML で普通に table を作る Web アプリを作る
- puppeteer でそれにアクセスして table の中身をスクショして画像を返すのを express で作る
で Slack に画像を貼る場合は、 Outgoing Webhook がきたら 2. にアクセスして画像を得て Gyazo に投げてその URL をリプライするという web アプリをさらに作ります(アクセス事に別の画像 URL を得たいのと、 puppeteer を使う重いアプリに Slack 接続者がみんなアクセスしてきたら嫌だから)。
で、できたのが以下のようなもの。
Web アプリが 3 個もあって大変ですが、 Cloud Run にデプロイしておけば運用コストはタダみたいなもんだし本当によかったですね。
もうちょっとスマートに実装したいところですが、とりあえず個々のアプリ自体はシンプルなのでこれでよしとします。