# チュートリアル: ミニブログを作る

このチュートリアルシリーズでは、空のディレクトリから、小さいながらも本物のブログアプリケーションを作り上げます。スキーマ、モデル、バリデーター、コントローラー、ルート、React ページ — と 1 レイヤーずつ積み上げていくので、完走する頃には Guren アプリの各パーツがどう噛み合うのかを理解できているはずです。

途中で見慣れない用語が出てきたら [用語集](../guides/glossary.md) を参照してください。

## 作るもの

訪問者が次のことをできるミニブログです。

- ページネーション付きの投稿一覧を眺め、各投稿を読む
- ユーザーアカウントでサインインする
- 投稿を書く（サインイン済みユーザーのみ）。各投稿には著者が表示される
- 投稿にコメントを残す

## シリーズ構成

各パートは前のパートの続きから始まる積み上げ式です。順番どおりに進めてください。

1. **[ブログ投稿アプリを作る](./create-blog-post-app.md)** — 新規アプリを雛形生成し、投稿の CRUD を手作りします: `posts` テーブル、`Post` モデル、Zod バリデーション、コントローラー、ルート、3 つの React ページ。**最終成果:** フォームから投稿を作成し、一覧に表示されるところまで。
2. **[認証を追加する](./authentication.md)** — コマンド 1 つで認証の雛形をインストールし、デモユーザーでサインインし、投稿作成をログイン必須にして、すべての投稿に著者を紐づけます。**最終成果:** サインイン済みユーザーだけが投稿でき、各投稿に書いた人が表示されるところまで。
3. **[リレーションシップ: コメント](./relationships.md)** — 投稿とユーザーの両方に関連する `comments` テーブルを追加し、`hasMany` / `belongsTo` のリレーションシップを宣言して、投稿ページにコメントフォームを作ります。**最終成果:** サインイン済みユーザーがどの投稿にもコメントでき、コメントに著者名が表示されるところまで。

## 前提条件

- **[Bun](https://bun.sh) 1.1 以降** — 必須なのはこれだけです。
- 以上です。雛形生成のデフォルトは **SQLite** なので設定は一切不要 — Docker もデータベースサーバーも要りません。（雛形生成時に PostgreSQL や MySQL も選べますが、このコースではデフォルトの SQLite のまま進めます。）

各パートの所要時間はおよそ 15〜20 分です。

> [!TIP]
> このシリーズは機能を作ることに集中しています。環境セットアップ、レンダリングモード、本番ビルドまで含めた幅広いツアーは [はじめる](../guides/getting-started.md) と [ファーストステップ](../guides/first-steps.md) を参照してください。

準備はいいですか？ [Part 1: ブログ投稿アプリを作る](./create-blog-post-app.md) から始めましょう。
