先日、NEXCO中日本でETCゲートが利用できなくなるトラブルがありました。その理由を少し考えていたのですが、同時にグラフィクスを書くソフトの使い方を忘れたくなくて、画像を書きながら、なぜETCのトラブルが発生したのかを考えていました。
しかし、すでにNEXCO中日本からトラブルり原因が判明したという報告があったようで、本記事はお蔵入りにせざるを得なくなってしまったわけですが、せっかく記述してもったいないので、もしよろしければご覧いただければと思って投稿しました。
以下、本来の記事が始まります。
新しい割引システムの仕組み
NEXCO中日本でETCのシステムに障害が発生し、各所で渋滞や、それに起因する事故が発生するなどの問題がありました。現在は仮の復旧をしていて、問題なく動作しているようです。しかし、なぜこのような障害が発生したのか、その可能性について考えてみたいと思います。
新しい割引きはどのような割引きなのか
報道によれば、今回のETCシステムの障害は、7月以降に新たな割引きシステムを導入するためにシステムを改修したことに起因すると言われています。システムを改修することで、トラブルが発生することはよくあることで、珍しいことではありません。
もしシステムの改修が原因となっているとしたら、どのような原因が考えられるのでしょうか?それを考える前に、今回のシステム変更がどのようなものであったのか、割引きシステムの変更から考えてみたいと思います。
従来の割引きシステム
上記の画像はこれまでの割引きが適用される高速利用のイメージ図になります。矢印はインターチェンジ(以下、IC)に乗って、ICから降りたときの時間を示しています。
1番上の矢印は、割引き適用開始時間後にICに入り、適用終了時間前にICから出た場合を表しています。この場合は、割引き適用開始時間内にICに入り、ICに出ているのですべての走行距離が割引き対象になります。
この割引きシステムで面白いのは、割引き時間が決まっているのに、割引き時間内に走行していれば、ICに入る時間や出る時間が割引き時間外でもすべての走行距離に対して割引きが適用されるところです。少しでも、割引適用時間内に走行しているということであれば、走行した距離の全てが割引き対象となります。
一方でこの割引システムの悪いところとして、逆に考えれば、少しでも適用時間内に走行すれば全区間で割引きが適用されてしまうことで、そのシステムを悪用することが可能になることです。例えば、適用開始時間を予想して、たった1分間でも適用時間内に走行すれば全区画が割引きされるため、適用時間になるまで近くのサービスエリアや路肩に停車して適用時間を待つという抜け道を利用する人がでてくるかもしれません。
また逆に適用終了時間内にICに入ろうと、一般道を高速で走行して割引きの適用をしようという人もでてくる可能性があります。
そして本来の割引き適用の理由は、空いている時間を効率的に利用してもらい、割引き適用時間以外の混雑を防止することにあるのですから、ICから出るほんの少しだけ、ICに乗るほんの少しだけ適用時間を活用するというのは本来の趣旨とは異なってきてしまいます。
新しい割引きシステム
新しく採用される割引きシステムは現在の割引きシステムとどのような違いがあるのでしょうか?それでは新しい割引きシステムをみてみましょう。
割引きの適用時間も変更になったのですが、大きく違うのはその割引きの適用方法です。現在の割引き適用方法は、すでに説明したように、少しでも適用期間内で走行すれば全走行区間で割引きが適用されていました。しかし、新割引きシステムでは、適用開始時間から適用終了時間まで走行した距離にのみ適用されることになります。
これにより現在の割引きシステムでは不可能だった、走行車両が多い時間帯に走る車両を、走行車両数が少ない時間帯に誘導したいという目的を確実に実行することが可能になります。
一方で、このような新しいシステムにすることのデメリットもあります。それは、適用開始時間と適用終了時間の間にできるだけ長い距離を走りたいという車両がでてくる可能性です。これにより本来の法定速度以上の速度で走る車両が増えて、事故を誘発するなどの問題がでてくるかもしれません。しかし、おそらく利用する人の多くは輸送のためのトラックである可能性が高いことを考えると、トラックの最高速度は機械的に時速80kmに制限されていますので、そのデメリットに関してはあまり考えなくても良い可能性もありそうです。
新しい割引きシステムの問題点
しかし新しい割引きシステムには問題点があります。それは、車両が割引適用開始時間と、割引適用終了時間にどこを走行していたのかを理解することができないことです。車を運転していた本人であれば、割引き適用時間にどこを走行していたのかわかりますが、NEXCO中日本にはそれぞれ全ての車についてどこを走行していたかを判断する方法がありません。
それでは、新しい割引きシステムでは、どのようにしてそれぞれの車が割引適用時間にどこで走行していたのかを判断しているのでしょうか?
それを図解したのが上記の図になります。
実はNEXCOは新たに高速道路の本線上にいくつかのETCアンテナを設置していて、走行する車両のデータを取得しています。そのETCゲートを通過した時刻から割引開始時間と割引終了時間に走行していた地点を特定するように処理をしています。
上記の図で説明をします。高速道路には複数のETCアンテナが適当な場所に設置されています。その設置している場所を通過した時刻を点線で示しています。上記は2カ所しかありませんが、実際にはより多くのETCアンテナがあり、そこを通過しています。
割引適用時間にどこを走行していたかは、適用時間から最も直近に取得されたETCアンテナのデータを採用します。上記の図ではETCアンテナがある場所を割引適用時刻に通過したわけではないことがわかります。しかし、適用開始時間に最も近い時間にETCアンテナを通過した時刻と、適用終了時刻に最も近い時間にETCアンテナを通過した時刻を取得することができます。また、ETCアンテナの位置は決まっているので、ETCアンテナが高速道路上のどこにあるかは分かっています。
このことから、ETCアンテナ間を通過する距離と時間を計算することができます。これにより、2カ所のETCアンテナ間を通過した時速(以下、平均時速)を計算することができます。この取得できた平均時速を利用して、割引適用開始時刻と、割引適用終了時刻にどの場所を走行していたのか想定することが可能になります。
走行距離が分かれば割引する金額を計算することも可能になります。
料金=(全区間を走行したときの通常料金)-(全区間を走行したときの通常料金)×(割引区間の走行距離)/(全区間の走行距離)×割引率
このようにして、ETCアンテナ間の通過時間とETCアンテナ間の距離から、割引時間内の走行距離、平均走行速度を計算し、実際の割引時間に走行した時間だけ割引を適用するシステムの概要となります。
具体的な計算方法
それでは具体的に、どのようにすれば割引後の価格を計算できるのか考えてみます。
現在のシステムの場合
現システムの場合、割引適用時間内に走行していれば全区間が課金されることになります。そのため、ICのETCを通過した時点の時刻から判断することが可能です。途中にETCアンテナを設置する必要すらありません。
条件としては以下の通りになります。
- ICに入った時間が割引適用時間内 上記の図で上から1番目、3番目の矢印
- ICから出た時間で割引適用時間内 上記の図で上から1番目、2番目の矢印
- ICに入った時間が適用開始時間前かつICから出た時間が適用終了時間後 上記の図で上から4番目の矢印
- 割引額を計算する
- 割引額=通常料金×割引率
ということで、出入りの時間から適用するかどうかを判断することができます。こちらは非常に簡単な方法で割引後の金額を計算することができます。出入りの時間と割引適用時間の比較と、区間の通常料金に適用する割引率を掛けるだけで割引額を計算できます。
新システムの場合
新システムはかなり複雑です。説明が冗長になりそうなので、上記の図の上から4番目の矢印で説明してみようと思います。ロジックとしてはおそらく以下のようなものになるはずです。
- 適用開始時間に最も近い時間に通過したETCアンテナのデータ(通過時間とアンテナの位置)を取得する
- 適用終了時間に最も近い時間に通過したETCアンテナのデータ(通過時間とアンテナの位置)を取得する
- アンテナの位置はわかるので、アンテナ間の距離と通過時間から平均時速を求める
- 割引適用開始時間の想定走行位置を計算する
- 割引適用開始時間とETCアンテナの通過時間の時間差を求める
- 平均時速、時間差、ETCアンテナの距離から割引適用開始時間に走行しているはずの位置を計算する
- 平均時速が80km/h、ETC通過時間が21時50分、割引開始時間が22時と仮定する
- ETCアンテナ通過時間と割引開始時間との差は10分
- 時速80km×10/60時間で約13.3kmの差があると計算できる
- ETCアンテナの位置に13.3kmをプラスした位置が割引開始時間に走行していた位置と想定できる
- 割引適用終了時間の想定走行位置を計算する
- 方法は上記と同じ
- 以上で求めたデータから割引額を計算する
- 割引額=通常料金×(割引適用時間内の走行距離/全走行距離)×割引率
ということで、現在の割引システムよりもはるかに難しく、複雑な計算をしていることがわかります。またより多くのデータを利用していることが特徴です。
新システムを先行導入した理由
なぜ4月に新システムを導入したのか
今回の新しい割引システムによってどのような変化があるのか明らかになりました。しかし、もう一つの疑問が残ります。新しい割引システムは7月以降から適時開始される予定だったはずです。なぜ3ヶ月前の今にはやくも新システムを導入しようと考えたのでしょうか?本番環境に適用するのはできるだけ遅くして、その間に多くのテストを繰り返した方が無難だと考えるのが普通だと思います。
これは完全に想像ですが(今後の意見もほぼ想像です)、おそらくNEXCO中日本は実地テストを実施したかったのではないかと考えています。
通常、プログラムをテストするときには既存に取得しているデータを実際に適用し、それでうまく動作するかどうかをテストします。しかし、今回の新しい割引システムに関するNEXCO中日本の説明によれば、「高速道路内にETC無線通信専用アンテナを設置して・・・」との記述があります。つまり現在は取得していない新たなデータを取得し、それを処理することになります。
そのため新たにETCアンテナを設置し、そこからデータを収集する環境を整え、そのデータを実際に利用しようとしたのではないかと想像しています。実際にデータを収集して保存したり、そのデータを利用して実際の割引価格を計算するというテストだけに利用すれば、実際のシステムには影響を与えないだろうと考えたのだと思いますね。
実際のデータを取得して、そのデータを利用して、本来導入したいシステムが正しく動くかどうかのテストデータとして利用するというのはよくあることだと思いますし、これに関しては特に問題があるようには思えません。
発生した現象
しかし問題は発生してしまった
それでも問題は発生してしまいました。しかも複数のETCゲートで発生するという大規模なものとなりました。ここでは、問題が発生した状況からわかることをまとめてみたいと思います。
大きなレベルで発生した
あるICだけで発生したということなら、そのICや、そのICに近いところにある原因により問題が発生してしまった可能性が考えられます。しかし、実際にはNEXCO中日本のほぼ全域で問題が発生しており、これは特定の地域の問題ではないことがわかります。
従って、ネットワークに関係した、ネットワークのかなり上位の部分で問題が発生していることを示唆していることになります。これは例えばNEXCO中日本にある情報を収集したり、料金を計算するなどの、かなりトップレベルにあるシステムに何かしらの問題が発生した可能性を示唆していると思います。
発生時間はまちまち
これは結構、様々な想像が広がる要因になると思うのですが、それは、すべてのICで問題が発生したのではなく、様々な場所で様々な時間で問題が発生したことです。以下に問題が発生した時刻のリストを示します(一部)。
最も右の欄がETC運用の停止日時となっています。これをみると、停止日時には法則性はなく、最初の停止日時から24時間が経過してから停止したICもあり、バラバラです。さらに道路による法則性も、地域による法則もないように見えます。
このことから、何かしらの問題が突然あるときに発生し、それ以降はETCゲートが利用できなくなることが示唆されています。つまり、ETCゲートが停止してしまった理由には、何かしらの条件があったことが示唆されています。
通行可と閉鎖を繰り返すETCゲート
これはソースを提示できないのですが、ETCの仮復旧後のある番組のニュースを見ていたときに、ETCゲートがかなりおかしな動きをしていたことを目撃しました。そのおかしな動きというのは、以下のようなものです。
そのETCゲートは1分程度は正常に「ETC通過可」みたいな表示がされていたのですが、ほぼ1分に1回、または2分に1回ほど、体感的にはかなり速い間隔で数秒程度、「閉鎖」に切り替わっていました。定期的に閉鎖と通行可の表示が切り替わっていたので、閉鎖の表示をみて急ブレーキを踏んだ車が後続車に追突される可能性があるのではと考え、かなり驚いたことを覚えています。
仮復旧なので仕方がないのかもしれませんが、なぜこのETCゲートはかなり短い間隔で定期的に「閉鎖」状態になり、そして数秒後に「閉鎖」状態が解除され、通常状態に戻るようなことを繰り返したのでしょうか?
このことはNEXCO中日本が完全復旧とリリースを出したあとでも、動作的には不自然な動きをしていたことがわかります。
考えられる原因は?
考えられる原因は何か
ここまで、どのような変更があったのか、そしてどのような具体的な現象があったのか確認してみました。ここからが本来の目的で、なぜ実際に不具合が発生してしまったのか、考えてみたいと思います。
可能性1 時間内に処理できなかった
上記のように新割引システムでは、様々なデータを取得して、さらにそれらのデータを利用して複雑な計算をして割引額を決定します。システムを改修したときに、新しい割引料金までを計算していたかどうかは不明ですが、もし仮に新しい割引額を計算していたとしたら、多くの車が通行する中で、多くのデータを処理して新しい割引額を計算しているときに、想定時間内に計算することができず、タイムアウトが発生してシステムが停止してしまった可能性は考えられそうです。
ETCでは、車がある一定の速度で通過するため、その範囲内でデータを計算して、その結果としての通行量をETCゲートに表示させる必要があります。計算が複雑になり負荷が高くなったときに、ETCゲート側で想定する時間内に求める結果が得られなかった場合、サーバ側に何かしらの問題が発生したと考え、フェイルセーフの観点から自動的にそのゲートを利用不可能にした可能性は考えられると思います。
それぞれのETCゲートで時差が生じたのは、その都度、通過する車に関するデータ量が異なるため、特に長距離を走ってきたなど、複雑なデータ計算が必要となった場合に計算が間に合わず、処理落ちしてしまった可能性などが考えられそうです。
可能性2 記録するデータが多すぎて処理できなかった
基本的には上記と同じですが、こちらは保存するデータ量が多くなりデータベース側で情報の記録が処理できなくなってしまったことに起因する可能性です。
既に説明した通り、これまではICの通過時間だけで割引時間内に走行していたかどうかを判断すればそれで事足りました。しかし、今後は高速道路上に複数のETCアンテナを設置して、どの車(どのETCカード)が、特定のETCアンテナをいつ通過したという情報をサーバに記録しておく必要があります。
もし、この情報量が多すぎて処理できずに、正確なデータを保存できずデータが欠損してしまう可能性はあるかもしれません。また、情報が完全に保存されていないのに、既存のデータの読出し処理があり、完全なデータを提供できなくなってしまった可能性はあるかもしれません。
それぞれの車に関して割引額を計算しようとしたときに、一時的にデータが保存されておらず、問い合わせた割引額が規定時間内に返答されなかった場合などに、何かしらの不具合があったとして、ETCゲートが自分の判断で通過不可能にしてしまった可能性は考えられそうです。
可能性3 データに不整合が生じた
上記にも記述があり、それとほぼ同じですが、新システムにすることにより新たにETCアンテナを通過した時間を、新たに記録するようになりました。これらのデータの処理方法に変更が生じ、既存のデータの持ち方や、データの判断の仕方が異なったため、本来の想定するのとは異なる数値のデータが発生してしまい、それによりシステムが判断できずに、安全確保のためフェイルセーフで自動的にETCゲートを閉鎖した可能性は考えられそうです。
今回のシステムは割引の計算方法が複雑になっていることから、より多くのデータから計算したり、想定したりして割引額を計算しているわけですが、それぞれのデータに一つでも想定以外のデータが含まれていたり、計算した結果、想定していない数値になったりすることでシステムが停止してしまう可能性は考えられるのかなと思います。
この場合でも、あるケースでは計算して結果も通常の数値の範囲内に収まる場合と、収まらない場合がでてくるので、時間差でトラブルが発生したことも説明できそうです。
というわけですが、いかがだったでしょうか?実際のETCトラブルの原因については、すでに報告されているようですのでNEXCO中日本のサイトをご覧になってみてください。
今回は割引額の適用時間を説明するためのお絵かきをしてみることが目的の一つでしたが、忘れていた方法や新しい方法などを発見して面白くお絵かきすることができました。
(source)ネクスコが提供する新割引システムを説明するPDF
- ソニー α7R IV、α7C、α7 III、ZV-E10新ファームを公開 無線接続セキュリティ向上ほか
- ソニー FE 400-800mm F6.3-8は800mmに到達したズームで最高の1本だ
- 価格が高くなってもNikon Z50IIにボディ内手ぶれ補正を搭載したほうがよかった!?
- 米国で中国製ソニーレンズが消えた? 関税の影響で輸入できず販売を停止か
- ソニーα1 II、α1、α9 IIIの新ファームを公開 いくつかの不具合を改善
- ニコン Nikon Z9新ファーム公開 法人向けリモート撮影機能対応ほか
- ソニー50-150mm f/2.0 GMの全貌が明らかに?画像&仕様が流出 4月23日発表か?
- キヤノン製品、米国で値上げを検討か? 世界価格にも波及の懸念
- ニコン Nikon Z6IIIに鳥認識モードを追加へ 年末までに提供予定
- 富士フイルム 米国での製品予約を一時中止 関税の影響が甚大か!?
コメント
コメント一覧 (2件)
割り込み処理を入れるとトラブルの原因になることは良くある事
です。
自分で作ったプログラムならば割り込み処理を入れるとどこに
影響が出るか大概、分かりますが他人の作った物はよく分からない
場合が多いです。
事前に様々な条件を入力して異常がないか気を遣いますね。
カメラのファームウェアも日常茶飯事です。
いろいろな考察をされてて、なかなか「読ませる」記事でしたよ。
図解の描画の練習も兼ねて、ってところで当方、この人のことを思い浮かべました。
加藤文宏という写真家で、2000年代初めには「加藤文」の名で小説を4作発表し、現在はジャーナリスト的な活動を行って、noteで有料記事(一部無料公開あり)にして発表している方がいるのですが、その人が図解をよく使われます。
主義主張はともかく、文章の組み立て方と図解の使い方には「さすが一線で活躍された人だ」と舌を巻くものがあります。
管理人さん、気になりましたら一度ご覧ください。インスピレーションがあるかも。