Skip to content

Commit 28f8a31

Browse files
committed
CLAUDE.mdにJekyllビルドフックとワークフロー手動実行の説明を追加
このセッションで学んだ内容を追加: - Jekyllビルドフック(_plugins/build_hooks.rb)の説明 - jekyll buildで自動的にデータ更新されることを明記 - GitHub Actionsワークフローの手動実行方法(gh workflow run) - Dojoマッピング追加手順の簡略化(jekyll buildだけで完結) - 主要ファイルリストの更新(build_hooks.rb、*.min.geojsonなど)
1 parent f44e9cd commit 28f8a31

File tree

1 file changed

+89
-18
lines changed

1 file changed

+89
-18
lines changed

CLAUDE.md

Lines changed: 89 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,23 @@ bundle install
1515
```
1616

1717
### データ更新
18-
```bash
19-
# 全世界のDojoデータを取得(Clubs APIから)
20-
bundle exec rake get_data_from_earth
21-
22-
# 日本のDojoとイベントデータを取得(CoderDojo Japan APIから)
23-
bundle exec rake get_data_from_japan
2418

25-
# ロゴ画像をダウンロードしてWebP形式でキャッシュ
26-
bundle exec rake cache_dojo_logos
19+
**重要**: Jekyll 4.3以降、`jekyll build`実行時に自動的にデータ更新タスクが実行されます(`_plugins/build_hooks.rb`)。
2720

28-
# GeoJSONファイルを生成(全データを統合)
29-
bundle exec rake upsert_dojos_geojson
21+
```bash
22+
# 推奨: jekyll buildで全て自動実行
23+
bundle exec jekyll build
24+
# → 自動的に以下が実行されます:
25+
# - cache_dojo_logos
26+
# - upsert_dojos_geojson
27+
# - compact_geojson
28+
29+
# または個別実行(必要な場合のみ)
30+
bundle exec rake get_data_from_earth # 全世界のDojoデータ取得
31+
bundle exec rake get_data_from_japan # 日本のDojoとイベントデータ取得
32+
bundle exec rake cache_dojo_logos # ロゴ画像キャッシュ
33+
bundle exec rake upsert_dojos_geojson # GeoJSON生成
34+
bundle exec rake compact_geojson # GeoJSON圧縮
3035
```
3136

3237
### 開発・ビルド・テスト
@@ -55,11 +60,53 @@ bundle exec rake test
5560
3. **画像最適化**: ロゴ画像を効率的に配信
5661
- `cache_dojo_logos.rb`: ロゴ画像をダウンロードしてWebP形式に変換
5762

63+
### Jekyllビルドフック(自動データ更新)
64+
65+
`_plugins/build_hooks.rb`により、`jekyll build`または`jekyll server`実行時に自動的に以下のタスクが実行されます:
66+
67+
```ruby
68+
# Jekyll::Hooks.register :site, :after_init
69+
1. upsert_dojos_geojson # GeoJSON生成
70+
2. compact_geojson # GeoJSON圧縮(22.9%削減)
71+
3. cache_dojo_logos # Dojoロゴキャッシュ
72+
```
73+
74+
**メリット**:
75+
- ✅ ローカル開発でも本番環境でも一貫した動作
76+
-`dojo2dojo.csv`更新後、`jekyll build`だけで自動反映
77+
- ✅ 手動でのRakeタスク実行が不要
78+
79+
**実行ログ例**:
80+
```
81+
🔄 Running pre-build tasks...
82+
→ Updating dojos.geojson...
83+
→ Creating dojos.min.geojson...
84+
✅ Created dojos.min.geojson (22.9% reduction)
85+
→ Caching dojo logos...
86+
✅ Pre-build tasks completed
87+
```
88+
5889
### 自動更新システム
90+
5991
GitHub Actionsで毎日自動更新(日本時間 5:59):
6092
1. データ取得スクリプトを実行
61-
2. 変更があれば自動コミット
62-
3. GitHub Pagesへ自動デプロイ
93+
2. Jekyllビルド(プラグインが自動的にGeoJSON生成・圧縮)
94+
3. テスト実行(安全性確認)
95+
4. 変更があれば自動コミット
96+
5. GitHub Pagesへ自動デプロイ
97+
98+
**ワークフローの手動実行**:
99+
```bash
100+
# scheduler_daily.yml(データ更新+デプロイ)
101+
gh workflow run scheduler_daily.yml
102+
103+
# deploy_to_pages.yml(デプロイのみ)
104+
gh workflow run deploy_to_pages.yml
105+
106+
# 実行状況確認
107+
gh run list --workflow=scheduler_daily.yml --limit 3
108+
gh run watch # リアルタイム監視
109+
```
63110

64111
### 地図表示
65112
- **Geolonia Maps**: 日本に最適化された地図タイルサービス
@@ -68,10 +115,14 @@ GitHub Actionsで毎日自動更新(日本時間 5:59):
68115
- マーカークリックでポップアップ表示(名前、説明、連絡先、イベント情報)
69116

70117
### 主要ファイル
71-
- `dojos_earth.json`: Clubs APIから取得した全世界のDojoデータ
72-
- `dojos_japan.json`: CoderDojo Japan APIから取得した日本のDojoデータ
73-
- `events_japan.json`: 日本のイベントデータ
74-
- `dojos.geojson`: 地図表示用の統合データ(GeoJSON形式)
118+
- `_data/dojos_earth.json`: Clubs APIから取得した全世界のDojoデータ
119+
- `_data/dojos_japan.json`: CoderDojo Japan APIから取得した日本のDojoデータ
120+
- `_data/events_japan.json`: 日本のイベントデータ
121+
- `_data/dojo2dojo.json`: dojo2dojo.csvから生成されたマッピングデータ
122+
- `dojo2dojo.csv`: Japan APIとClubs APIの名前マッピング(編集可能)
123+
- `dojos.geojson`: 地図表示用の統合データ(GeoJSON形式、人間が読める形式)
124+
- `dojos.min.geojson`: 圧縮版GeoJSON(本番環境で使用、22.9%削減)
125+
- `_plugins/build_hooks.rb`: Jekyllビルド時の自動データ更新フック
75126
- `images/dojos/*.webp`: 各Dojoのロゴ画像(WebP形式で最適化)
76127

77128
### テスト戦略
@@ -195,15 +246,35 @@ o3の検索結果を使用する際は必ず:
195246
3. **問題の特定と修正**
196247
- Clubs APIでの登録名と完全一致するようにdojo2dojo.csvを修正
197248
- 例:「Coderdojo Saga」vs「Saga」のような不一致を修正
198-
199-
4. **GeoJSONの再生成**
249+
250+
4. **マッピング追加とGeoJSON再生成**
200251
```bash
252+
# dojo2dojo.csvに追加(例: すぎなみ)
253+
echo "すぎなみ Suginami" >> dojo2dojo.csv
254+
255+
# jekyll buildで自動的にGeoJSON再生成(推奨)
256+
bundle exec jekyll build
257+
258+
# または個別実行
201259
bundle exec rake upsert_dojos_geojson
260+
bundle exec rake compact_geojson
202261
```
203262

204263
5. **結果の確認**
205264
```bash
265+
# GeoJSONに含まれているか確認
206266
grep "対象Dojo名" dojos.geojson
267+
268+
# ローカルで地図表示確認
269+
bundle exec jekyll server
270+
# http://localhost:4000/ で確認
271+
```
272+
273+
6. **変更をコミット**
274+
```bash
275+
git add dojo2dojo.csv _data/dojo2dojo.json dojos.geojson
276+
git commit -m "CoderDojo XXXのマッピングを追加"
277+
git push origin main
207278
```
208279

209280
### よくあるマッピング問題

0 commit comments

Comments
 (0)