技術質問・検証依頼サイト - IT、AI、Azureに関する質問・検証依頼の受付
shiro Assistantは、転職後の個人的な技術支援サイトとして、元職場の同僚からの技術的な質問・検証依頼・調査依頼に対応するWebアプリケーションです。
- 技術的な質問・検証依頼・調査依頼の投稿
- 管理者による回答・サポート
- ファイル添付機能(最大1GB/ファイル)
- 手動タグ付け機能
- メール通知機能
- グループベースのアクセス制御
- Frontend/Backend: Next.js 14 (App Router)
- UI Library: Material-UI (MUI) v5 - ライトモード固定
- Database: Azure Cosmos DB
- File Storage: Azure Blob Storage
- 将来拡張: Azure OpenAI (GPT-4.1, text-embedding-3-large)
- Authentication: 独自セッション認証
- Email: Gmail SMTP
- Hosting: Azure App Service
詳細な仕様については以下のドキュメントを参照してください:
- Node.js 18.x 以上
- npm
- Azure アカウント(Cosmos DB、Blob Storage、OpenAI Service)
- リポジトリのクローン
git clone https://github.com/nomhiro/shirono-qa.git
cd shirono-qa/shirono-qa-app- 依存関係のインストール
npm install- 環境変数の設定
cp .env.example .env.local
# .env.localファイルを編集して必要な環境変数を設定- 開発サーバーの起動
npm run devブラウザで http://localhost:3000 にアクセス
# Cosmos DB
COSMOS_DB_CONNECTION_STRING=AccountEndpoint=https://your-account.documents.azure.com:443/;AccountKey=your-key
COSMOS_DB_DATABASE_NAME=ShironoQA-Dev
# Azure OpenAI
AZURE_OPENAI_ENDPOINT=https://your-instance.openai.azure.com/
AZURE_OPENAI_API_KEY=your-api-key
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4
# Azure Blob Storage
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=your-account;AccountKey=your-key
AZURE_STORAGE_CONTAINER_NAME=qa-attachments-dev
# Email (Gmail SMTP)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-gmail-app-password
# Session
SESSION_SECRET=your-super-secret-session-key-for-development
# Next.js
NEXTAUTH_URL=http://localhost:3000
NODE_ENV=development本プロジェクトはTDD(テスト駆動開発)で開発されています。
# 単体テスト実行
npm test
# テスト監視モード (TDD用)
npm run test:watch
# E2Eテスト実行
npm run test:e2e
# カバレッジレポート生成
npm run test:coverage
# Lintチェック
npm run lint
# TypeScript型チェック
npm run type-check- 目標: 80%以上
- 実装済み: 主要機能のテストケース完備
- ビルド
npm run build- Azure App Service の設定
- App Service プランの作成
- 環境変数の設定
- デプロイメント設定
- デプロイ実行
# GitHub Actions または手動デプロイ
npm start- 型安全性: TypeScript strict mode
- Linting: ESLint + Prettier
- コミット前チェック: Husky + lint-staged
- ファイル: PascalCase (コンポーネント), camelCase (その他)
- 変数・関数: camelCase
- 定数: UPPER_SNAKE_CASE
- 型・インターフェース: PascalCase
- 失敗するテストを先に書く (Red)
- テストを通す最小コードを実装 (Green)
- コードを改善・リファクタリング (Refactor)
- 認証: 独自セッション認証(6時間タイムアウト)
- パスワード: bcrypt ハッシュ化(salt rounds: 12)
- 通信: HTTPS必須
- Cookie: HttpOnly, Secure, SameSite=Strict
- ファイルアップロード: サイズ・形式制限、ウイルススキャン
- 監視: Azure Monitor
- ログ: JSON構造化ログ
- バックアップ: Cosmos DB自動バックアップ(7日間)
- 可用性: 99%以上(月間)
- イシューの作成
- フィーチャーブランチの作成
- TDDでの実装
- テスト・Lintの実行
- プルリクエストの作成
このプロジェクトは私的利用のためのものです。
- 開発者: システム開発担当者
- Email: nomhiro1204@gmail.com
- 運用期間: 1年間(2025年6月〜2026年6月)
- ユーザー認証・セッション管理
- 投稿・回答・コメント機能
- ファイルアップロード・ダウンロード
- 検索・フィルタリング機能
- 管理者機能(ユーザー・グループ管理)
- レスポンシブUI(ライトモード固定)
- テスト駆動開発による品質保証
- メール通知機能
- 詳細な分析・レポート機能
- データエクスポート機能
- AI機能(将来検討: 自動タグ付け、類似投稿検索)