link.bkiban (リンクページをつくってみた)


みなさん、こんにちは。先ほど 3 年前 (2022年4月) に公開した Qiita の記事に「いいね」をいただけて、ちょっと喜んでいる ishi32 と申します。カオスの力で開発を進めています

## bkiban.com

SaaS をつくろうとしています

ビジネスの基盤、bkiban

というものをつくっていこうと思っています

## この記事の読者

未来の私です

## db.bkiban

まずデータベースをつくっていこうと思っていました。dbms をつくるわけではなくて、スキーマ定義 (テーブル定義) が簡単にできて、データ投入、更新ができて、webブラウザや csv に出力できるような、そんな感じのものを目指して 2025/4/1 に開発をスタートしました

## AWS さんの ISV/SaaS Community Day に参加しました

2025/4/18 唐突ですが行って来ました。オンラインも選択できたのですが、オフラインにエントリーして目黒へ伺いました

様々な講演がありましたが SaaS Jarney Framework の存在を知りました。当日の講演では SaaS Jarney を「はじめる、つくる、拡大する」というステップに分けてお話しされておりまして、私の場合は次のドキュメントを読むところからはじめると良いようでした

SaaS Jarney Framework の [ホワイトペーペー](https://d1.awsstatic.com/whitepapers/ja_JP/saas-journey-framework.pdf)

私がこの圧巻の内容をお伝えするよりこちらの要約の方がお役に立つと思います

[SaaS 成功のための基礎戦略とAWS活⽤法
〜 SaaS Business 基礎編 〜](https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2024_AWS-SaaS-Enablement-BizBasic_0831_v1.pdf)

### その他のキーワード

- ストック型ビジネス
ソフトウェアビジネスは売り切り型のビジネスであったが、SaaS による製品展開はストック型ビジネスとなる。長期的な収益が得られやすく、収益に基づく投資も計画しやすくなる
- リカーリングビジネス (リカーリングモデル)
リカーリングとは「繰り返す」を意味しておりストック型と同義となる。古くからあるビジネスから最近登場したものまで様々なサービスがある
  - 新聞、雑誌の定期購読
  - 賃貸住宅や月極駐車場
  - 通信料金
  - 塾、英会話スクール
  - デジタルコンテンツなどのサブスク
  - 消耗品 (ウォーターサーバやサプリメント)
  - SaaS
サブスクリプションモデルはリカーリングモデルのひとつと言える

## 方針変更

ホワイトペーペーを読み進めるにつれ db.bkiban が無理筋であることを思い知りました。やってみて分かったのですが、需要がなさそうなアプリなのに、やたら手間がかかる。投資と成果が釣り合わないことがよくわかりましたので方針変更することにしました ([作りかけのアプリはこちら](https://db-bkiban.vercel.app/))

db.bkiban を開発した際の記事は以下の限定共有記事に移動しました。こちらは完全に個人のメモなので無視してくださいね

- [2025/4/1 から 4/7 にやったこと](https://qiita.com/unr/private/c9d2f17367216af67bf0)
- [2025/4/8 から 2025/4/18 にやったこと](https://qiita.com/unr/private/1210d561039c5c898c97)

## link.bkiban

シンプルに web リンクページをつくることにしました。平成初期にはとてもたくさんあった「リンクページ」。ハイパーリンクは人類の３大発明の１つに数えることができる偉大な技術です。リンクページをつくって公開する。検索エンジンのおかげですっかり影を潜めてしまったこの行為。シンプルですが令和の世でもひょっとすると需要があるかもしれず、トライしてみることにしました

## 成果物

[link.bkiban.com](https://link.bkiban.com)

## アーキテクチャ

![スクリーンショット 2025-04-19 17.57.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164727/30a8c7ad-5ced-42de-91ae-0bba49478d17.png)

db.kiban と全く同じ構成で進めようと思っています

### フロントエンド

node.js + typescript + next.js + tailwind css で開発し、この web ブラウザアプリを Vercal のエッジサーバからホスティングします

### バックエンド

Supabase の各機能を利用します

#### Database

リンクページのデータはすべて Supabase Database に格納しています。実体は PosegreSQL でして、この老舗のリレーショナルデータベースが利用できるのも Supabase を利用するモチベーションになっています

#### Restful API

データベースアクセスはすべて Rest API 経由で行っています。この部分はこれまで AWS Lambda Function で実装することが多かったのですが、今回初めて Supabase Edge Functions で実装しました。Edge Functions は Node.js ではなく Deno で動いています。Node.js は素晴らしいエコシステムなんですが、後発の Deno はとんでもなく洗練されています。AWS API Gateway + AWS Lambda だと何かととっ散らかってしまうものが、Deno だとスッキリまとまります

#### Supabase が止まるとすべてが止まってしまう
db.bkiban を開発中の 2025/4/15 16:54 頃にバックエンドが無応答になってしまいサービス停止になりました。Supabase の Edge Functions を除くすべてのサービスが Unhealthy となっており 17:13 頃までこの状態が続きました。サービス停止中はいろいろ調べてはいたのですが Resizing Project Compute size という状態だったようでした。Supabase は This can take a few minutes. と言っていたのですが、実際は数十分間止まってしまいました

### このアーキテクチャで気に入っているポイント

1. すべてのクラウドサービスが AWS 東京リージョン内にある
Supabase と Vercel はともに AWS 東京リージョンを選択して利用していますので、すべての通信が同一クラウドの同一リージョン内で完結できています。レスポンスがとても早くて助かっています
1. Supabase はローカルPC上でも動かせる
Supabase は簡単にローカルPC上で動作する環境をつくることができます。クラウドサービスの利用料金を気にすることなく開発を進めることができます (何をやっても誰にも迷惑をかけないって素晴らしい)
1. すべて無料
これは結構重要ですよね。AWS Route53 は若干の利用料金が発生していますが Vercel と Supabase は無料で利用できています。クレジットカードの登録も必要なく、開発規模の拡大やサービス公開によって無料枠を超過するまではすべて無料です

## 開発時のメモ

[2025/4/21 - 4/25 link.bkiban 開発メモ](https://qiita.com/unr/private/8a840d33019c049e2733)