<CodeLearn/>
実践プロジェクト レッスン5

オリジナルアプリ企画

自分だけのWebアプリを設計・実装しよう

ステップ1: アイデアの発想

まずは作りたいアプリのアイデアを考えましょう。自分が日常で「こんなアプリがあったら便利」と思うものが 最も良いテーマです。以下のカテゴリを参考にしてください。

生産性ツール

  • 習慣トラッカー(毎日の達成を記録)
  • ポモドーロタイマー(集中力管理)
  • メモ・ナレッジベース(Notion風)
  • 家計簿アプリ

コミュニティ

  • レシピ共有サイト
  • 読書記録・レビューアプリ
  • 質問掲示板(Stack Overflow風)
  • イベント管理・募集アプリ

ステップ2: 要件定義

アイデアが決まったら、具体的な要件を整理します。 最初から完璧を目指さず、MVP(Minimum Viable Product)として 最小限の機能から始めましょう。

## 要件定義テンプレート(例: 習慣トラッカー)

### アプリ名: HabitFlow

### ターゲットユーザー
- 毎日の習慣を身につけたい社会人
- プログラミング学習の進捗を管理したい人

### MVP(最低限の機能)
- [ ] ユーザー登録・ログイン
- [ ] 習慣の登録(名前、頻度、カテゴリ)
- [ ] 日ごとの達成チェック
- [ ] 連続達成日数の表示
- [ ] 週間/月間のカレンダービュー

### 将来的に追加したい機能
- 統計グラフ(達成率の推移)
- リマインダー通知
- 友達との共有・ランキング
- データのエクスポート

### 技術スタック
- フロントエンド: Next.js + Tailwind CSS
- バックエンド: Next.js API Routes / Server Actions
- データベース: PostgreSQL + Prisma
- 認証: NextAuth.js
- デプロイ: Vercel

ステップ3: ワイヤーフレーム

コードを書く前に、画面の構成を簡単なスケッチで整理しましょう。 紙やFigma、Excalidraw などのツールが使えます。

画面構成(ページ一覧):

1. / (ランディングページ)
   - アプリの説明
   - 「始める」ボタン → ログインへ

2. /login (ログインページ)
   - メール + パスワード
   - Googleログインボタン

3. /dashboard (ダッシュボード)
   - 今日の習慣一覧 + チェックボックス
   - 連続達成日数
   - 週間カレンダー

4. /habits/new (習慣の追加)
   - 名前、頻度(毎日/週n回)、カテゴリ

5. /habits/[id] (習慣の詳細)
   - 月間カレンダー
   - 達成率
   - 編集・削除ボタン

6. /settings (設定)
   - プロフィール編集
   - アカウント削除

ステップ4: データベース設計

// prisma/schema.prisma(習慣トラッカーの例)

model User {
  id        String   @id @default(cuid())
  name      String
  email     String   @unique
  password  String
  habits    Habit[]
  createdAt DateTime @default(now())
}

model Habit {
  id        String    @id @default(cuid())
  name      String
  category  String    @default("general")
  frequency String    @default("daily") // daily, weekly
  user      User      @relation(fields: [userId], references: [id])
  userId    String
  records   Record[]
  createdAt DateTime  @default(now())
}

model Record {
  id        String   @id @default(cuid())
  habit     Habit    @relation(fields: [habitId], references: [id])
  habitId   String
  date      DateTime
  completed Boolean  @default(true)

  @@unique([habitId, date])
}

// 設計のポイント:
// - Record テーブルで「いつ達成したか」を記録
// - habitId + date の複合ユニーク制約で重複を防止
// - frequency で「毎日」「週N回」など柔軟に対応

ステップ5: 開発の進め方

1

プロジェクトのセットアップ

Next.js プロジェクト作成、Prisma 初期化、Git リポジトリ作成

2

データベースとAPIの構築

スキーマ定義、マイグレーション、基本的なCRUD操作

3

UIの実装

ページの作成、コンポーネント分割、スタイリング

4

認証の追加

NextAuth.js でログイン機能を実装

5

テストとデプロイ

動作確認、バグ修正、Vercel にデプロイして公開

まとめ

  • 自分が使いたいアプリをテーマに選ぶとモチベーションが続く
  • MVP(最低限の機能)を定義し、小さく始めて段階的に拡張する
  • ワイヤーフレームで画面構成を整理してからコードを書く
  • データベース設計はリレーションを意識して正規化する
  • Git でバージョン管理し、こまめにコミットする習慣をつける
  • 完成したら GitHub で公開し、ポートフォリオに加えよう