このプロジェクトは、Mapbox GL JSとreact-map-glを使用した地理空間データ可視化の学習環境です。React Router v7をベースとし、TDD(テスト駆動開発)手法でMapbox統合を実装しています。
npm install
.env.example
ファイルを.env.local
にコピーし、実際の値を設定してください:
cp .env.example .env.local
.env.local
ファイルを編集:
# Mapboxアクセストークン(必須)
VITE_MAPBOX_ACCESS_TOKEN=pk.your_actual_mapbox_access_token
# カスタムMapboxスタイルURL(任意)
VITE_MAPBOX_STYLE_URL=mapbox://styles/your-username/your-style-id
- Mapboxでアカウントを作成
- アクセストークンページでパブリックトークン(
pk.
で始まる)を取得 .env.local
のVITE_MAPBOX_ACCESS_TOKEN
に設定
npm run dev
ブラウザで http://localhost:5173 を開くとMapboxマップが表示されます。
このプロジェクトは包括的なテストスイート(41個のテスト)を含んでいます:
# 全テスト実行
npm run test
# 型チェック
npm run typecheck
# プロダクションビルド
npm run build
learning-mapbox/
├── app/
│ ├── components/ # Reactコンポーネント
│ │ └── MapContainer.tsx # Mapboxマップコンポーネント
│ ├── hooks/ # カスタムフック
│ │ └── useMapbox.ts # Mapbox管理フック
│ ├── utils/ # ユーティリティ関数
│ │ ├── mapbox-env.ts # 環境変数管理
│ │ └── mapbox-style.ts # スタイル管理
│ ├── types/ # TypeScript型定義
│ │ └── mapbox.ts # Mapbox関連の型
│ └── __tests__/ # テストファイル
│ ├── components/ # コンポーネントテスト
│ ├── integration/ # 統合テスト
│ └── utils/ # ユーティリティテスト
├── .env.local # 環境変数(Git管理外)
├── .env.example # 環境変数テンプレート
└── CLAUDE.md # 開発ガイドライン
変数名 | 必須 | 説明 | 例 |
---|---|---|---|
VITE_MAPBOX_ACCESS_TOKEN |
✅ | Mapboxアクセストークン | pk.eyJ1Ijk... |
VITE_MAPBOX_STYLE_URL |
❌ | カスタムスタイルURL | mapbox://styles/username/styleid |
環境変数が設定されていない場合、デフォルトのMapboxスタイルが使用されます。
- React Router v7: フルスタックReactフレームワーク(SSR有効)
- React 19: 最新のReactフレームワーク
- TypeScript 5.8+: 型安全な開発環境
- TailwindCSS 4.1+: ユーティリティファーストCSS
- Mapbox GL JS: インタラクティブマップライブラリ
- react-map-gl: Mapbox GL JSのReactラッパー
- カスタムMapboxスタイル: Mapbox Studioで作成
- Vitest: 高速テストフレームワーク
- Testing Library: Reactコンポーネントテスト
- TDD方式: t-wada式テスト駆動開発
- Vite 6.3+: 高速ビルドツール
- Mapbox GL JSの基本的な使用方法
- react-map-glを使ったReact統合
- 環境変数管理とセキュリティ
- TypeScriptでの型安全なMapbox開発
- カスタムMapboxスタイルの作成と適用
- **TDD(テスト駆動開発)**の実践
- 統合テストによるエンドツーエンドテスト
- エラーハンドリングとフォールバック処理
- GeoJSON データの読み込みと可視化
- WebGL カスタムレイヤー
- リアルタイムデータ更新
- 大規模データセットの最適化
- シェーダープログラミング
このプロジェクトには41個の包括的なテストが含まれています:
- 環境変数管理テスト (4テスト)
- Mapboxスタイル管理テスト (10テスト)
- useMapboxフックテスト (5テスト)
- MapContainerコンポーネントテスト (12テスト)
- 統合テスト (6テスト + 1スキップ)
- 環境テスト (4テスト)
MIT License
このプロジェクトは学習目的で作成されています。イシューやプルリクエストは歓迎します。
詳細な開発ガイドラインについては、CLAUDE.md
をご参照ください。