StationAPIへのコントリビュートに興味を持っていただきありがとうございます!
StationAPIは日本の鉄道駅・バス停の情報を提供する GraphQL API です。Cloudflare Workers 上で動きます。 コード・データの両面でコントリビューションを歓迎しています。
- Rust (stable toolchain):
rustup default stable - wasm32 ターゲット:
rustup target add wasm32-unknown-unknown - worker-build:
cargo install worker-build --locked - wrangler (ローカル実行・デプロイ用):
npm i -g wrangler
データベースは不要です。データは generated/*.csv としてビルド時に WASM へ埋め込みます。
# 1. Worker が読むデータを作る (data/*.csv と GTFS から組み立てる)
make data
# 2. Worker をビルドしてローカルで動かす
make build
make dev # http://127.0.0.1:8787generated/ が無いまま make build すると data/*.csv にフォールバックします。
その場合は各駅停車の生成系統とバスのデータが欠けた状態になります (警告が出ます)。
バスの一部フィードは ODPT_ACCESS_TOKEN を必要とします。設定が無い場合は
トークン不要な都営バスだけが取り込まれます。鉄道だけで十分なときは
DISABLE_BUS_FEATURE=true make data としてください。
- 既存のIssueを確認し、重複がないか確認してください
- 新しい機能やバグ修正に取り組む前に、Issueを作成して相談することをお勧めします
以下の命名規則に従ってブランチを作成してください:
| 種類 | プレフィックス | 例 |
|---|---|---|
| 新機能 | feature/ |
feature/add-new-rpc |
| バグ修正 | fix/ |
fix/station-query-error |
| データ変更 | data/ |
data/update-numbering |
| 雑務 | chore/ |
chore/update-deps |
| リリース | release/ |
release/v1.2.0 |
- Rustの標準的なコーディング規約に従ってください
- 新しいクエリを追加する場合は AGENTS.md のアーキテクチャパターンを参照してください
- 公開スキーマを変える場合は
schema/public.graphqlも更新してください。 CI が Worker の SDL と突き合わせ、差分があれば失敗します
- データの構造については data/README.md を参照してください
- CSVファイルは
data/ディレクトリにN!table.csvの命名規則で配置されています - データバリデーションは
cargo run -p data_validatorで実行できます
コミットする前に以下のチェックを必ず実行してください:
make fmt # フォーマットチェック
make clippy # Lint (wasm32 ターゲットを含む)
make test # テストdevブランチに向けてPRを作成してください- PRテンプレートに従って説明を記入してください
- 関連するIssueがあればリンクしてください
鉄道データの修正・追加は特に歓迎しています。詳細は data/README.md を参照してください。
- Discord コミュニティで質問やディスカッションができます
- Issueでの質問も歓迎しています
コントリビューションは本プロジェクトのライセンスに従います。