jr-shikoku-backend-system
大枠(使うページで考える)
-
アプリ内
- 列車のダイヤ情報
- 列車の基本情報
- 列車の運用情報
-
運用HUB内
- 列車のダイヤ情報
- 列車の基本情報
- 列車の運用情報
- 車両の編成情報
- 車両の基本情報
基本的用語
-
列番/Train(列車ID/TrainNumber)
- 例:104M、106M等、列車の一便を識別するもの。列車ダイヤ。
-
運用/Operation(運用ID/OperationID)
- 例:U1234等、一つの車両が一日でどのような列車運用をするかを識別するもの。列車の組み合わせ。大体使用車種は決まっているが、実際どの車両が使用されるかはわからないのでその入力処理をする。
-
編成/Unit(編成ID/UnitID)
- 例:R14、E13、2151等、列車の車両編成を識別するもの。使用車種や車両番号の組み合わせ。車両が一両単位で運用されるなら車両番号がそのまま適用される。
大枠(データソースから考える)
-
列車ダイヤ情報のキープ、表示、更新
-
保存する内容
- 列車ID(列番)
- ダイヤ情報(テキスト)
- 更新日時(日時)
- 作成日時(日時)
- 更新者ID(ユーザーID)
- 作成者ID(ユーザーID)
-
ダイヤ情報はテキストで管理している
-
公式のダイヤ情報を定期的に取得し、保存する
-
管理ユーザーが永続保存したいダイヤを取得、登録
-
管理ユーザーが一日限定で保存したいダイヤを取得、登録
-
一般ユーザーに対して、当日のダイヤ情報を提供するAPIを提供
-
公式→永続保存→一日限定保存の順にオーバーライドして当日のダイヤを決定する
-
例:
104M | 高松12:00,多度津12:25,岡山13:10 | 2025/10/30 | 2025/10/30 | admin | admin
-
-
列車基本情報の表示、更新
-
保存する内容
- 列車ID(列番)
- 列車名(テキスト)
- 種別(種別ID:テキスト)
- アイコン画像URL(テキスト)
- 案内情報URL(テキスト)
- インフォグラム(グリーン車等のマーク)(テキスト)
- 経由地(テキスト)
- 行先(テキスト)
- 列車番号相対距離(数値)
- 列車情報URL(テキスト)
- 案内参考情報(テキスト)
- 列番書き換え(テキスト)
- 車両編成情報(車両運用ID配列) ※指定日時保存、一日限定保存用
- 更新日時(日時)
- 作成日時(日時)
- 更新者ID(ユーザーID)
- 作成者ID(ユーザーID)
- 有効日(日配列) ※指定日時保存、一日限定保存用
- 噂情報(テキスト) ※指定日時保存、一日限定保存用
- 追加テキスト(テキスト) ※指定日時保存、一日限定用
-
列車の基本情報(列車名、種別、アイコン画像、案内情報URL等)を管理する
-
管理ユーザーが列車基本情報を永続登録、更新できる
-
管理ユーザーが指定日時保存版の列車基本情報を登録、更新できる
-
管理ユーザーが一日限定保存版の列車基本情報を登録、更新できる
- 指定日時、一日限定には列車編成情報なども付与可能とする
-
一般ユーザーに対して、当日の列車基本情報を提供するAPIを提供
-
永続保存→指定日時保存→一日限定保存の順にオーバーライドして当日の列車基本情報を決定する
-
例:
104M | サンポート南風リレー | Rapid | ...7200.png | sanpo.html | G | 多度津経由 | 高松 | 5000 | sharyou.html | 多度津の先、端岡、丸亀は通過します。 | 9104M | [U1234,U1243] | 2025/10/30 | 2025/10/30 | admin | admin | 11/3 | 車掌より20時運転再開見込みとのこと。 | 観音寺始発
-
-
列車運用情報の表示、更新
- 保存する内容
- 運用ID(テキスト or UUID)
- 列車ID(列番配列)
- 使用車種(車種ID配列,車両番号配列)
- 更新日時(日時)
- 作成日時(日時)
- 更新者ID(ユーザーID)
- 作成者ID(ユーザーID)
- その車両が一日でどのような列車運用をするかを管理する
- 管理ユーザーが列車運用情報を登録、更新できる
- 一般ユーザーに対して、列車運用情報を提供するAPIを提供する
- 増解結して運用が変化するものは別運用として処理する
- 使用車種は普段の運用に使用する車種、編成長が入力される(常に連結されているものは一つの運用に二編成連結している表示になる)
- 例:
U1234 | [104M,107M,110M] | [R14,7001,71xx] | 2025/10/30 | 2025/10/30 | admin | admin
- 保存する内容
-
車両情報の表示、更新
- 保存する内容
- 編成ID(車両編成名または車両番号)
- 車両アイコンURL(テキスト)
- 編成情報(車両番号配列)
- 編成説明(objectテキスト)(諸情報を任意に追加できる余裕を持たせる)
- 更新日時(日時)
- 作成日時(日時)
- 更新者ID(ユーザーID)
- 作成者ID(ユーザーID)
- 列車の車両編成情報を管理する
- 管理ユーザーが車両編成情報を登録、更新できる
- 一般ユーザーに対して、車両編成情報を提供するAPIを提供する
- 例:
R14 | 7200.png | [7214,7314] | {memo:7200系はJR四国の標準的な近郊型電車です。二両編成で構成され高松近郊で使用されています。} | 2025/10/30 | 2025/10/30 | admin | admin
- 保存する内容
列車ダイヤ情報
概要
- 所有全ダイヤ
- 当日反映ダイヤ
- 当日反映ダイヤ(Master) 本来のデータ。↑との違いは「今日限定の設定」をしているか否か。臨時停車や運休などがここに入る。
- 日時指定ダイヤ
それぞれ日付のリファラを付けるか、曜日指定のリファラを付ける方針で同じダイヤでいいだろう。データの判定は列車情報側でフィルタリングする形。
テーブル案
このテーブルをベースに、永続保存版、default版、一日限定保存版を用意する。
| キー | 説明 |
|---|---|
| id | primary key(auto generated) |
| TrainID | 列番(relation key/一意) |
| diagramText | ダイヤ情報(text) |
| updatedAt | 更新時刻(datetime) |
| createdAt | 作成時刻(datetime) |
| updatedBy | 更新者(userID) |
| createdBy | 作成者(userID) |
API設計案
- 当日反映ダイヤ
- api/diagram
- jsonをcloudflareに保存しておけばいいじゃないか
- 編集機能には必要か
- api/diagram?trainID=XXXX
- 編集機能ならその単体を取得する機能があってもいいんでは?
- 一般機能ではこれは使わない
- api/diagram
- 日時無視、過去含めた全ダイヤ取得
- api/diagram?all=true
列車情報関係
- 列車の様々な基本情報を管理する。
[永続保存版]
| id | TrainNumber | userID | type | trainName | img | infoUrl | infogram | viaData | ToData | trainNumDistance | trainInfoUrl | info | TrainNumberOverride | createdAt | updatedAt | createdBy | updatedBy |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id | 列番 | 更新者ID | 種別 | 列車名 | アイコン画像 | 車両情報URL | インフォグラム(グリーン車等のマーク) | 経由地 | 行先 | 列車番号相対距離 | 列車情報URL | 案内参考情報 | 列番書き換え | 作成時刻 | 更新時刻 | 作成者 | 更新者 |
[指定日時保存版]
| id | TrainNumber | userID | type | trainName | img | infoUrl | infogram | viaData | ToData | trainNumDistance | trainInfoUrl | info | TrainNumberOverride | createdAt | updatedAt | createdBy | updatedBy | vehicleFormation | uwasa | untilDays | optionalText |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id | 列番 | 更新者ID | 種別 | 列車名 | アイコン画像 | 車両情報URL | インフォグラム(グリーン車等のマーク) | 経由地 | 行先 | 列車番号相対距離 | 列車情報URL | 案内参考情報 | 列番書き換え | 作成時刻 | 更新時刻 | 作成者 | 更新者 | 編成情報 | 噂情報 | 有効日数 | 追加テキスト |
[一日限定保存版]
| id | TrainNumber | userID | type | trainName | img | infoUrl | infogram | viaData | ToData | trainNumDistance | trainInfoUrl | info | TrainNumberOverride | createdAt | updatedAt | createdBy | updatedBy | vehicleFormation | uwasa | untilDays | optionalText |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id | 列番 | 更新者ID | 種別 | 列車名 | アイコン画像 | 車両情報URL | インフォグラム(グリーン車等のマーク) | 経由地 | 行先 | 列車番号相対距離 | 列車情報URL | 案内参考情報 | 列番書き換え | 作成時刻 | 更新時刻 | 作成者 | 更新者 | 編成情報 | 噂情報 | 有効日数 | 追加テキスト |
車両情報
-
列車の車両編成情報を管理する。
id UnitID UnitImage VehicleFormation UnitInformation createdAt updatedAt createdBy updatedBy id 編成ID 編成画像 編成情報(配列) 編成説明(object) 作成時刻 更新時刻 作成者 更新者 -
編成情報は[5001,5101,5202]のようなテキスト配列で保存する。
-
UnitIDは編成として常に共に動く編成(7200系、2600系等)であれば、その編成番号を記述。そうでなく一両単位でバラバラに運用可能な場合は車両番号を記述し、VehicleFormationは車両番号一つの配列とする。
-
UnitInformationは車両の細かい情報を扱うが、このobjectはまだ未定義。 [ToDo]
書きかけ中...