Bun + Hono + SQLite + Drizzleの下準備
Posted Aug 08, 2024
経営している会社で使う業務システムの開発を始めました。
Cloud Run単体で動かせるようにシンプル、軽量、ハイパフォーマンスなシステムを目指し、Bun + Hono + SQLite + Drizzleを使った構成にします。
この記事では、開発に入る前の下準備としてBunのインストールから基本的なライブラリ(パッケージ?)のインストールまでを備忘として残しておきます。
背景
経営している会社で、社内で使う簡易的な業務システムの構築を始めようと思い立ちました。
どうせ社内で使うものなので、以下のような基準でソフトウェアスタックを考えてみました。
- 学習も兼ねて新しいソフトウェアスタック
- コンテナベースのサーバーレスサービス「Cloud Run」で動くもの
- アプリのサイズも小さく、パフォーマンスが出るもの
自分自身はホビープログラマなので、そこまで技術にこだわりはありません。
厳密な機能面、性能面での比較などは行なっていません。
Bun、Hono、Drizzleを使った開発の進め方がまとまっている動画
今回使うパッケージを使った開発の全体像を学べる動画はこれが良いと思います。
自分もこれを観て全体の流れを理解しました。
Bun
「バン」と読む。
Node.jsに比べて、パフォーマンスに優れたランタイムということでこちらを選択。
最初はDenoを使ってみようと思ったのですが、日本語の情報が少なそうだったのでBunを選択しました。
Hono
これもパフォーマンスの良さに惹かれて選択しました。
開発を始めて数日程度ですが、非常にシンプルに書けるので気に入りました。
特にRestAPIをさくっと書くにはいいですね。
日本語の「炎」に由来していることを後から知りました。
SQLite + Drizzle
社内向け、ほぼ自分用なので最小限のインフラで動くWebアプリにしたいと思っています。
Cloud Run単体で動かすためにSQLiteを選択しました。
機能開発が追いつかない時に直接データをメンテナンスする可能性もあるため、GUIで触れるDrizzle Studioが付属するDrizzleをORMに選定しました。
下準備の手順(備忘録)
Bunのインストール
Bunの公式サイトに記載の通り
curl -fsSL https://bun.sh/install | bash
Bun + Honoでプロジェクトディレクトリ作成
Honoの公式サイトに記載の通り
// bash
bun create hono@latest my-app
create-hono version 0.11.0
✔ Using target directory … my-app
? Which template do you want to use? Bun
✔ Cloning the template
? Do you want to install project dependencies? yes
? Which package manager do you want to use? Bun
✔ Installing project dependencies
🎉 Copied project files
Get started with: cd my-app
ライブラリ(パッケージ)の最新化
cd my-app
bun upgrade
bun update
Drizzle ORM(SQLite)のインストール
Drizzle ORMの公式サイトに記載の通り
bun add drizzle-orm
bun add -D drizzle-kit
Zodのインストール
bun add zod
bun add @hono/zod-validator
空のディレクトリとファイルの作成
mkdir tests src/db
mkdir src/routes
mkdir src/db/schema
touch Dockerfile
touch src/app.ts
touch src/db/index.ts
touch src/migrate.ts
さいごに
社内で使うシステムの開発をBun + Hono + SQLite + Drizzleで始めました。
非エンジニアである自分でも、ある程度のものづくりができるようになりそうです。
2024年8月に始めた活動の最初の備忘録として残しておきます。