# AI支援型テンプレート管理プラットフォーム
## プロジェクト概要
非エンジニア(AIノービス)のビジネスユーザーが、生成AIを活用して業務テンプレートを管理・活用できるフルスタック Web プラットフォームの開発に参画。
主要機能の一つとして、複数の生成 AI プロバイダー(OpenAI / Google / Perplexity / Anthropic)のモデル API と連携し、ユーザーが任意のモデルを選んでチャットを送信できる機能を搭載。
- 期間: 2025/12 〜 現在
- 役割: 基本設計・詳細設計・実装・テストを担当(コードレビューも随時実施)
- チーム構成: 5 名(PM 1 名、インフラ担当 1 名、実装者 3 名(自分含む))
---
## 技術スタック
| 領域 | 技術 |
|------|------|
| フロントエンド | Next.js 15 (App Router), TypeScript, TanStack Query, Zod |
| バックエンド | Hono.js, NextAuth.js |
| データベース | PostgreSQL, Drizzle ORM |
| キャッシュ | Redis |
| 生成AI | OpenAI (GPT 系) / Google (Gemini 系) / Perplexity / Anthropic (Claude 系) の各モデル API |
| その他 | Mermaid(設計ドキュメント), Notion(スペック管理) |
---
## 担当業務
プロジェクト参画以降、フロントエンド・バックエンドを横断的に担当。新規機能開発では DB 設計から実装まで一気通貫で対応。
### バックエンド(Hono.js + Drizzle ORM)
- API エンドポイントの実装
- ビジネスロジックの実装
- DB アクセス層の実装
- Zod によるリクエスト/レスポンスのバリデーション
### フロントエンド(Next.js 15 App Router)
- ページ・UI コンポーネントの実装
- API 連携(TanStack Query)
- フォームバリデーション
### DB スキーマ設計
- テーブル構造・カラム・制約・インデックスの設計
- Drizzle Kit によるマイグレーション管理
- 設計判断の根拠を `docs/decisions.md` に記録
### 生成 AI 機能統合
- 生成 AI サービスとの連携実装
- プロンプトエンジニアリング
- レスポンス処理・エラーハンドリング・フォールバック設計
---
## 担当機能(抜粋)
### Wordpress API 連携
- Wordpress API との連携実装を担当
- 連携の目的: Worpressで管理している既存システムのAI記事を新規開発しているwebAppに反映させ、AIに触れる機会を創出する]
- [実装時に検討した点 認証方式、エラーハンドリング ]
### NG ワード機能の API 開発
- バックエンドとフロントエンドを繋ぐ API を設計・実装
- [NG ワード機能「chatに入力したワードのNG ワード検出」
### パーソナライズ機能
- クライアント企業が自社のユースケースに合わせてパーソナライズ項目(業種・職種・成功した事例など)を自由に定義でき、エンドユーザーがプロフィールとして設定する仕組み。ユーザーがチャット利用時に毎回コンテキストを入力する必要がなく、設定済みのパーソナライズ情報をLLMが自動的に参照することで、ユーザーごとに最適化された応答を提供する。
### テンプレートパーソナライズ機能
- エンドユーザーのプロファイル属性に応じて、テンプレート一覧の並び順を最適化する機能。LLM を用いてユーザー属性からタグ推薦を行い、その結果をもとにテンプレートをリランキングする。
#### DB 設計
- ユーザーとタグを紐づける中間テーブル `end_user_selected_tags` を設計
- データ整合性を担保する制約を導入:
- CHECK 制約でタグ種別ごとの入力値を制限
- 部分ユニークインデックスで「同一ユーザー × 同一タグ種別 × アクティブ」の重複を防止
- 親テーブル削除時の CASCADE 削除で孤立レコードを防止
#### API 設計・実装
- タグレコメンド API:ユーザー属性を入力に LLM でタグ候補を生成し返却
- タグ選択保存 API:ユーザーが選択したタグを中間テーブルに永続化
- RESTful なパス設計(複数形、リソース指向)、`c.json()` のみで冗長なラッパーなし
- Drizzle のクエリパターンをプロジェクト内で統一
---
## 開発プロセス
プロジェクトにおける機能開発の標準的な進め方。
### 1. 要件定義フェーズ
- PM から新機能・改善要件を受領し、要件ドキュメントをレビュー
- エンジニア視点で技術的実現可能性・既存システムとの整合性を評価
- スコープを明確化し、工数を見積もる
### 2. 設計フェーズ
- **DB 設計**(新規テーブルが必要な場合):要件分析 → スキーマ設計(型・制約・インデックス)→ Drizzle スキーマ実装 → Drizzle Kit でマイグレーション作成
- **API 設計**:RESTful なエンドポイント定義、Zod によるリクエスト/レスポンス型定義、エラーハンドリング方針の決定
- **フロントエンド設計**:コンポーネント構成、状態管理、ルーティング、UI/UX フロー
- 設計内容は Mermaid で図化し `docs/features/` 配下に Git 管理
### 3. 実装フェーズ
- **バックエンド(Hono.js)**:API エンドポイント、ビジネスロジック、DB アクセス層の実装
- **フロントエンド(Next.js)**:ページ・UI コンポーネント、API 連携、フォームバリデーション
- **AI 機能統合**:生成 AI サービスとの連携、プロンプトエンジニアリング、レスポンス処理、エラーハンドリング・フォールバック
### 4. リリースフェーズ
- ステージング環境でのテスト
- リリース後のモニタリングとフィードバック収集
---
## 技術的な取り組み
### プロジェクト固有の AI 運用ルール整備
- `CLAUDE.md` を「汎用的なベストプラクティス」ではなく「このプロジェクトでなぜこの判断をするか」の文書に整理
- ルール自体は `rules/*.md に分離し、意思決定の根拠を追跡可能にする。仕様はdocs/にまとめる。
```
### 設計プロセス
- 実装前に Mermaid で 業務フロー図を機能ごとに作成
- AIシステムでブラックボックス化しているシステムでもあり、いつどんなときにデータが返り、いつどこにデータを保有するか解像度を上げるために作成
- DB設計
---
## 個人的に取り組んでいる学習
業務外で以下を継続:
- **AWS / インフラ周り**: EC2, ALB, RDS, S3, ECS, APIゲートウェイ
- **システム設計**: DB周りの設計(リーダーレス、マルチリーダー)、メモリーキャッシュ、Redisを活用する設計、レート制限、モジューラモノリス、モノリス、マイクロサービス
---