4 年前に開発したサービスを Deno で再実装する

2018年に作ったWebサービスを今年の春先に閉鎖した。

閉鎖し半年、技術検証の目的(適当なCRUDが有る)とコンセプトは悪くなかったよなということで、Deno Deploy を実行環境に移して、再度実装した。

再度実装、公開したのは 「1.」。

https://1h.ddot3.link/

1時間で消える掲示板。
日記でもないが、簡単なまとめとしておきたい。

経緯

経緯らしいもでもないが、ある種のタイミングの一致が有った。
4年前に実装したサービスを今年春先に閉鎖したタイミングと、Deno でサービス1つ作り切りたい/ある種の作り切る要請のタイミングが重なった。

閉鎖は、ブログとアプリのサーバーが同居していたりしたのをスリム化したかったのもあるし、単純に使われてなかったしね。というのもある。
(そこそこアクセス数があったらアフィリエイトでちょっと稼げたらと思ったけど、ついぞそこまで行くことは無かった。)

Deno でサービス1つ作り切りたいのは、Deno Deploy 起点でのフルサーバレースインフラの構想を公私問わずぶち上げちゃったのでやりたさ9割、義務感1割くらいの感じ。

一通りいけそうな感触も得ていたので踏み切った感じ。

業務外の時間だけで開発、確認してみたら最初のコミットが10/9なので大体3週間、3週目はインフラ調整ばっかりだったので実質開発は2週間程度で終えられた。

技術

1h 2018年版は以下のような要素で構築している。

  • EC2
  • Node.js
  • Mysql
  • Vue.js
  • JavaScript
  • skelton.css
  • 特に認証の仕組み無し
  • 日本語のみ
  • 特にOGPなど無し
  • デプロイは、scpでごにょごにょ
  • ログはEC2に直接吐き出し

今回は、以下の要素で構成。

  • Deno Deploy
  • supabase(DB/API)
  • Upstash
  • Fresh(preact)
  • TypeScript
  • tailwind.css
  • Twitter連携
  • i18n対応(英語/日本語)
  • 掲示板の投稿タイトルに基づいて、文字入りのOGPを自動生成。
  • デプロイは github actionsで自動化
  • ログは、datadogへ

引き継いだ要素はこれといって無い。

なんか良かったこと

  • 作りきれた。それ自体は結構勲章
  • 何かを一人でやり切るというのは、それだけでちょっと自己肯定感を高める気がする
  • これまでちまちま公開していた Deno 向けモジュールを結構使って構築できた。
  • インフラの構成要素も、想定通りできた

コミュニティへの感謝

ログをdatadogに吐き出すのがどうにもならず、コミュニティで相談させてもらった。
無事動作が確認できた。

これに伴って、fresh-logger というモジュールを公開した。
ログを書き出すだけではなく、特定の関数を渡すことでログを任意の場所に転送できる。

公開した後、fresh-logging という全く別のモジュールも公開されていたことに気が付いた。
先に気が付いていたら、別の名前をつけるくらいの分別は持っている。

公開してからあったこと

公開してから喜び勇んでツイートしてOGPも無事動作しているなと確認した後、URLが怪しいものとTwitterが誤判定して、リンクから飛べなくなっている。


申請したけどいつ解除されるやら。

公開に合わせて、deno-ja の Showcaseにも申請させてもらった。
1日待たずに登録完了。ありがたい。

これからやること

現在の実装は、完全なMPAのウェブサイトになっている。
せっかくのfreshなので、アイランドを使ったUIを少し入れてみたいという思いもあるので、年末にかけて少し改修をしたいという思い。

では。