パスワードを忘れた? アカウント作成
16651731 story
データベース

Suicaに記録された駅名を正しく読み取るには日付データが必要 60

ストーリー by nagazou
都内に駅が増えるたびに大変なことに 部門より

六ミツさんのツイートによると、古いSuicaから2005年のデータを読み取ることに成功したが、その当時存在しないハズの高輪ゲートウェイの名称が出てきたことで驚いていたというツイートが話題になった。あおとさんなどの指摘によると、原因は高輪ゲートウェイ駅開業にあわせてJR東日本が駅順コードを割り振り直したためだそうだ。その詳細に関してはmuo-yaの記事に詳しい(六ミツさんのツイートあおとさんのツイートmuo-ya)。

自動改札機を使用するシステムには、ICカード内に駅コードが記録されている。この駅コードは線区(路線)と駅順から構成され、JR東日本の東京駅は線区が0x01、駅順が0x01なので「001-001」が駅コードとして割り振られているそうだ(自動改札機の研究)。

山手線の東京-品川間駅順コードは、当初から空きコードが一つ用意されていたが、高輪ゲートウェイ駅に空きコードを割り当ててしまうと

浜松町(1-4) - 田町(1-6) - 高輪ゲートウェイ(1-5) - 品川(1-7)

というようになり、コード順と駅順が揃わなくなる問題が生じる。しかしJR東日本はこの順番が狂うことを避け、

浜松町(1-4) - 田町(1-5) - 高輪ゲートウェイ(1-6) - 品川(1-7)

という形で駅順コードの振り直しをおこなったとのこと。このような駅順コード振り直しがおこなわれたことで、冒頭のような古いSuicaデータを読み取ると、当時存在しない高輪ゲートウェイ駅が出てきてしまうと言う事態になったようだ。Suica ReaderなどのICカード履歴読み取りツールや各種経費精算ツールで、間違いなく読み込むためには日付をもとにした分岐処理が必要だとしている

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2023年06月09日 18時17分 (#4475012)

    新駅は浜松町と田町の間に作る予定だったのか。

  • 無駄にカッコイイんだよね。名前が。
    日本鉄道技術協会の特定部会の日本鉄道サイバネティクス協議会が定めた、ってだけなんだが。
    https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E9%89%84%E9%81%93%E6%... [wikipedia.org]

    ※個人的には、ヤマト運輸の物流ターミナル「羽田クロノゲート」に並ぶと思ってる。

  • by Anonymous Coward on 2023年06月09日 18時14分 (#4475011)

    こういうときは10,20,30と番号ふってしまう癖がついてる。

    • by Anonymous Coward

      IDと順序は別で管理したらいいだけなんじゃないのん。

      • by Anonymous Coward

        それな。
        Identityの略がIDなのに変化するってどういうことかと。

        • by Anonymous Coward

          IDではなくて駅順コードなのよ。
          最初からその路線の中で物理的な駅の順に振ることになっていて、それを前提で運賃計算している。
          改札機だと、データ読み取り→データ処理→データ書き込みまで数百ミリ秒で処理完了しないといけないので、IDと別に順序を管理するなんてことはやりたくないのよ。
          駅数の少ない路線では予め飛び飛びで駅順コード振ってるけど、8ビットしかないので運悪く空きがないと今回のように振り直すことになる。

    • by Anonymous Coward

      昔のBASICにはRENUMなかったからなぁ

      • by Anonymous Coward

        APPLE BASICにも、N BASICにもRENUMはあったけど、シャープとか富士通とか非MSだとなかったんだろうか。

        • by Anonymous Coward

          PC-1251みたいなポケコンにはRENUMなかったんで、手動でやってしんどかった。
          メモリ少ないんで行番号の桁数減らしたいけど、減らしすぎると仕様追加時に詰む。

    • by Anonymous Coward

      一桁で足ります?

    • by Anonymous Coward

      途中で桁数が変わることを避けるから1000開始の10飛ばしが基本じゃろ
      設計したやつ新入社員か?
      # 処理速度やメモリフットプリントの関係で桁数削ってたんならごめん。

      • by Anonymous Coward

        ワークエリアが多くて64KBの時代ならともかく、今どきすべてのプログラムが1000行以内に収まるか?

    • by Anonymous Coward

      10_要件定義
      20_基本設計
      30_詳細設計
      ...

      うちの会社のファイルサーバはこんなんばっかだねw

    • by Anonymous Coward

      十の位だけ増やすのではないですが、大阪市営地下鉄は自社線の駅ナンバリングを1ではなく11からカウントしてましたね。延伸区間、相互乗り入れ区間は10, 09, ... みたいに。

  • by Anonymous Coward on 2023年06月09日 18時27分 (#4475018)

    高速道路のICとかにも番号振ってありますけど,
    IC増設したら枝番になってますね。
    そりゃあ番号振りなおしたら看板全部作り直しだもんな

    拡張性って大事だけどリソースの制約もあるから
    設計難しいね

    • by Anonymous Coward

      1丁目1番1号第一ビル1階111号室1100区画

    • by Anonymous Coward

      絶対に必要であり続ける日付がバージョン番号の役割も兼ねてるので悪いやり方ではないよねコレ

      • by Anonymous Coward

        IDが一意に定まらなかったり、変動したりするのは、最悪の設計です。

        • by Anonymous Coward
          せめて2バイトあれば楽だったろうに
          半角カタカナで電略をそのまま入れとくとか
    • by Anonymous Coward

      細かいこと考えずにint32で振ってくれて良いんですよ。

    • by Anonymous Coward

      ちょうど先日のストーリーで、住所の号に枝番があると東京電力などのアホな入力フォームが受け付けてくれないという話をしてたな

    • by Anonymous Coward

      アメリカの場合は、州内の起点(その高速道路の起点か州境)からのマイルでの距離になってて、同じマイルに(つまり1マイル以内に)複数ある場合は後ろにA,B,C...ってつけてく方式になってる
      なので、出口の標識で目的の出口までの距離がわかりやすいし、距離が短くなければ出口番号が被らない
      (例えば目的の出口が「Exit 75A」で今通りすぎた出口が「Exit 10」であれば、65mphで走ってたらあと1時間くらいで目的地)

      日本の高速道路もこの方式を採用すればいいのに

      • by Anonymous Coward

        キロポストの数字を,看板にでかく追加してやればOk?

        • by Anonymous Coward

          ナビに次のインターまでの距離と時間が出てるから
          それをちらっと見ればOk.

      • by Anonymous Coward

        abと振った後にaとbの間に出来た場合はどうなるの?aa?
        それともabcは位置関係ないのか。
        おおざっぱすぎだわ。

        そういや電車の駅も連番になってるよな、外人がわからんからって。
        あれも降りなおすのだろうか。

        • その場合、
          ・新設をc
          ・bをdに変更(以降bは欠番)
          てのを思いついたがいかがだろうか。

          親コメント
        • by Anonymous Coward

          高輪ゲートウェイの駅番号に関してはあらかじめ空けてあったらしい。
          https://trafficnews.jp/post/97548/2 [trafficnews.jp]

          • by Anonymous Coward

            その記事にあるけれど、
            東京メトロや東武東上線ではひとつずつ番号を繰り下げ
            JR四国では枝番号付きと、対応が分かれるみたいだね。
            不連続にはしたくないようだ。

        • by Anonymous Coward

          知ってる限りABCの順になってるので、たぶんアルファベット部分は振りなおししてる?

          出口番号は出口番号であってインターの番号じゃなく分岐に対してつけられるので、例えばジャンクションで南方面と北方面の分岐がそれぞれあったら順番に「42A」「42B」みたいに使われる

          短距離に近接してインターがあるせいでABCが使われてる例もそれなりにあるけど、でも1600m以下の間隔で追加する事もそんなに頻繁には無いだろうから、振りなおしでもそんなには困らないのかも?
          (ジャンクションの作り直し(アメリカでは結構ある)の場合は構造ごと変わるだろうからそれも振り直しの方が合理的そう)

  • by Anonymous Coward on 2023年06月09日 18時39分 (#4475027)

    振り直した理由は簡単で、この線区駅順コードはICにも使われてるけど、処理速度に限りがある磁気切符や磁気の定期券用でもあるから。
    限られた記録ビットと記憶領域と処理速度で、通過可能か不可か判定するのに、逆順になる特例が増えると困る。

    発行済の磁気定期券や回数券も高輪ゲートウェイ開業前後でズレたけど、
    磁気内の世代ビットで田町か高輪ゲートウェイかは区別されて利用者は意識せず使い続けられるようになってた。

    • by Anonymous Coward

      処理は改札側が行うのに切符や定期券が磁気かどうかが関係あるの?

      • by Anonymous Coward

        磁気とICでは判定ロジックも判定CPUも別建てで出来てます。

        磁気は切符購入時に券売機が事前に枝狩りしてくれるけど、古い奴はP54C位の世界。流石に今は滅んでるはず。
        ICはICで所定の時間内に最安経路を求めないといけないのでとても大変だけど、PenM位の世界。

        • by Anonymous Coward

          総当たりでテーブルにしてあるのかと思ってたけどリアルタイムに経路探索してたんだ

          • by Anonymous Coward

            テーブルにしてもデカイだけだよ。

    • by Anonymous Coward

      複雑に絡み合った路線の通過可能かの判定に、連番を使うような実装のわけがなかろう。

      • by Anonymous Coward

        複雑だからこそ、枝刈りのために変な枝生やすなってなる。
        連番を守らないなら、内部的に山手線の枝が増える事になる。

        • by Anonymous Coward

          生えるのは山手線ではなく、東海道線の誤りです。申し訳ない。

        • by Anonymous Coward

          枝もなにも、グラフ構造のデータで持って経路探索するだけじゃん。
          路線が増える度に、プログラマが経路のプログラムを作り替えてるとでも思ってるのかw
          そんなんじゃ振替輸送にも対応できない。

  • by Anonymous Coward on 2023年06月09日 22時14分 (#4475139)

    こういう読み取りアプリはたくさん公開しているけど、バージョンアップの情報って公開されているのかな?

  • 老人会たるコミュニティならば、xx年以前なら21世紀、そうでないなら20世紀などという条件分岐を認知するだろう。
    想定していたロバスト性(柔軟性)を超えた事象が起きた時にラフなワークアラウンド(力技な迂回策)を採用することになるはずだ。
    はたしてその一端を見つけたことはアレげになるのだろうか?(あるいは、それをアレげにできるほどに下々の作業を無視できるほどに現在のACは上級国民なのか)

    • by Anonymous Coward

      老人会エアプだから2000年問題と名前まで付けてアホみたいに大騒ぎしたの知らないのかな?

  • by Anonymous Coward on 2023年06月09日 23時46分 (#4475169)

    こういうのって日付に応じたデータ読んで処理するものだと思ったけど・・・
    日付に応じたデータ読むのが分岐処理でいいんだよね。
    分岐処理っていわれると1-6は日付によって田町か高輪か判断するみたいなイメージ持ってしまった。
    そんな斜め上な解釈にまで連想してしまうのはいつもやらかしてくれる外注さんのせいだな。

    • by Anonymous Coward on 2023年06月10日 3時28分 (#4475204)

      日付と駅コードを持った変換用テーブルを持ってて、データ処理の最初の方で駅コードの変換掛けてたはず。
      もう10数年前なので正確なことは忘れたけど、なんで今頃話題になったのか?
      変換コード追加の切っ掛けは、高輪ゲートウェイ駅じゃなくて、空港近くの駅だった気がする。

      親コメント
typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...