File size: 7,458 Bytes
e6c56e8
 
 
 
 
 
 
 
446476d
 
 
1489413
 
 
 
 
 
 
 
 
 
 
 
7eda24d
1489413
446476d
 
 
df16d3c
446476d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
df16d3c
446476d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7eda24d
446476d
 
7eda24d
446476d
269307e
 
 
 
7eda24d
269307e
 
 
7eda24d
 
 
269307e
 
 
 
 
 
 
9dfdcd5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
---
title: Chibafes Website API
emoji: 🚀
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
pinned: false
---

# 千葉大祭団体企画情報の提供&検索システム
## 目次
* [APIの仕様](#apiの仕様)
* [ローカル作業の準備](#ローカル作業の準備)
    * [1. リポジトリをクローン](#1-リポジトリをクローン)
    * [2. ローカルで`.env`ファイルを作成](#2-ローカルで-env-ファイルを作成)
    * [3. 適切なバージョンのPythonを入手する](#3-適切なバージョンのpythonを入手する)
    * [4. Pythonの仮想環境を作成・有効化](#4-pythonの仮想環境を作成有効化)
    * [5. ライブラリをインストール](#5-ライブラリをインストール)
* [開発用サーバーの起動](#開発用サーバーの起動)
* [仕組み・企画データ更新](#仕組み・企画データ更新)

## APIの仕様
[`docs/システムガイド.md`](./docs/システムガイド.md) のセクション7「APIの使い方」を参照してください。

## ローカル作業の準備
### 1. リポジトリをクローン
```bash
git clone https://github.com/chibafes-dev/circle-search-26-api.git
```
> クローンのためには `Read` 以上のリポジトリ権限が必要です。また、作業をしてプッシュをするには `Write` 以上のリポジトリ権限が必要です。

---

### 2. ローカルで `.env` ファイルを作成

以下の`...`部分を適切な値に変更する。(なんらかの方法で引き継いでもらう。)
```sh
# API側 GitHub の secrets と HF Spaces の Secrets の両方に登録
HF_TOKEN=...
# HF Spaces の secrets に登録
API_SECRET_KEY=...
HF_EMBEDDINGS_REPO_ID=...
```

> **!!! 注意 !!!**  
> .envは機密情報なので絶対にリポジトリにプッシュしないこと!!.gitignoreに含まれていることを確認してください。

---

### 3. 適切なバージョンのPythonを入手する

やり方はいくつかありますが、筆者は `pyenv` を使用しました。適切なバージョンがインストールできればなんでもいいですが、ここでは `pyenv` を紹介します。  
英語が読める人は [公式リポジトリ](https://github.com/pyenv/pyenv?tab=readme-ov-file#a-getting-pyenv) を参考にしてインストールしてください。

---

#### 英語が読めないWindowsユーザー向け(WSL2はLinux向けを確認)
<details>

残念ながら `pyenv` はWindowsに対応していないので、代わりに `pyenv-win` を使いましょう。

参考:https://github.com/pyenv-win/pyenv-win/blob/master/docs/installation.md#powershell

1. Powershellで以下のコマンドを実行
    ```powershell
    Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
    ```

    もし `UnauthorizedAccess` エラーが出たら、以下のコマンドを「管理者権限で」実行したのち、上のコマンドを再度試してください。
    ```powershell
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
    ```

2. インストールができたことを確認する

    以下のコマンドを実行:
    ```powershell
    pyenv --version
    ```
    バージョン情報が出れば成功。
</details>

#### 英語が読めないMacユーザー向け
<details>

参考:https://github.com/pyenv/pyenv/blob/master/README.md#macos

1. どうにかしてHomebrewを入れる

    やり方はググってください。

2. Homebrew経由で `pyenv` をインストール

    ```bash
    brew update
    brew install pyenv
    ```

3. シェル環境を整える

    `zsh` を使っている人向けの説明。自分が何を使っているかわからない人は `echo $SHELL` を実行。
    > 最近のMacだと `zsh` がデフォルトらしいです。敢えて `bash` とか `fish` にするような方には私の説明は不要だと思うので、[公式リポジトリ](https://github.com/pyenv/pyenv/blob/master/README.md#b-set-up-your-shell-environment-for-pyenv) を見てご自身でうまいことやってほしいです。

    以下の3つのコマンドを1行ずつ順に実行する。
    ```bash
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    echo 'eval "$(pyenv init - zsh)"' >> ~/.zshrc
    ```

4. シェルを再起動する

    ```bash
    exec "$SHELL"
    ```
</details>

#### 英語が読めないLinuxユーザー向け(WSL2含む)
<details>

参考:https://github.com/pyenv/pyenv/blob/master/README.md#linuxunix

1. 自動インストーラを使用する

    ```bash
    curl -fsSL https://pyenv.run | bash
    ```
</details>

---

#### <全OS共通> Python をインストールする
1. `.python-version` に記載された Python のバージョンを確認

    以下例として `3.12.11` の場合を仮定します。

2. `pyenv` で Python をインストールする
    ```bash
    pyenv install 3.12.11
    ```

3. Python のバージョンを切り替え

    `pyenv` が `.python-version` を自動で読み取って切り替えてくれるので操作は不要です。

    以下のコマンドで Python のバージョンを確認しましょう。
    ```bash
    pyenv version
    ```
    (`versions`ではない)

<details>
<summary>手動で切り替えたい場合</summary>

このリポジトリ `circle-search-26-api` があるフォルダに移動し、以下のコマンドを実行
```bash
pyenv local 3.12.11
```
これを実行すると、そのフォルダの中で `3.12.11` が有効化されます。
> 全部のフォルダで有効化したい場合は `local` の代わりに `global` としてください。
</details>

---

### 4. Pythonの仮想環境を作成・有効化
```bash
python -m venv .venv
source .venv/bin/activate
```

---

### 5. ライブラリをインストール
```bash
pip install --upgrade pip
pip install -r requirements.txt
```

## 開発用サーバーの起動
### (初回のみ)必要ファイルの作成
> **!!! 注意 !!!**  
> **大容量(約6GB)のダウンロードが発生するので、必ずWiFi環境で行うこと!!**
```bash
python scripts/build_all.py
```

### サーバー起動
```bash
uvicorn app.main:app --reload
```

`http://localhost:8000`からアクセスできます(デフォルトポート)。Hugging Face Spacesでは7860ポートで起動します。

## 仕組み・企画データ更新
企画データ更新のためには以下のステップを実行してください。
1. Google Spreadsheets でデータの整理 → CSVファイルのダウンロード
2. CSVファイルを `resources/` に設置
3. `config/files.json``circles > original_csv` を実際のパス・ファイル名に変更
    ```json
    {
        ...
        "circles": {
            "original_csv": "resources/original_circles.csv", // ここを変更
            "circles_json": "data/generated/circles.json"
        },
        ...
    }
    ```
4. `python scripts/build_all.py` を実行 → ローカルで動作確認
5. GitHubにプッシュ(`main` ブランチにマージ)

詳細な仕組み等は [`docs/`](./docs) を確認してください。