Files
srbhr--resume-matcher/SETUP.ja.md
T
wehub-resource-sync 5bdf4cc89a
Publish Docker Image / publish (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:39:36 +08:00

506 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Resume Matcher セットアップガイド
[English](SETUP.md) | [Español](SETUP.es.md) | [简体中文](SETUP.zh-CN.md) | [**日本語**](SETUP.ja.md)
ようこそ!このガイドでは、ローカル環境で Resume Matcher をセットアップする手順を説明します。開発に参加したい方も、手元でアプリを動かしたい方も、この手順で始められます。
---
## 目次
- [前提条件](#prerequisites)
- [クイックスタート](#quick-start)
- [手順どおりにセットアップ](#step-by-step-setup)
- [1. リポジトリをクローン](#1-clone-the-repository)
- [2. バックエンドのセットアップ](#2-backend-setup)
- [3. フロントエンドのセットアップ](#3-frontend-setup)
- [AI プロバイダの設定](#configuring-your-ai-provider)
- [オプション A: クラウドプロバイダ](#option-a-cloud-providers)
- [オプション B: Ollama によるローカル AI(無料)](#option-b-local-ai-with-ollama-free)
- [Docker デプロイ](#docker-deployment)
- [アプリへのアクセス](#accessing-the-application)
- [よく使うコマンド](#common-commands-reference)
- [トラブルシューティング](#troubleshooting)
- [プロジェクト構成](#project-structure-overview)
- [ヘルプ](#getting-help)
---
<a id="prerequisites"></a>
## 前提条件
開始前に、以下がインストールされていることを確認してください:
| ツール | 最低バージョン | 確認方法 | インストール |
|------|----------------|----------|--------------|
| **Python** | 3.13+ | `python --version` | [python.org](https://python.org) |
| **Node.js** | 22+ | `node --version` | [nodejs.org](https://nodejs.org) |
| **npm** | 10+ | `npm --version` | Node.js に同梱 |
| **uv** | 最新 | `uv --version` | [astral.sh/uv](https://docs.astral.sh/uv/getting-started/installation/) |
| **Git** | 任意 | `git --version` | [git-scm.com](https://git-scm.com) |
### uv のインストール(Python パッケージマネージャ)
Resume Matcher は Python 依存関係の管理に `uv` を使用します。インストール方法:
```bash
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# または pip
pip install uv
```
---
<a id="quick-start"></a>
## クイックスタート
開発ツールに慣れていて、まず動かしたい方向け:
```bash
# 1. リポジトリをクローン
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher
# 2. バックエンド起動(ターミナル 1)
cd apps/backend
cp .env.example .env # テンプレートから設定を作成
uv sync # Python 依存関係をインストール
uv run app
# 3. フロントエンド起動(ターミナル 2)
cd apps/frontend
npm install # Node.js 依存関係をインストール
npm run dev # 開発サーバを起動
```
ブラウザで **<http://localhost:3000>** を開けば OK です。
> **注意:** 利用前に AI プロバイダの設定が必要です。下の [AI プロバイダの設定](#configuring-your-ai-provider) を参照してください。
---
<a id="step-by-step-setup"></a>
## 手順どおりにセットアップ
<a id="1-clone-the-repository"></a>
### 1. リポジトリをクローン
まずはコードを取得します:
```bash
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher
```
<a id="2-backend-setup"></a>
### 2. バックエンドのセットアップ
バックエンドは Python(FastAPI)で、AI 処理、履歴書の解析、データ保存を担当します。
#### バックエンドディレクトリへ移動
```bash
cd apps/backend
```
#### 環境ファイルを作成
```bash
cp .env.example .env
```
#### `.env` を好みのエディタで編集
```bash
# macOS/Linux
nano .env
# 好みのエディタでも OK
code .env # VS Code
```
最重要設定は AI プロバイダです。OpenAI の最小例:
```env
LLM_PROVIDER=openai
LLM_MODEL=gpt-5-nano-2025-08-07
LLM_API_KEY=sk-your-api-key-here
# ローカル開発では既定のままで OK
HOST=0.0.0.0
PORT=8000
FRONTEND_BASE_URL=http://localhost:3000
CORS_ORIGINS=["http://localhost:3000", "http://127.0.0.1:3000"]
```
#### Python 依存関係をインストール
```bash
uv sync
```
仮想環境を作成し、必要なパッケージをインストールします。
#### バックエンドサーバを起動
```bash
RELOAD=true uv run app
```
次のような出力が表示されます:
```
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process
```
**このターミナルは起動したまま**、フロントエンド用に別ターミナルを開きます。
<a id="3-frontend-setup"></a>
### 3. フロントエンドのセットアップ
フロントエンドは Next.js で、UI を提供します。
#### フロントエンドディレクトリへ移動
```bash
cd apps/frontend
```
#### (任意)フロントエンドの環境ファイルを作成
バックエンドを別ポートで動かす場合のみ必要です:
```bash
cp .env.sample .env.local
```
#### Node.js 依存関係をインストール
```bash
npm install
```
#### 開発サーバを起動
```bash
npm run dev
```
次のように表示されます:
```
▲ Next.js 16.x.x (Turbopack)
- Local: http://localhost:3000
```
ブラウザで **<http://localhost:3000>** を開くと、Resume Matcher のダッシュボードが表示されます。
---
<a id="configuring-your-ai-provider"></a>
## AI プロバイダの設定
Resume Matcher は複数の AI プロバイダに対応しています。アプリ内の Settings ページ、またはバックエンドの `.env` を編集して設定できます。
<a id="option-a-cloud-providers"></a>
### オプション A: クラウドプロバイダ
| プロバイダ | 設定 | API キー取得先 |
|----------|------|----------------|
| **OpenAI** | `LLM_PROVIDER=openai`<br>`LLM_MODEL=gpt-5-nano-2025-08-07` | [platform.openai.com](https://platform.openai.com/api-keys) |
| **Anthropic** | `LLM_PROVIDER=anthropic`<br>`LLM_MODEL=claude-haiku-4-5-20251001` | [console.anthropic.com](https://console.anthropic.com/) |
| **Google Gemini** | `LLM_PROVIDER=gemini`<br>`LLM_MODEL=gemini-3-flash-preview` | [aistudio.google.com](https://aistudio.google.com/app/apikey) |
| **OpenRouter** | `LLM_PROVIDER=openrouter`<br>`LLM_MODEL=deepseek/deepseek-chat` | [openrouter.ai](https://openrouter.ai/keys) |
| **DeepSeek** | `LLM_PROVIDER=deepseek`<br>`LLM_MODEL=deepseek-chat` | [platform.deepseek.com](https://platform.deepseek.com/) |
| **OpenAI-Compatible** | `LLM_PROVIDER=openai_compatible`<br>`LLM_MODEL=llama-3.1-8b`<br>`LLM_API_BASE=http://localhost:8080/v1` | — (ローカル) |
**OpenAI-Compatible** は OpenAI Chat Completions API を公開する任意のローカルサーバー(llama.cpp、vLLM、LM Studio など)を対象とします。API キーは任意です。
Anthropic の `.env` 例:
```env
LLM_PROVIDER=anthropic
LLM_MODEL=claude-haiku-4-5-20251001
LLM_API_KEY=sk-ant-your-key-here
```
<a id="option-b-local-ai-with-ollama-free"></a>
### オプション B: Ollama によるローカル AI(無料)
API コストなしでローカル実行したい場合は Ollama を使えます。
#### ステップ 1: Ollama をインストール
[ollama.com](https://ollama.com) からダウンロードしてインストールします。
#### ステップ 2: モデルを取得
```bash
ollama pull gemma3:4b
```
他の候補:`mistral``codellama``neural-chat`
#### ステップ 3: `.env` を設定
```env
LLM_PROVIDER=ollama
LLM_MODEL=gemma3:4b
LLM_API_BASE=http://localhost:11434
# Ollama では LLM_API_KEY は不要です
```
#### ステップ 4: Ollama が起動していることを確認
```bash
ollama serve
```
通常はインストール後に自動起動します。
---
<a id="docker-deployment"></a>
## Docker デプロイ
コンテナで動かしたい場合、Resume Matcher は Docker に対応しています。
### Docker Compose を使う(推奨)
```bash
# コンテナをビルドして起動
docker-compose up -d
# ログを見る
docker-compose logs -f
# コンテナ停止
docker-compose down
```
### Docker の注意点
- **API キーは UI から設定**<http://localhost:3000/settings>`.env` ではありません)
- データは Docker volume に永続化されます
- フロントエンド(3000)とバックエンド(8000)のポートが公開されます
<!-- 注:Docker ドキュメントは準備中です。現在は docker-compose.yml を参照してください -->
---
<a id="accessing-the-application"></a>
## アプリへのアクセス
両方のサーバが起動したら、ブラウザで以下にアクセスします:
| URL | 内容 |
|-----|------|
| **<http://localhost:3000>** | メインアプリ(Dashboard |
| **<http://localhost:3000/settings>** | AI プロバイダ設定 |
| **<http://localhost:8000>** | バックエンド API ルート |
| **<http://localhost:8000/docs>** | 対話型 API ドキュメント |
| **<http://localhost:8000/health>** | バックエンドヘルスチェック |
### 初回セットアップチェックリスト
1. <http://localhost:3000/settings> を開く
2. AI プロバイダを選択
3. API キーを入力(または Ollama を設定)
4. "Save Configuration" をクリック
5. "Test Connection" をクリックして確認
6. Dashboard に戻り、最初の履歴書をアップロード
---
<a id="common-commands-reference"></a>
## よく使うコマンド
### バックエンド
```bash
cd apps/backend
# 開発サーバ(自動リロード)
RELOAD=true uv run app
# 本番サーバ
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000
# 依存関係のインストール
uv sync
# 開発用依存関係も含める(テスト用)
uv sync --group dev
# テスト実行
uv run pytest
# DB の状態確認(JSON ファイル)
ls -la data/
```
### フロントエンド
```bash
cd apps/frontend
# 開発サーバ(Turbopack
npm run dev
# 本番ビルド
npm run build
# 本番起動
npm run start
# Lint
npm run lint
# Prettier で整形
npm run format
# 別ポートで起動
npm run dev -- -p 3001
```
### データベース管理
Resume Matcher は TinyDBJSON ファイル保存)を使用します。データは `apps/backend/data/` にあります:
```bash
# DB ファイルを見る
ls apps/backend/data/
# バックアップ
cp -r apps/backend/data apps/backend/data-backup
# 全リセット(初期化)
rm -rf apps/backend/data
```
---
<a id="troubleshooting"></a>
## トラブルシューティング
### バックエンドが起動しない
**Error:** `ModuleNotFoundError`
`uv` で起動していることを確認してください:
```bash
uv run uvicorn app.main:app --reload
```
**Error:** `LLM_API_KEY not configured`
`.env` に選択したプロバイダ用の API キーが設定されているか確認してください。
### フロントエンドが起動しない
**Error:** ページ読み込み時に `ECONNREFUSED`
バックエンドが起動していません。先に起動してください:
```bash
cd apps/backend && uv run uvicorn app.main:app --reload
```
**Error:** build または TypeScript エラー
Next.js のキャッシュを削除します:
```bash
rm -rf apps/frontend/.next
npm run dev
```
### PDF のダウンロードに失敗する
**Error:** `Cannot connect to frontend for PDF generation`
バックエンドからフロントエンドへ接続できません。以下を確認してください:
1. フロントエンドが起動している
2. `.env``FRONTEND_BASE_URL` がフロントエンド URL と一致している
3. `CORS_ORIGINS` にフロントエンド URL が含まれている
フロントエンドが 3001 の場合:
```env
FRONTEND_BASE_URL=http://localhost:3001
CORS_ORIGINS=["http://localhost:3001", "http://127.0.0.1:3001"]
```
### Ollama の接続に失敗する
**Error:** `Connection refused to localhost:11434`
1. Ollama の稼働確認:`ollama list`
2. 必要なら起動:`ollama serve`
3. モデルが取得済みか確認:`ollama pull gemma3:4b`
---
<a id="project-structure-overview"></a>
## プロジェクト構成
```text
Resume-Matcher/
├─ apps/
│ ├─ backend/ # Python FastAPI backend
│ │ ├─ app/
│ │ │ ├─ main.py # Application entry point
│ │ │ ├─ config.py # Environment configuration
│ │ │ ├─ database.py # TinyDB wrapper
│ │ │ ├─ llm.py # AI provider integration
│ │ │ ├─ routers/ # API endpoints
│ │ │ ├─ services/ # Business logic
│ │ │ └─ schemas/ # Data models
│ │ ├─ prompts/ # LLM prompt templates
│ │ ├─ data/ # Database storage (auto-created)
│ │ ├─ .env.example # Environment template
│ │ └─ pyproject.toml # Python dependencies
│ └─ frontend/ # Next.js React frontend
│ ├─ app/ # Pages (dashboard, builder, etc.)
│ ├─ components/ # Reusable React components
│ ├─ lib/ # Utilities and API client
│ ├─ .env.sample # Environment template
│ └─ package.json # Node.js dependencies
├─ docs/ # Additional documentation
├─ docker-compose.yml # Docker configuration
├─ Dockerfile # Container build instructions
└─ README.md # Project overview
```
---
<a id="getting-help"></a>
## ヘルプ
困ったときは次を参照してください:
- **Discord:** [dsc.gg/resume-matcher](https://dsc.gg/resume-matcher) - 質問・議論に活発です
- **GitHub Issues:** [Issue を作成](https://github.com/srbhr/Resume-Matcher/issues)(バグ報告や要望)
- **ドキュメント:** 詳細は [docs/agent/](docs/agent/) を参照
### 参考ドキュメント
| ドキュメント | 内容 |
|-------------|------|
| [backend-guide.md](docs/agent/architecture/backend-guide.md) | バックエンドのアーキテクチャと API 詳細 |
| [frontend-workflow.md](docs/agent/architecture/frontend-workflow.md) | ユーザーフローとコンポーネント構成 |
| [swiss-design-system/](docs/portable/swiss-design-system/README.md) | UI デザインシステム(Swiss International Style)— ポータブルパック |
---
楽しい履歴書づくりを!Resume Matcher が役立ったら、[リポジトリに Star](https://github.com/srbhr/Resume-Matcher) と [Discord 参加](https://dsc.gg/resume-matcher) をぜひ。