nino

Command Palette

Search for a command to run...

メニュー

Webアプリの環境構築

 

8分 47秒

概要

以下の技術スタックで環境構築していきます。

  • Next.js / フレームワーク
  • shadcn/ui / UIキット
  • Turso / データベース
  • Drizzle / ORM
  • Better Auth / 認証ライブラリ
  • Turborepo / モノリポ
  • Sentry / 監視ツール
  • Vitest / テストライブラリ
  • Playwright / E2Eテストライブラリ
  • AGENTS.md / エージェントドキュメント

1. プロジェクトの初期化

1.1 リポジトリのクローンとセットアップ

Loading...

1.2 ワークスペース構成の確認

このプロジェクトはTurborepoを使用したモノレポ構成です。このドキュメント通りに進めると、最終的に以下のようになります。

Loading...

2. データベースパッケージ(db)の作成

2.1 データベースパッケージの初期化

以下の内容で packages/db/package.json を作成します:

Loading...

2.2 必要な依存関係のインストール

Loading...

2.3 Tursoのセットアップ

Loading...

2.4 データベースパッケージの環境変数設定

packages/db/.envファイルを作成:

Loading...

2.5 Drizzle設定ファイルの作成

packages/db/drizzle.config.tsを作成:

Loading...

2.6 データベース接続の設定

packages/db/index.tsを作成:

Loading...

2.7 型とZodスキーマの生成

Drizzleスキーマから型とZodスキーマを作成し、各アプリケーションで使用できるようにします:

Loading...
Loading...

3. 認証パッケージ(auth)の作成

3.1 認証パッケージの初期化

以下の内容で packages/auth/package.json を作成します:

Loading...

3.2 必要な依存関係のインストール

Loading...

3.3 認証パッケージの環境変数設定

packages/auth/.envファイルを作成:

Loading...

3.4 認証スキーマの作成

コマンドを実行して認証スキーマを作成します:

Loading...

packages/db/schemas/auth.tsが作成されたら、マイグレーションを実行します:

Loading...

3.5 データベース接続の更新

packages/db/index.tsを更新して認証スキーマを含めます:

Loading...

3.6 マイグレーションの実行

Loading...

3.7 Better Authの設定

packages/auth/index.ts で認証設定を作成:

Loading...

4. Next.jsアプリケーションの設定

4.1 アプリケーションの起動

Loading...

5. 監視・ログ設定(Sentry)

5.1 Sentryの設定

公式ドキュメントのコマンドでSentryを設定してください。

Loading...

6. アプリケーション(web)の環境変数設定

6.1 Webアプリケーションの環境変数設定

apps/web/.env.localファイルを作成:

Loading...

BETTER_AUTH_SECRET は以下のコマンドで生成できます。

Loading...

6.2 本番環境の環境変数設定

本番環境では以下の環境変数を設定してください:

  • TURSO_DATABASE_URL
  • TURSO_AUTH_TOKEN
  • BETTER_AUTH_SECRET
  • SENTRY_AUTH_TOKEN

7. 開発ワークフロー

7.1 基本的なコマンド

Loading...

_

7.2 TurborepoとStudioタスクの設定

このプロジェクトでは、Turborepoを使用してモノレポ全体のタスクを効率的に管理しています。Drizzle Studioを起動するためのタスクや、依存する環境変数を設定します。

turbo.jsonの設定

Loading...

次に、ルートのpackage.jsonに以下を追加します。

Loading...

ルートでpnpm devまたはturbo dev studioを実行すると:

  1. turbo dev: 全てのパッケージでdevタスクが並行実行される
  2. turbo studio: 全てのパッケージでstudioタスクが並行実行される

具体的には:

  • webアプリケーション: Next.js開発サーバーが起動(通常localhost:3000)
  • dbパッケージ: Turso ローカルデータベースが起動
  • dbパッケージ: Drizzle Studioが起動

この構成により、開発者は1つのコマンドでWebアプリケーションとデータベース管理ツールの両方を同時に起動でき、効率的な開発環境を構築できます。

Drizzle Studioは、データベーススキーマの可視化、データの確認・編集、SQLクエリの実行などができるWebベースの管理ツールです。

それぞれターミナルに表示されるURLをブラウザで開くことでアクセスできます。

7.3 データベース操作

Loading...

7.4 実装フローに従った開発手順

たとえばペットに関する機能を開発する場合、以下の順序で開発を進めてください:

  1. Drizzleスキーマの作成 (/packages/db/schemas/)

    Loading...
  2. マイグレーションの実行 (/packages/db)

    Loading...
  3. 型の作成

    Loading...
  4. Zodスキーマの作成

    Loading...
  5. 各アプリケーションで使用

    Loading...

7.5 環境変数を追加する場合

いずれかのアプリ(/apps/web など)に環境変数を追加する場合、必ず turbo.json に定義を追加してください。

Loading...

8. トラブルシューティング

8.1 よくある問題

  1. パッケージのバージョンを揃える方法

    以下のコマンドで、すべてのアプリ(パッケージ)でバージョンを揃えることができます。バージョンの組み合わせは繊細なので、Next.js や React、TypeScript など基盤となる技術を段階的に揃えていくことをお勧めします。(全部ライブラリをまとめてアップデート&揃える、とするとエラーが発生する可能性があります。)

    Loading...

9. 最終Tips

9.1 .env.exampleファイルの作成

各アプリ、パッケージに.env.exampleファイルを作成して、必要な環境変数のテンプレートを提供することをお勧めします:

Loading...
Loading...
Loading...

10. 追加リソース


このガイドに従って環境を構築することで、このリポジトリの構成を再現できます。問題が発生した場合は、各ツールの公式ドキュメントを参照してください。

Discord で質問する
何か気になったこと、分からないことがあれば気軽に質問してください!