# 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) --- ## 前提条件 開始前に、以下がインストールされていることを確認してください: | ツール | 最低バージョン | 確認方法 | インストール | |------|----------------|----------|--------------| | **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 ``` --- ## クイックスタート 開発ツールに慣れていて、まず動かしたい方向け: ```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 # 開発サーバを起動 ``` ブラウザで **** を開けば OK です。 > **注意:** 利用前に AI プロバイダの設定が必要です。下の [AI プロバイダの設定](#configuring-your-ai-provider) を参照してください。 --- ## 手順どおりにセットアップ ### 1. リポジトリをクローン まずはコードを取得します: ```bash git clone https://github.com/srbhr/Resume-Matcher.git cd Resume-Matcher ``` ### 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 ``` **このターミナルは起動したまま**、フロントエンド用に別ターミナルを開きます。 ### 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 ``` ブラウザで **** を開くと、Resume Matcher のダッシュボードが表示されます。 --- ## AI プロバイダの設定 Resume Matcher は複数の AI プロバイダに対応しています。アプリ内の Settings ページ、またはバックエンドの `.env` を編集して設定できます。 ### オプション A: クラウドプロバイダ | プロバイダ | 設定 | API キー取得先 | |----------|------|----------------| | **OpenAI** | `LLM_PROVIDER=openai`
`LLM_MODEL=gpt-5-nano-2025-08-07` | [platform.openai.com](https://platform.openai.com/api-keys) | | **Anthropic** | `LLM_PROVIDER=anthropic`
`LLM_MODEL=claude-haiku-4-5-20251001` | [console.anthropic.com](https://console.anthropic.com/) | | **Google Gemini** | `LLM_PROVIDER=gemini`
`LLM_MODEL=gemini-3-flash-preview` | [aistudio.google.com](https://aistudio.google.com/app/apikey) | | **OpenRouter** | `LLM_PROVIDER=openrouter`
`LLM_MODEL=deepseek/deepseek-chat` | [openrouter.ai](https://openrouter.ai/keys) | | **DeepSeek** | `LLM_PROVIDER=deepseek`
`LLM_MODEL=deepseek-chat` | [platform.deepseek.com](https://platform.deepseek.com/) | | **OpenAI-Compatible** | `LLM_PROVIDER=openai_compatible`
`LLM_MODEL=llama-3.1-8b`
`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 ``` ### オプション 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 ``` 通常はインストール後に自動起動します。 --- ## Docker デプロイ コンテナで動かしたい場合、Resume Matcher は Docker に対応しています。 ### Docker Compose を使う(推奨) ```bash # コンテナをビルドして起動 docker-compose up -d # ログを見る docker-compose logs -f # コンテナ停止 docker-compose down ``` ### Docker の注意点 - **API キーは UI から設定**:(`.env` ではありません) - データは Docker volume に永続化されます - フロントエンド(3000)とバックエンド(8000)のポートが公開されます --- ## アプリへのアクセス 両方のサーバが起動したら、ブラウザで以下にアクセスします: | URL | 内容 | |-----|------| | **** | メインアプリ(Dashboard) | | **** | AI プロバイダ設定 | | **** | バックエンド API ルート | | **** | 対話型 API ドキュメント | | **** | バックエンドヘルスチェック | ### 初回セットアップチェックリスト 1. を開く 2. AI プロバイダを選択 3. API キーを入力(または Ollama を設定) 4. "Save Configuration" をクリック 5. "Test Connection" をクリックして確認 6. Dashboard に戻り、最初の履歴書をアップロード --- ## よく使うコマンド ### バックエンド ```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 は TinyDB(JSON ファイル保存)を使用します。データは `apps/backend/data/` にあります: ```bash # DB ファイルを見る ls apps/backend/data/ # バックアップ cp -r apps/backend/data apps/backend/data-backup # 全リセット(初期化) rm -rf apps/backend/data ``` --- ## トラブルシューティング ### バックエンドが起動しない **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` --- ## プロジェクト構成 ```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 ``` --- ## ヘルプ 困ったときは次を参照してください: - **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) をぜひ。