自動改札機の運賃計算プログラムはいかにデバッグされているのか? 10の40乗という運賃パターンのテスト方法を開発者が解説(前編)

2012年9月24日

ふだん何気なく使っている鉄道。改札を降りるときにICカードを自動改札にかざすと、「ピッ」という音と共に一瞬のうちに運賃を計算してくれます。けれど、複数の路線を乗り継いだり、途中で定期券区間が挟まっていたりと、想像しただけでもそこには膨大な組み合わせがあります。それでも運賃計算プログラムはわずか一瞬で正しい運賃計算が求められ、バグがあったら社会的な一大事にもつながりかねません。

爆発的な計算結果の組み合わせがあるはずの運賃計算プログラムは、どうやってデバッグされ、品質を維持しているのでしょうか?

9月12日から14日のあいだ、東洋大学 白山キャンパスで開催された日本科学技術連盟主催の「ソフトウェア品質シンポジウム 2012」。オムロンソーシアルソリューションズ 幡山五郎氏の講演「自動改札機ソフトウェアの品質向上の取り組み 厳密な仕様、もらさないテストを目指して」では、その運賃計算プログラムの品質についての取り組みが紹介されました。この記事では、そのダイジェストを紹介したいと思います。

本記事は、前編中編後編の3部構成です。まずは前編。

進化する自動改札

オムロンソーシアルソリューションズ ソリューション事業本部 開発センタ コア技術開発部 幡山五郎氏。

fig

私は数理物理学というのをやっていまして、以前は証券会社で仕組み債の値付けのシステムなどを作っていました。現在の会社に転職してから「じゃあ計算くらいできるやろ?」と運賃計算にまわされまして(会場笑い)。しかしすごく難しいんです、これが。

fig

今日はその運賃計算についての仕様とかテストの話をしようと思います。

その前に自動改札機について。

昔は駅員さんが切符を処理していたので、大変なときはお客さんがあふれてしまうことがありました。そのために自動改札が導入されていきました。

現在のような自動改札は、オムロンが阪急の北千里に導入したのが最初でした。最初は関西から始まったというのは、関東は相互乗り入れなどがあって複雑だったためです。

自動改札機で大事なのは、人の流動を阻害しない、でも間違えずにちゃんと運賃をもらいましょう、ということ。細かく書くと6つありますが、これらをコンセプトにしています。

fig

自動改札機では、切符を入れてから出てくるまで0.6秒。これはだいたい人が歩く速度を基準にしているらしいのですが、この時間の中でいろいろやっています。

fig

切符を入れるとモーターの下が速くて上が遅いといった仕組みで複数の切符を分けて整列させ、裏表反転。昔は裏で入れると裏のまま出てきたのですが、これだと上下両方に読み取り機が必要だったり、裏だと取り忘れが多かったそうで、いまは裏表反転機があって、どう入れても表で出てきます。

磁気面にリードとライトをしたあとベリファイしています。この読み取って書き込むそのあいだに運賃計算をしています。

重ね合わせ機構は取り忘れないように複数の切符を重ねるのですが、三枚でもいけます。

搬送機はよくできていまして、でもIC化されるとなくなっていくので、ぜひ今のうちに見ておいてください。

ICカードの自動改札は0.2秒で処理を行います。扉も指を挟まないようにとか、最後はゆっくり締まるようにして当たっても痛くないように制御するようにできています。

fig

自動改札が故障で止まったりしないようにすることも大事です。ひとつでも止まるとお客さまがたまってしまいます。ただ、止まる原因の多くはやはり搬送部なんですね。なので搬送部は以前にくらべ改良してシンプルになっています。

電源も安定化のために気をつけていますとか、異常があっても自分で復旧できるようにするとか、搬送部がだめなときにはICカードだけで動けるようにするなど、人の流動を阻害しないようにいろんな機能がついています。

fig

プログラムのダウンロードも、昔は専門の作業員がその場へ行って終電から始発のあいだにアップデートしていました。でもICカード化してから相互乗り入れがすごく増えてきて、そうすると神奈川の電鉄会社の運賃の変更でも関東全域で考慮しなくてはいけないので、自動改札機が稼働中でもアップデートできるようにしました。自動的に一世代前に戻る、という機能もあります。

そんなわけで、最近ではいろんな鉄道会社がばらばらな時期に運賃を変えるとアップデートが大変なので、3月の中旬頃に一斉に変更するようになっています。われわれもそれに合わせてプログラムの修正をしますので、季節労働者的です。ちょうど今頃作り上げる時期で、これから恐怖のテストが待っています。

次の記事では、本題である運賃計算のテスト手法を解説。

(追記 2014/6/6:講演者からの申し出により1枚目のスライドを削除しました)

Tags: ソフトウェアテスト・品質 プログラミング言語 殿堂入り

このエントリーをはてなブックマークに追加
ツイート
follow us in feedly





タグクラウド

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本