開発者向けの説明です
miseでNodeバージョンを管理しています(バージョンの定義場所:/.tool-versions)
mise install
npm install
npm run ${package.jsonで定義したscript名称}
npx ts-node ${ts_file}
npx jest ${ts_test_file}GCP consoleから Geocoding API が利用可能なAPI keyを取得して以下のファイルで指定します
src/.env.local
GOOGLE_GEOCODING_API_KEY=${API_KEY}LFに統一したいので git config core.autocrlf input を確認
feature/update-$version
マスターデータ
- src/station.csv 駅情報
- src/line.csv 路線情報
- src/line/*.json 路線詳細(登録駅リスト)
- src/polyline/*.json 路線ポリライン
確認データ
- src/check/line.csv 路線の登録駅数(駅メモ)
- src/check/prefecture.csv 都道府県情報(駅メモでの駅数)
- src/check/polyline_ignore.csv ポリライン欠損を許す路線一覧
スクリプトでデータの整合性チェック・自動補完ができます
npm run check自動補完・自動修正に対応しているフィールは以下の通りです
- src/station.csv 各駅の郵便番号(postal_code)と住所(address)
- src/line/*.json 路線登録駅の駅コード・ID(コード or IDのいずれかがsrc/station.csvのマスターデータと一致している必要あり)
src/.envの定義を更新
リモート
作業ブランチをpushするとauto-build ワークフローが起動して自動ビルドが実行され、ビルド成功すると差分がcommit&pushされます
ローカル
基本的にはワークフローと同様にshellスクリプトを実行します
ただし図形計算にGitHub Packageを利用する関係でGitHubアカウントの認証情報が必要です
src/diagram/credentials.properties
username=${github_user_name}
token=${github_access_token}ビルド完了後にmainブランチをbaseにPRを作成
- テストが自動起動
- PRをマージ
- 自動でtagが打たれてreleaseを作成
- 生成されたdraftを編集・発行
src/polyline/*.jsonにデータを定義します- ポリラインの欠損を許容する場合は
src/check/polyline_ignore.csvに路線名を追記します
out/**/*.jsonファイルのフォーマットをJSON schemaで厳密に表現しています。
src/ts/model/*.tsにてTypeScriptの型でJSONフォーマットを表現し、
ajvライブラリでJSON schemaを定義・バリデーションを実装しています。
out/*/schema/*.schema.jsonを生成します
npm run schemaJSON schema をもとにマークダウン形式でdocs/*.mdを出力します(mainデータセットのみ)
npm run docshttps://ekimemo.com/database/** から取得できるデータと比較して差分を検査します. ただし全部の路線・駅(総数10000程度)のページをダウンロードするのに時間がかかるため、PRのチェックには含まれません
rm -f src/ekimemo/station/* src/ekimemo/line/*
npm run download公式Webサイトで使用する駅・路線の識別子と当データベースのcodeとの対応表も出力されます
以下の項目において駅メモと差分が無いか確認します
- 駅の名前
- 駅の緯度・経度
- 駅の所在都道府県
- 駅のよみがな
- 路線の登録駅・順序
npm run test-ekimemo