単語のベクトル演算を用いた言葉パズルゲーム Coto2-Ba のバックエンド API です。
FastAPI + gensim で構築され、Wikipedia 学習済み word2vec モデル(WikiEntVec)を利用して単語の混合・近傍検索・ヒント生成を行います。
| カテゴリ | ツール |
|---|---|
| 言語 | Python 3.11+ |
| Web フレームワーク | FastAPI |
| ベクトル演算 | gensim (KeyedVectors) |
| 単語説明 | Wikipedia API |
| パッケージ管理 | uv |
| リンター | Ruff |
| タスクランナー | taskipy |
| デプロイ | Render / Docker |
.
├── pyproject.toml # プロジェクト設定・依存関係
├── render.yaml # Render デプロイ設定
├── Dockerfile # Docker イメージ定義
├── docker-compose.yml # オンプレミス Docker Compose 構成
├── scripts/
│ ├── download_model.sh # モデル自動ダウンロードスクリプト
│ └── entrypoint.sh # コンテナ起動エントリポイント
└── app/
├── main.py # FastAPI アプリケーション本体
├── dependencies.py # 共通ミドルウェア(認証等の雛形)
├── models/ # word2vec モデルファイル置き場
│ └── jawiki.word_vectors.200d.txt
├── routers/
│ └── vector.py # /vector エンドポイント定義
├── schemas/
│ └── vector.py # リクエスト / レスポンスの Pydantic モデル
└── services/
└── vector_engine.py # ベクトル演算のコアロジック
git clone https://github.com/nu-chotech/coto2-ba-backend.git
cd coto2-ba-backenduv を使用します。
uv syncWikiEntVec の学習済みモデル(200 次元、圧縮時約 588 MB)をダウンロードし、解凍します。
cd app/models
# ダウンロード
wget https://github.com/singletongue/WikiEntVec/releases/download/20190520/jawiki.word_vectors.200d.txt.bz2
# 解凍(解凍後は jawiki.word_vectors.200d.txt になります)
bzip2 -d jawiki.word_vectors.200d.txt.bz2
cd ../..uv run task devサーバーが起動したら http://localhost:8000/docs で Swagger UI を確認できます。
| コマンド | 説明 |
|---|---|
uv run task dev |
開発サーバーを起動(ホットリロード有効) |
uv run task start |
本番用サーバーを起動 |
uv run task lint |
Ruff によるリントチェック |
死活確認用。Render のヘルスチェックにも使用されます。
Vector 機能の死活確認。
ゲーム開始時に最初のワードをランダムで返します。
リクエスト
{
"goal_word": "100億"
}レスポンス
{
"start_word": "宇宙",
"rank": 12345,
"description": "宇宙とは、…"
}現在のワードとユーザー入力ワードをベクトル混合し、結果ワード・ランク・ヒントを返します。
リクエスト
{
"goal_word": "100億",
"current_word": "宇宙",
"input_word": "投資",
"mix_ratio": 0.5
}レスポンス
{
"new_word": "資産",
"rank": 5678,
"hint_words": ["経済", "銀行", "金融", "市場", "企業", "資本"],
"description": "資産とは、…"
}本番環境は Render にデプロイされています。設定は render.yaml を参照してください。
Docker Compose を使ってオンプレミス環境にデプロイできます。 初回起動時に WikiEntVec の学習済みモデル(約 588 MB、解凍後約 1.6 GB)を自動ダウンロードします。
- Docker Engine 20.10+
- Docker Compose v2+
- メモリ 4GB 以上
# ビルド & 起動(初回はモデル DL に数分かかります)
docker compose up -d --build
# ログを確認
docker compose logs -fダウンロード済みのモデルは名前付きボリュームに永続化されるため、2回目以降はダウンロードをスキップします。
# 停止
docker compose down
# 停止 & モデルデータも削除
docker compose down -v
# 再ビルド(コード変更後)
docker compose up -d --build
# ヘルスチェック
curl http://localhost:8000/本リポジトリのライセンスは未定です。