今年の3月から趣味でサービスの企画 - 開発 - 運用をしている。
エンジニアという職業に就いてから、土日の時間を使ってひっそりと何かを作ってリリースすることをやってきたが、これまでは勉強目的のものが多かった。今回はちゃんとリリースして運用していくことを目的にやってみている。というのもAIコーディングが発展して「この表現どうやって実装すればいいんだ!」みたいな壁も簡単に乗り越えられるようになり、サービスの出来栄えも自分としてはある程度満足できたからである。
何を作っているのか
toC向けで、作業効率を上げる系のサービスを作っている。人と他愛もない雑談をしている中で「この作業やりたくないなー」と感じたことを自動化して公開した。人の不便を解決することはやはり需要があるようで、ある程度の人に使ってもらえている。
リリース以来の累計で1.1万人、MAUでいうと約1,500人ほどが利用している。

毎日使うようなサービスではなく、四半期に1回開くかなあという感じなのだが、サービス特性を考えるとまあまあの数字かなと思う。
開発環境やインフラなど
-
開発環境
- 開発マシンWSL2
- ツールなど
- Claude Code(Max)
- 開発、レビュー用途
- Copilot
- レビュー用途
- Docker Compose
- ローカルでの開発環境構築
- Claude Code(Max)
- CIマシンUbuntu Mini PC
- GitHub Actions経由で、self-hosted RunnerをつかってPR作成時の自動Preview環境を作成
- PreviewはCloudflare Accessをつかって公開
-
アプリケーション
- フロント
- React, TypeScript
- バックエンド
- Golang, Gin
- フロント
-
本番環境など
- インフラ
- Cloudflare, Cloudflare Pages, Cloudflare Workers
- Supabase
- Resend
- モニタリング
- Sentry, Discord, IFTTT(不具合のつぶやきなどみてる)
- CI/CD
- GitHub Actions
- 自動Preview環境構築(前述のとおり)
- 自動テスト
- 本番デプロイ
- Health Check(定期的にAPIの疎通確認して、失敗したらDiscordに通知)
- コスト監視(定期的にCloudflare / GCPのコストを確認して、一定額を超えていたらDiscordに通知)
- GitHub Actions
- インフラ
-
本番のセキュリティ周り
- CloudflareのWAF
- Cloudflareで日本以外からのアクセス全ブロック
- GitHubのDependabotで脆弱性チェック
- サプライチェーン対策
- SHA Pinningの強制
- Takumi Guardの導入
- Cloudflareへの異常アクセスを能動的に監視
- RBACをもとに、403アクセスが発生した際のDiscord通知(基本は起こらない)
- シークレットの定期ローテーション
- 利用ユーザのメール必須化
- すべての重要機能にMFAの必須化
- セルフで脆弱性テストを実施するイテレーションの仕組みを構築
- etc…
ざっとこんな感じ。あまりお金をかけずにできることはやっているつもり。 PIIはSupabaseの管理テーブルにのみ保持しているが、CloudflareのProプランの導入検討や、利用ミドルウェアの脆弱性通知を収集する仕組みをつくるなど、セキュリティ周りはもう少し強化していきたい。
最初はK8sで作るか!とも思ったけど、サービス開発の時間が割けなくなるので、なるべく楽に運用できる構成にした。 この構成ではCloudflare Pagesにちょっと癖があってハマることがあったので、それは別の記事で書こうかなと思う。
今後やっていきたいこと
前述のセキュリティ強化はもちろんだが、サービスのDAU・MAUをKPIに据えて伸ばしていきたい。そのために今後も地道にユーザの声を聞きつつ、突き抜けた使いやすさを追求したいと思っている。世の中のWebサービスは機能が多すぎて複雑だなと感じるので、シンプルでわかりやすいUI/UXを追求していきたい。
これは盆栽である
このサービスはあくまで趣味でやっている盆栽のようなものである。そのため収益化の予定は今のところない。人のためになって誰かが喜んでくれたら、それで十分である。 個人開発は全部自分でやることになるから、サービス開発の脳トレになって勘所が磨かれるし、普段本業で触らない技術にも挑戦しやすいのが良い。 あと自分の財布から出費しているので、ちゃんとコスト管理しないと自分が辛くなる、という適度な緊張感があるのもいい。
利用ユーザがいるうちは責任をもって運用を続けていく。

