実践プロジェクト レッスン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 で公開し、ポートフォリオに加えよう