# Contributing to d3-thematika

d3-thematikaへの貢献を検討いただき、ありがとうございます！このプロジェクトは現在アルファ版の開発段階にあり、コミュニティからのフィードバックや貢献を歓迎しています。

## 🎯 貢献の方法

### バグ報告

バグを発見した場合は、[GitHub Issues](https://github.com/shimizu/d3-thematika/issues)で報告してください。

**バグ報告に含めるべき情報：**
- バグの詳細な説明
- 再現手順
- 期待される動作
- 実際の動作
- 環境情報（OS、ブラウザ、Node.jsバージョンなど）
- 可能であればコードサンプルやスクリーンショット

### 機能リクエスト

新機能の提案も[GitHub Issues](https://github.com/shimizu/d3-thematika/issues)で受け付けています。

**機能リクエストに含めるべき情報：**
- 機能の詳細な説明
- ユースケース
- 提案する実装方法（あれば）
- 関連する参考資料やリンク

### プルリクエスト

コードの貢献は以下の手順で行ってください：

1. **フォーク**: リポジトリをフォークする
2. **ブランチ作成**: 機能追加や修正用のブランチを作成
   ```bash
   git checkout -b feature/your-feature-name
   ```
3. **開発**: コードを変更
4. **テスト**: テストを実行して全て通ることを確認
   ```bash
   npm test
   ```
5. **コミット**: 変更をコミット（日本語でのコミットメッセージ可）
   ```bash
   git commit -m "機能: 新しいレイヤータイプを追加"
   ```
6. **プッシュ**: フォークしたリポジトリにプッシュ
7. **PR作成**: メインリポジトリに対してプルリクエストを作成

## 🛠️ 開発環境のセットアップ

```bash
# リポジトリをクローン
git clone https://github.com/shimizu/d3-thematika.git
cd d3-thematika

# 依存関係をインストール
npm install

# 開発サーバーを起動
npm run dev

# テストを実行
npm test
```

## 📝 コーディング規約

### 基本原則
- **ESモジュール形式**: 全てのJavaScriptコードはESM形式を使用
- **TypeScript**: 型安全性を確保
- **既存コードとの一貫性**: 既存のコードパターンに従う

### コードスタイル
- インデント: スペース2つ
- セミコロン: 必須
- 文字列: シングルクォート優先
- 命名規則:
  - クラス名: PascalCase
  - 関数・変数: camelCase
  - 定数: UPPER_SNAKE_CASE

### レイヤー実装
新しいレイヤーを追加する場合：
1. `BaseLayer`クラスを継承
2. 必要なインターフェースを実装（`IGeojsonLayer`など）
3. `render`メソッドを実装
4. テストファイルを作成

### テスト
- 新機能には必ずテストを追加
- カバレッジ80%以上を維持
- テストファイルは`__tests__`ディレクトリに配置

## 🚀 リリースプロセス

現在はアルファ版のため、頻繁に破壊的変更が入る可能性があります。

### バージョニング
- メジャー: 破壊的変更
- マイナー: 新機能追加
- パッチ: バグ修正

## 📚 ドキュメント

コードの変更に合わせて以下も更新してください：
- README.md（必要に応じて）
- examples/（新機能の場合）
- TypeScript型定義
- JSDocコメント

## 🤝 コミュニティ

### 行動規範
- 建設的で敬意のあるコミュニケーション
- 多様性を尊重
- 初心者にも優しく

### 質問・議論
- [GitHub Discussions](https://github.com/shimizu/d3-thematika/discussions)
- [Issues](https://github.com/shimizu/d3-thematika/issues)

## 📄 ライセンス

貢献されたコードは、プロジェクトと同じISCライセンスの下で公開されます。

## 🙏 謝辞

すべての貢献者に感謝します！あなたの貢献がこのプロジェクトをより良いものにします。

---

**注意**: このプロジェクトは活発に開発中です。大きな変更を行う前に、Issueで議論することをお勧めします。