鉄道システムと情報ネットワーク

## はじめに

昨月まで駅員のアルバイトをしており、満期（５年）働いた中で感じたことをいい機会なのでまとめておこうと思いました。私の身の上については下記のとおりです。

- いわゆる鉄道オタクではない（バイトを始めるまで沿線の駅名さえほとんど知りませんでした）
    -  でも何故か鉄オタと勘違いされるんですね。何故でしょう。🧐　（僕はThinkpadとUbuntuとサーバーとルータとSWがあれば十分な人間です）。
- 大学の選考は情報ネットワーク（いわゆるインターネット・OSI参照モデルにおけるネットワーク層）である（鉄道系の専門学校や交通工学などではありません←ここ重要）。
- 性格は、外向・直観・感情・判断（ENFJ）と診断されています[^16p]が、多分、外向・直観・思考・知覚（ENTP）だと思っています。
- __この記事は私の駄文と捻くれた見解による、紆余曲折あるただのメモ書きなので、だれの参考になるかはわかりません。__

:::note info
なお、開示している情報は、私が所属していたところでの経験を織り交ぜて、かつインターネットで調べたりテレビ番組を見れば出てくる程度の内容を羅列しており、業務秘密的な内容ではありません。
:::

:::note warn
この記事は乗客をパケットのデータとして扱ったりする、擬物法を行っています。
気分を害されたりしないよう、一応自己責任的な注意です。
また、本記事は所属していた鉄道会社などとは一切関係ない記事であり、記述内容は私個人の見方によるものであり(ry
:::

## 鉄道網

鉄道なんて知らないよというエンジニアの為に前提知識を抑えていきます。

### 前提知識

列車運行の原則として「**信号**」の扱いとそれに対応する「**閉塞区間**」、更に安全性を上げるための仕組みの一つとして「**ATS-P**」を抑えておきます。

#### 信号

乗っている列車で「停止信号です、しばらくお待ちください。」などとアナウンスされると思います。また、駅では停車している列車に対し「信号が変わり次第、発車致します」といったアナウンスがあると思います。まず、どのような信号があるかを確認します。

図１ではそれぞれの信号とその意味（「**現示**」といいます）を示しています。「進行」は問題なく進行できます。
「停止」の現示が出ている場合は、**その信号の設置場所より前方へは進んではいけない**といったニュアンスになります。前の列車との間隔をしっかり開けたり、駅に進入（**入線**）するために注意や減速といった現示がされるようです。詳しくないですし、最低限把握すればよいので詳細は割愛します。

![色灯式信号機.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209562/6b468c86-cb55-6ef6-78e9-32407e1a1f92.png)
図１：色灯式信号機[^singou]

#### 閉塞区間

前の列車との間隔について、**閉塞**　というものが設けられています。
下図は三灯式（つまり、進行／注意／停止）の場合の駅Aから駅Bまでの閉塞を表しています。初期時刻に駅Aに停車している先行列車（青色）が発車します。先行列車が第２閉塞を超えると、駅Ａの出発信号機は注意現示になります。第１閉塞を超えると、進行現示になり、いわゆる「出発進行」可能な状態であるわけです。つまり「停止信号です。しばらくお待ちください。」というのは先行列車との距離感が詰まっているという認識でよいと思います（具体的には先行列車が先行の駅から発車していない「通知」や完全に列車を止める「抑止」というものもあるのですべてがそうではありません）。





|閉塞[^heisoku-gif]|
|:-:|
|![Train_headway_diagram_ja.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209562/e5f8155b-1428-adf1-b258-c1bf01a6f209.png)|


|閉塞区間を示す図[^heisoku]|
|:-:|
|![鉄道信号現示の変化.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209562/7a96df78-13b0-0181-1d0d-7ad1ff154633.gif)|

##### ATS-P

物理法則が適用される鉄道ならではのシステムとして、**ATS-P** があります。
下図は信号Eに対し求められる列車の減速パターンです。
信号Eから前方にCとDの地上子というものがあります。

調べてみると、信号Eが停止現示であったときにCから得られる情報で減速のパターンを生成し、Dで減速具合を検知するシステムのようです。
生成されるパターンAに対し正常な運転の場合（B）の場合は何事もなく列車が停止に向かいます。
しかし異常な運転（F）を検知した場合、非常ブレーキが作動し急減速が発生する状況になります。

一般の人から感じる特徴的な例として、折返し列車（例えば東京からやってきた列車が東京へ戻っていく場合）などの際にとてもゆっくり入線する場合があります。
これは、折返し列車入線時は駅構内の信号は停止現示になるため[^orikaeshi]、それにあわせて注意現示や警戒現示が敷かれ、減速して入線しないと非常ブレーキが作動するといったことが起こりうるからです。

このシステムがないと列車の脱線やオーバーランなどを引き起こす可能性が高くなることを考えると、非常に興味深い素晴らしいシステムです。


|ATS-Pのパターン図[^ats-p]|
|:-:|
|![ATS-P_syousya_pattern.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209562/4159bc74-5ac4-7cca-be39-07b50bca7fa4.png)|

#### 安全第一

多くの現場でもそうですが、列車運行も安全第一で行います。

状況から線路内に人がいないであろう場合でも、万が一に人がいる可能性がある場合は駅間の線路を作業員が全て点検しないといけません。
また線路内にモノを落とされた（特に耳からうどんみたいなイヤホン[^udon]とか...）場合はツーマンセルで片方監視役・片方拾う役目といったように徹底されています（まるでスナイパーとスポッターのように...）。

まず最初に勉強するのは指差確認です。（ヨシ！）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209562/12c039b9-79ee-f399-595e-8ac78776cd74.png)


#### 非常装置

安全第一である以上多くの警報装置があります。その中でも馴染み深い３つをピックアップしておきます。

##### 列車非常停止警報装置

いわゆる駅にある非常ボタンです。
例えば２番線ホームにある非常ボタンを押したとします。その場合、実は１番線や３番線で人転落があった可能性も考えられます。
なので１番線や３番線も含めて、列車を緊急停止させます。駅構内にある**特殊発光信号装置** （特発）と呼ばれる信号が赤く点滅します。
列車の自動制御システム（ATC）を導入している場合は自動的に列車が停止します。

##### 車内警報装置

車警と呼ばれます。いわゆる車内にある警報ボタンです。
車内急病人などが発生した場合に用いられると思います。
対応は鉄道各社によって異なるようですが、私の知る限りはその場で列車を止めて状況確認するケースがあります。

##### 防護無線

列車を非常停止させた際に２次災害が発生しないよう防護無線というシステムがあります。

実際にNHKで放送された京浜東北線の神田駅での人身事故の事象では、人身事故の発生した京浜東北線だけでなく、中央線・山手線・総武線・上野東京ラインの５路線が緊急停止しました。

名前の通り無線設備を使っているので、遠く離れた路線同士でも無線が届けば各列車は停止します。過去の例では、10km離れたところまで届いたケース[^bougo-10km]があります.

> ちなみに、中央線の場合、来た列車を折り返して戻すことのできる折り返し設備のある駅が、中野や三鷹方面の駅を除くと新宿と東京にしかありません。このケースの場合、新宿ー東京間の神田駅で発生しているため、新宿から中野方面に戻して、新宿－東京間の運転見合わせを行っています。

https://twitter.com/nhk_n_sp/status/1141903767593345025


-----

##  情報ネットワークとの比較

鉄道と情報ネットワークにはいくつか類似があります。


### ２種類のトラヒック　～列車と乗客～

ネットワークの象徴的なものとしてトラヒックがありますね。先日のサッカーワールドカップでも特徴的なトラヒックがありました。（下記はgeekなぺーじで有名な方）

https://twitter.com/geekpage/status/1598517592356192256

鉄道におけるトラヒックは２種類です。「列車」と「乗客」。



#### 乗り換えというクロストラヒック

列車は折り返し設備のある駅で折り返しを行いますが、乗客のフローにはある特徴があります。
「乗り換え」です。

乗り換えはクロストラヒックとして例えたらいいんじゃないかと思います。
例えば、駅Xに隣接する私鉄終着駅から乗り換える旅客群Aと駅Xの下り方面からの乗り換え旅客群Bとその駅から乗る旅客群Cがあるとします。
個の場合、AとBとCの流入量によって乗客数にゆらぎが生じます。

駅Xで上り方面の一部列車に運転見合わせが発生した場合、入線には大量のトラヒックが集中しているにもかかわらず出線が細いので多くの人がホームに溜まってしまいます。


#### ホームというQueue

> Queue => 待ち

各ホームでは多くの乗客が待っています。
Queueは決められたホームの面積ぶんしかなく、これを超えようとすると非常に危険です。

ただQueueに入れられる乗客の数の推定は難しい。徒列整理をして１乗降口に対し４～５列並べた場合面積あたり乗客率が上がる、つまり圧縮率が上がる（コロナの情勢でそのようなことはできないが）ので、ホームの面積あたり何人入るかといった推定はしません。混んで詰まったら終わりです。

このQueueには、情報ネットワークとは異なる特徴をもちます。

１つのQueueに対し２つ出線（列車）を持ちます。列車は一定間隔で多くの乗客Queueから抜きます。
２つの出線（列車）のタイミングが悪いとホームの乗客Queueから抜けるのと同時に列車からホームに入るのも非常に多くなります。

ホーム上のI/Oは列車の乗降口と数と乗降口へ入るスピード、階段の幅やエスカレータの数にかかってきます（勿論エスカレータはむやみに歩いたり走ったりは危険だし、飛び込み乗車などもってのほかになります）。

Queueがいっぱいのとき、駅は入場制限というフェールセーフ機能を発動させます。

そうすると駅構内外にも多くのQueueが発生します。
このキューイング制御をうまくやらないと大変な混乱につながります。
複数Queueある場合は優先順位の明示化とその広告・通知をわかりやすくおこなわなければいけません。


#### ピークトラヒック（イベントトラヒック）

イベント（花火大会やコンサート）があると、列車は増便します。
いわゆる臨時列車で、普段のダイヤには載っていない便ですね。
また朝の通勤時間帯は首都圏の場合最大1.5分～2分間隔の運行を行っています。これが列車のピークトラヒックです。

私のバイト先の沿線では、８時前後が乗客のピークでした。
特に最も混む区間の乗客率は大変なものになります。これが、乗客のピークトラヒックです。

### 輻輳

鉄道における輻輳状態とはなんでしょう。
入線に比べて出線の量が少なく、キューがたまり続けるならそれが輻輳状態といえると思います。無限キューなので、とてつもない行列ができてしまいます。

https://twitter.com/pleasure_yuta/status/1168877755087278080

https://twitter.com/sfida06barao/status/1170849011835662337


### ゆらぎがユーザに与える影響

ネットワークにおいてジッタは特にストリーミング再生などに大きな影響を与えます。

https://milestone-of-se.nesuke.com/nw-basic/grasp-nw/network-delay-jitter-realtime-bulk/

リアルタイムで状況が刻々と変化する鉄道にも同様のことが言えます。
鉄道においては列車の間隔が開きすぎると（ゆらぐと）、ホームに旅客が滞留します。

ここで効いてくるのが、乗客トラヒック量です。
最も混雑している時間帯の混雑している駅にてゆらぎが発生した（つまり安全装置が働き列車の緊急停止などにより遅延が発生した）とします。
始発駅などからの列車が得られる場合はホームの旅客を列車に乗せきることも可能ですが、既に満員の列車が到着した場合は乗車できる人数に限りがあります。

より多くの旅客でホームが込み合った場合は入場規制などを行う必要もあり、また異常混雑は車内での急病人が発生したり荷物挟まりが発生したりと玉突きに事象がおこりやすくなります。

つまり、情報ネットワークのゆらぎがユーザに与える影響も鉄道の運行のゆらぎが与える影響も大きなものです。


### QoSの優先制御

基本的に普通列車は目的地までを保証するものでどれくらい時間がかかったかは考慮されていません（キロによる運賃）。しかしながら、特急列車の場合、速度を売っているので遅延保証がはいってきます。

- 普通列車: データ通信（目的地まで保証、パケロスを許さないTCP）
- 特急列車: VoIP（呼損率）

この特急列車に焦点をおいたとき鉄道と情報ネットワークでは下記のような違いがあります。

- ネットワーク: 呼損率 0.15 以内。R値などの品質の規定。　
    - 参考: https://www.soumu.go.jp/main_content/000267113.pdf
- 鉄道: 2時間以上遅れた場合の遅延保証（各駅のキューで優先制御、特急列車の通過待ち）


### 運転取りやめ（パケットロス）という最終手段

鉄道は原則パケットロス（運転取りやめ）は行いませんが、ダイヤが乱れたときの最終手段としてロスせざるをえません。ゆらぎを解消するためです。

鉄道を情報ネットワークで例えるならば、取りやめるノードでデータである旅客を退避し、後続のパケットに乗せるようなことをするわけです。

しかし後続のパケットにも乗せきれる量が限られています。その場合は冗長経路（振り替え輸送）をしてネットワークの負荷分散をするしかありません。


### おまけ: 降雨によるユーザに与える影響

電波伝搬（Wi-FiとかLTEとか）の話に **降雨減衰** というものがあります。空気中の水蒸気量などによって電波が届きにくくなる現象です。

さて、降雨減衰は音も影響します。鉄道の各駅には騒音被害にならないよう一方向性のスピーカーが設けられています。梅雨の時期などで空気中の水蒸気が多い日は駅の放送が聞こえづらい場合があると思います。特に発車ベルですね。鳴り終わっているけど、鳴ったことすら聞こえない場合があったりします。

これも情報ネットワーク（？、というより物理層ですが。）と鉄道の類似点です。


## 【番外編？】情報ネットワークで例える鉄道網

鉄道のアレコレを情報ネットワークに置き換えて考えてみます。ただしここでは首都圏の列車として定義します。

#### 列車は基本的に時間帯別のCBRのパケットであり、乗客はbyteである

日中の山手線は現在概ね4分間隔で運行されています。[^cbr]
これをネットワークに例えるならば、固定ビットレート（Constant Bit Rate）の状態になります。（厳密にはVBRかもしれませんが）。
更にパケットのデータとして乗客をカウントしていきます。MSS（Maximum Segment Size）を 1460bytes, TCPセグメントの最大が65535 bytesとしたとき、例えば11両編成なら16060 bytesのように考えられるなと思いました。

#### 到達性を保証し、原則パケットロスを許さないIPである

> もはやそれはＩＰではないという議論は棚に上げて

「逝っとけダイヤ」[^ittoke] のような特例はおいといて、基本的に到達性を保証しています。TTLによる期限切れなどなく（255駅超えたら到達できませんということはなく）、ただしどのような揺らぎが起きても遅延があってもそれは許容されています。「運転取りやめ」というパケロスが発生する場合は本当にダイヤが乱れている場合です。

#### 各ノードはデータを操作できる

各ノードはデータを操作できます。そうしないと乗降できないので。

#### E2Eは折返し設備という特殊な機能をもったノードとの間で行われる

パケットは折り返し `reply` をします。`reply` できるのは折返し設備のあるノードのみです。

#####  折返し設備をもつノードはフロー制御の機能も持つことが多い

折返し設備のあるノードにはパケットのQoS制御を行う機能があることが多いようです。より早く届けなければならない特急型のパケットなどを先にスケジューリングする必要があります。これは実際の情報ネットワークのVoIP制御でもいえることだと思います（後述）。

### RIBという駅員、Open Flow Controllerな指令所、ヘッダの役目を担う運転士と車掌

ホーム駅員（もしくは信号所）は常にRouting Information Baseです。各ノードはサイズ１のQueue（ホーム、番線）を複数持っていることがあります。その場合どのQueueに割り当てるかはControllerとやり取りすることになるでしょう。

Controllerはネットワーク全体の状況をみてポリシーを充てて、RIBに通知していきます。そして宛先ヘッダや種別のヘッダを書き換えたり（行先変更、通勤快速から快速へ種別変更など）するわけです。
そして、車掌とよばれるチェックサムがデータボディに破損がないようチェックしつつノードから出ます。


## おわりに

この駄文をここまで読んでくれた方に感謝する。是非毎日使うであろう鉄道網をライフハックできる程度に勉強していただけると世の中の駅員が助かるかもしれない。あと駆け込み乗車はおやめください。

最後に、鉄道と情報システムの観点で下記の番組をお勧めしたい。

https://www.nhk.or.jp/special/detail/20190629.html

https://www.nhk.jp/p/ts/Q28RXY3GG6/episode/te/PY6GZMJ233/


## 参考文献

[^16p]: https://www.16personalities.com/ja
[^orikaeshi]: https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10261068645
[^mintetsu]: https://www.mintetsu.or.jp/knowledge/term/16460.html
[^singou]: カズサン (talk · contribs), CC BY-SA 3.0 http://creativecommons.org/licenses/by-sa/3.0/>, via Wikimedia Commons
[^heisoku-gif]: Radicaltrain, CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons
[^heisoku]: Tam0031, CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons
[^ats-p]: Toshinori baba, CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons
[^udon]: https://www.apple.com/jp/airpods/
[^spotter]: The National Guard, CC BY 2.0 <https://creativecommons.org/licenses/by/2.0>, via Wikimedia Commons
[^bougo-10km]: https://www.weblio.jp/content/%E9%9B%BB%E6%B3%A2%E3%81%AE%E9%A3%9B%E3%81%B3%E9%81%8E%E3%81%8E%E3%81%AB%E3%82%88%E3%82%8B%E3%82%82%E3%81%AE
[^cbr]: https://tabiris.com/archives/yamanote202203/
[^ittoke]: https://dic.nicovideo.jp/a/%E9%80%9D%E3%81%A3%E3%81%A8%E3%81%91%E3%83%80%E3%82%A4%E3%83%A4