|
| 1 | +# CLAUDE.md |
| 2 | + |
| 3 | +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| 4 | + |
| 5 | +## プロジェクト概要 |
| 6 | + |
| 7 | +DojoMapは、全国のCoderDojoを地図上で探せるWebアプリケーションです。JekyllベースのシンプルなWebアプリで、Geolonia Mapsを使って地図を表示し、Clubs APIとCoderDojo JapanのAPIからデータを定期的に取得して更新しています。 |
| 8 | + |
| 9 | +## よく使うコマンド |
| 10 | + |
| 11 | +### 開発環境のセットアップ |
| 12 | +```bash |
| 13 | +# 依存関係のインストール |
| 14 | +bundle install |
| 15 | +``` |
| 16 | + |
| 17 | +### データ更新 |
| 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 |
| 24 | + |
| 25 | +# ロゴ画像をダウンロードしてWebP形式でキャッシュ |
| 26 | +bundle exec rake cache_dojo_logos |
| 27 | + |
| 28 | +# GeoJSONファイルを生成(全データを統合) |
| 29 | +bundle exec rake upsert_dojos_geojson |
| 30 | +``` |
| 31 | + |
| 32 | +### 開発・ビルド・テスト |
| 33 | +```bash |
| 34 | +# ローカル開発サーバーの起動 |
| 35 | +bundle exec jekyll server |
| 36 | + |
| 37 | +# 本番環境向けビルド |
| 38 | +JEKYLL_ENV=production bundle exec jekyll build |
| 39 | + |
| 40 | +# テストの実行(リンクチェックなど) |
| 41 | +bundle exec rake test |
| 42 | +``` |
| 43 | + |
| 44 | +## アーキテクチャと主要コンポーネント |
| 45 | + |
| 46 | +### データフロー |
| 47 | +1. **データ取得**: 外部APIから最新のDojo情報を取得 |
| 48 | + - `get_dojos_from_earth.rb`: Clubs API(旧CoderDojo Zen)からワールドワイドのデータを取得 |
| 49 | + - `get_dojos_from_japan.rb`: CoderDojo Japan APIから日本のデータを取得 |
| 50 | + - `get_events_from_japan.rb`: 日本のイベント情報を取得 |
| 51 | + |
| 52 | +2. **データ統合**: 複数のソースから取得したデータを統合 |
| 53 | + - `upsert_dojos_geojson.rb`: 両方のAPIから取得したデータをマージし、重複を除去してGeoJSON形式に変換 |
| 54 | + |
| 55 | +3. **画像最適化**: ロゴ画像を効率的に配信 |
| 56 | + - `cache_dojo_logos.rb`: ロゴ画像をダウンロードしてWebP形式に変換 |
| 57 | + |
| 58 | +### 自動更新システム |
| 59 | +GitHub Actionsで毎日自動更新(日本時間 5:59): |
| 60 | +1. データ取得スクリプトを実行 |
| 61 | +2. 変更があれば自動コミット |
| 62 | +3. GitHub Pagesへ自動デプロイ |
| 63 | + |
| 64 | +### 地図表示 |
| 65 | +- **Geolonia Maps**: 日本に最適化された地図タイルサービス |
| 66 | +- **index.html**: 日本のDojoに特化した地図 |
| 67 | +- **world.html**: 世界中のDojoを表示する地図 |
| 68 | +- マーカークリックでポップアップ表示(名前、説明、連絡先、イベント情報) |
| 69 | + |
| 70 | +### 主要ファイル |
| 71 | +- `dojos_earth.json`: Clubs APIから取得した全世界のDojoデータ |
| 72 | +- `dojos_japan.json`: CoderDojo Japan APIから取得した日本のDojoデータ |
| 73 | +- `events_japan.json`: 日本のイベントデータ |
| 74 | +- `dojos.geojson`: 地図表示用の統合データ(GeoJSON形式) |
| 75 | +- `images/dojos/*.webp`: 各Dojoのロゴ画像(WebP形式で最適化) |
| 76 | + |
| 77 | +### テスト戦略 |
| 78 | +- `html-proofer`: HTMLの妥当性とリンクチェック |
| 79 | +- 外部リンクの検証を含む包括的なチェック |
| 80 | + |
| 81 | +## 🧠 o3 MCP価値最大化戦略 |
| 82 | + |
| 83 | +技術的に詰まったときや調査が必要なときは、o3 MCP(`mcp__o3__o3-search`)を活用して最新の情報を取得します。 |
| 84 | + |
| 85 | +### 予防的調査(エラーを未然に防ぐ) |
| 86 | +実装前に必ずo3 MCPで以下を調査: |
| 87 | +- 新しいGemを追加する前:`mcp__o3__o3-search "[gem名] Jekyll 4.3 Ruby 3.4 compatibility issues 2025"` |
| 88 | +- APIエンドポイント変更前:`mcp__o3__o3-search "CoderDojo Clubs API endpoint migration breaking changes 2025"` |
| 89 | +- GitHub Actions更新前:`mcp__o3__o3-search "GitHub Actions Ubuntu runner Jekyll build issues 2025"` |
| 90 | + |
| 91 | +### DojoMap固有のクエリテンプレート |
| 92 | + |
| 93 | +#### Jekyll関連 |
| 94 | +```bash |
| 95 | +# Jekyll 4.3のビルドエラー |
| 96 | +mcp__o3__o3-search "Jekyll 4.3 [エラーメッセージ] Ruby 3.4 GitHub Pages 2025" |
| 97 | + |
| 98 | +# Jekyll プラグイン互換性 |
| 99 | +mcp__o3__o3-search "Jekyll 4.3 [プラグイン名] compatibility Ruby 3.4 2025" |
| 100 | + |
| 101 | +# Liquid テンプレートエラー |
| 102 | +mcp__o3__o3-search "Jekyll Liquid template [エラー内容] syntax error 2025" |
| 103 | +``` |
| 104 | + |
| 105 | +#### 地図・GeoJSON関連 |
| 106 | +```bash |
| 107 | +# Geolonia Maps API |
| 108 | +mcp__o3__o3-search "Geolonia Maps API [機能名] implementation JavaScript 2025" |
| 109 | + |
| 110 | +# GeoJSON フォーマット |
| 111 | +mcp__o3__o3-search "GeoJSON format [問題] mapbox compatibility 2025" |
| 112 | + |
| 113 | +# マーカークラスタリング |
| 114 | +mcp__o3__o3-search "Geolonia Maps marker clustering performance optimization 2025" |
| 115 | +``` |
| 116 | + |
| 117 | +#### API連携 |
| 118 | +```bash |
| 119 | +# Clubs API (旧CoderDojo Zen) |
| 120 | +mcp__o3__o3-search "CoderDojo Clubs API [エンドポイント] authentication Ruby 2025" |
| 121 | + |
| 122 | +# APIレート制限 |
| 123 | +mcp__o3__o3-search "CoderDojo API rate limit handling Ruby retry strategy 2025" |
| 124 | + |
| 125 | +# JSONパースエラー |
| 126 | +mcp__o3__o3-search "[エラー全文] JSON parse Ruby 3.4 encoding UTF-8" |
| 127 | +``` |
| 128 | + |
| 129 | +#### 画像最適化 |
| 130 | +```bash |
| 131 | +# WebP変換 |
| 132 | +mcp__o3__o3-search "Ruby ImageMagick WebP conversion quality optimization 2025" |
| 133 | + |
| 134 | +# 画像キャッシュ戦略 |
| 135 | +mcp__o3__o3-search "Jekyll static site image caching strategy WebP CDN 2025" |
| 136 | +``` |
| 137 | + |
| 138 | +#### GitHub Actions |
| 139 | +```bash |
| 140 | +# ワークフローエラー |
| 141 | +mcp__o3__o3-search "GitHub Actions [エラー] Jekyll build Ruby 3.4 Ubuntu 2025" |
| 142 | + |
| 143 | +# 自動コミット問題 |
| 144 | +mcp__o3__o3-search "GitHub Actions automated commit permission denied GITHUB_TOKEN 2025" |
| 145 | + |
| 146 | +# GitHub Pages デプロイ |
| 147 | +mcp__o3__o3-search "GitHub Actions Pages deploy Jekyll JEKYLL_ENV production 2025" |
| 148 | +``` |
| 149 | + |
| 150 | +### 段階的問題解決アプローチ |
| 151 | +1. **初期調査**: エラーメッセージ全文で検索 |
| 152 | +2. **深堀り**: 使用している技術スタック(Jekyll 4.3, Ruby 3.4, Geolonia Maps)を含めて再検索 |
| 153 | +3. **検証**: 公式ドキュメントや最新のGitHub Issuesを確認 |
| 154 | + |
| 155 | +### 結果の批判的評価 |
| 156 | +o3の検索結果を使用する際は必ず: |
| 157 | +1. 情報の日付を確認(2024年以降の情報を優先) |
| 158 | +2. Jekyll/Ruby/APIのバージョン互換性を確認 |
| 159 | +3. DojoMapの制約条件(静的サイト、GitHub Pages)と照合 |
| 160 | +4. 小規模な変更でテストしてから本実装 |
0 commit comments