「IC乗車券改修に1年 (消費税)ベタ打ちだと!?」,それデマじゃね?

http://p.twipple.jp/JfSVb
http://www.shopbiz.jp/nf/news/112667.html

JR東では消費増税で運賃を引き上げた場合、5月末現在で約3968万枚発行しているスイカのシステム改修が必要となる。改修の具体的な検討は「運賃の引き上げ自体が決まっていない」(JR東)ため始めていないが、「システム改修の計画作りや乗客への周知期間も含めると1年数カ月かかるだろう」(同)と話す。スイカを導入していなかった1997年の消費増税ではシステム改修に30億〜40億円の費用と3ヶ月程度の期間がかかった.巨大化したスイカシステムの再起動時のシステムダウンや運賃の計算ミスを避けるため,改修には費用,期間とも前回を上回るとの指摘もある.

改修が手間なのは「スイカのシステムは一部のプログラムに消費税をそのまま書き込んでいるため」と関係者は開かす.例えば「値段=製品価格×5%」といった具合だ.膨大な本数のプログラムから消費税関連の記述を見つけ出し,適切な値に無おすだけで大変な時間と労力が必要だ.

イカは2001年の発行以来、西日本旅客鉄道JR西日本)の「ICOCA(イコカ)」などJR各社のIC乗車券のほか、首都圏の私鉄・バスが加盟するIC乗券「PASMOパスモ)」と相互乗り入れをしている。運賃変更をした場合、私鉄とJR間などを乗り継いで正しく運賃計算されるか確かめる必要がある。その数はスイカパスモの連携だけでも約12億3千万通りと膨大な作業が必要となる。

基本的に中の人に聞いてみたい感じだけど,たぶんよく分かってない記者が適当に書いたんじゃないかなあ.*1 *2

さらに,この「ついっぷるフォト」で挙げられてる写真では,意図は不明だが前後を切り落とすことで,さらに誤解を招くような文章になっていたようだ.もしこれが故意に行われたものならば相当に悪質な釣り記事と言えよう.

そもそも鉄道運賃って内税でしょ?「営業キロ×定数×1.05(or 1.03)」なんて計算していたら,料金には端数がでるはず.*3 しかも乗り継ぎ/乗り入れの修正なども必要なので,実際の料金はさらに複雑になる.*4

だから5%を切り分けていようといまいと,内税である限り税率を変えて自動で計算させるとことはできず,料金表は一から手作業で作り直しだと思う。*5一番の本質は内税か外税かの部分にあるのでは.*6 運賃を決めるためのロジックが複雑なのは,以下の資料を見ただけでも分かると思う.


そしてテストについても全駅,全乗り継ぎの全ての組み合わせで総当たりでやる必要がある.*7基本計算部分は自動テストがあっても料金自体は目視で一個ずつ確認するしかないし,ハードが絡む部分は手動になるから,これもそれなりに高く付くはず.*8


同様な問題は内税である缶ジュースの自販機なんかでも抱えているのではないか.個々のジュースが110円の物が据え置きなのか120円になるのかそれとも130円になるのかはケースバイケースであって,税率を単純にかけてるわけではないから.*9ただし鉄道運賃と違って,種類も少なく組み合わせもないし,乗り継ぎ/乗り入れとかの複雑な作業もない.ある日一斉に全部置き換えなければならないわけでもないし,幾つかの自販機でトラブルが発生しても、誰も気にしないので,作業は随分単純になる.

この辺りを見たら載ってるのかな.

鉄道システムへのいざない

鉄道システムへのいざない

鉄道とコンピュータ (情報フロンティアシリーズ)

鉄道とコンピュータ (情報フロンティアシリーズ)

関連

「消費増税法案が衆院可決、JR東のスイカ、IC乗車券、改修に1年。 」

http://www.shopbiz.jp/nf/news/112667.html

費用も前回上回る懸念 相互連携、システムが複雑

 消費増税を柱とする社会保障と税の一体改革関連8法案が26日に衆議院本会議で可決された。大半の社会システムは2014年4月からの増税に迅速に対応できそうだが、東日本旅客鉄道JR東日本)のIC乗車券「Suica(スイカ)」など鉄道系のシステムで改修に1年超かかるとの懸念が浮上している。複数の他社とIC乗車券を相互連携し、駅以外でも活用され、システムが複雑化しているためだ。

 JR東では消費増税で運賃を引き上げた場合、5月末現在で約3968万枚発行しているスイカのシステム改修が必要となる。改修の具体的な検討は「運賃の引き上げ自体が決まっていない」(JR東)ため始めていないが、「システム改修の計画作りや乗客への周知期間も含めると1年数カ月かかるだろう」(同)と話す。イカを導入していなかった1997年の消費増税ではシステム改修に30億〜40億円の費用と3カ月程度の期間がかかった。巨大化したスイカシステムの再起動時のシステムダウンや運賃の計算ミスを避けるため、改修には費用、期間とも前回を上回るとの指摘もある。

 改修が手間なのは「スイカのシステムは一部のプログラムに消費税をそのまま書き込んでいるため」と関係者は明かす。例えば「値段=製品価格×5%」といった具合だ。膨大な本数のプログラムから消費税関連の記述を見つけ出し、適切な値に直すだけで大変な時間と労力が必要だ。

 スイカは2001年の発行以来、西日本旅客鉄道JR西日本)の「ICOCA(イコカ)」などJR各社のIC乗車券のほか、首都圏の私鉄・バスが加盟するIC乗券「PASMOパスモ)」と相互乗り入れをしている。運賃変更をした場合、私鉄とJR間などを乗り継いで正しく運賃計算されるか確かめる必要がある。その数はイカパスモの連携だけでも約12億3千万通りと膨大な作業が必要となる。

 またIC乗車券の電子マネー機能は駅以外の小売店など12万7000店舗以上に利用が広がり配慮が必要になる。パスモなど他の交通機関系のIC乗車券もシステム改修などに時間がかかる可能性もある。

 一方、他のシステムでは大きな改修は必要ない見通しだ。小売店のレジで使われるPOS(販売時点情報管理)レジスターなど機器の多くも「前回の消費税導入時に今後消費税が上がっても一部の数値をいじるだけで済むように改修を終えている」(NEC)。1997年の前回の消費増税時に大規模なシステム改修が相次ぎ“特需”とも呼べる状況となったが、「多くのシステムでは内部の消費税率変更とその後の動作確認作業が発生するが作業は比較的に簡単だ」(日本IBM)という。(林英樹)

 ▼スイカ JR東日本などが導入している非接触型ICカード方式の共通乗車カード・電子マネーパスモなど他の交通機関との相互利用も可能である。2001年から徐々に導入され、データ処理回数は1日当たり2400万件と、大手銀行の勘定系システムに匹敵する規模になっている。

すくなくともこっちの方だと,

  • Suica導入前でも改修には時間と金がかかったこと
  • 乗り継ぎの組み合わせが膨大な数に上ること
  • 運賃の引き上げが決まってないので,まだ改修作業には手をつけていないこと.(ウラを返せば改修作業は運賃引き上げに基づいて行われるということでもある.)

ということには言及されている.


とはいえ,

  • 通常は外税となるPOSシステムと内税のSuicaとでは問題も対処法も全く異なる.
  • Suica含め,運賃改定に伴う改札機や券売機等の改修には1年以上かかるけれど,消費税のハードコーディングはその一部でしかない

ということが明記されていない.全体としては読者に誤解を与える悪質な記事だと思う.

http://b.hatena.ne.jp/entry/p.twipple.jp/JfSVb

  • id:Assume #改札機 なんか勘違いしたブクマが並んでるのだが・・・。 #タリフ 案件に改札機やら券売機に計算式仕込むわけ無いだろ。 / 違算除け・ミス防止のため全パタン検証済みのテーブルで持たせるのが常識だ。

多分これが正解なんでは.*10

ある定価に税率5%をかけるんじゃなくて,税金込みの営業キロに対する料金があって,任意のA-B駅間の全料金を個別に計算して,乗り継ぎ/乗り入れがある場合は適切な料金を取得して,そういうふうにして作られた全駅間の料金表(タリフ)の一覧(或いはその一部)を各改札機内部に持ってるんじゃないかと思う.*11 *12 *13


おそらくは改札機の性質上,開発のボトルネックがテストと完璧な動作確認になるので,内部のアルゴリズムは可能な限り単純に作らなければならない.テーブルで持たせるのもそのため.複雑な演算をさせることも理論上は可能だが,テスト工数が増えるのでかえって高くつくことになるだろう.

  • id:quaoar このプログラムというのは何の計算をする部分なんだろう。JRの輸送約款で定められている運賃計算式に「消費税率」というパラメータは登場しない。
  • id:stealthinu アホか?と思ったがブ米読んでたらそうでもない感じ。そもそも切符の値段をその場で5%かけてとかはやってない感じ。最終的な売上の決算時期と消費税率変更時期の違いとかの問題ではという指摘あり。
  • id:suzuki_kuzilla Suicaでの支払いに消費税率が関係あるんだろうか。端末に表示される金額は既に税込みだよね?
  • id:taqpan 税制よく分からずに言うけど、どの決済のタイミングから税率が変わる、みたいな話に対応してないシステムが多そう。なので#defineもアウトかと。
  • id:overleo さすがにこの記事が間違ってるんだろ、そんなベタ打ちしないよ。問題は別のところにあるんでしょう。兎にも角にも消費税の処理は思っている以上にかなりめんどいので関わっている人は早く逃げたほうがいい。
  • id:nisshi_jp 運賃って内税だろうし運賃改定の枠組みで対処するというのはさすがに無理?実はわかるようで問題の所在が意外とわかってないかも私/はてなは業界の人多そうなのに特需というより、あーあな感じなのがおもしろい

私も中の人に聞きたいくらいだけど,むしろ「運賃改定では毎回テストでこのくらいかかってますよ」という話なのかもしれない.消費税が特殊なのは,全国の全ての鉄道,バス,その他全ての交通機関等が一斉に運賃改定しなければならないこと.FeliCaを使用している交通機関だけでも相当なものになるのでは.

  • id:IshidaTsuyoshi 別に「ベタ打ち」じゃなくても改修費用はすごくかかるわけで、まるでそれだけが原因であるかのように言うのはダメだよ。 2012
  • id:geekpage #defineしてあったとしてもコンパイルし直したらテストするよなぁとか思った。というか、かなり昔のコードって、そのまま今のシステムでコンパイルが通るのか問題とかも踏みそう。

改札機のファームウェアレベルでの更新になるのかなあ.いずれにせよ改札機のソフトを書き換えれば,テストし直しは避けられないのでは.

  • id:kimunny 組み込みはよくわからんが、速度が要求されるからハードコードしてるんじゃないの。なんらかの意図があってやっているはず。
  • id:u4k すでにブクマにあるよいうに、Suicaは高速処理を極限まで追求したコードになってるので、こういうプログラムになってたんだと思う。それが改修時はアダとなる。…よくあるんじゃないかな。
  • id:FunnyBunnyDizzy 「値段=製品価格×5%」やすっ!!!! / Suicaアーキテクチャの論文読んだことあるが、0.1秒以内に最安ルートの検索、乗継を含めた運賃計算する必要があり、コードは極限まで高速化した的なことが書いてあった気がする
  • id:tamtam3 ふむ・・・IC乗車券って、単純に決められた金額を足し引きだけの仕組みじゃないの?消費税の計算なんて組み込む必要すらないと思うんだが??・・・それとも発券システムまで含めているのか?

むしろ「いくら引き落とすか」の部分の料金表自体が変わるのではないかと.消費税計算は料金表を作る段階で織り込み済みのはずだから.

http://b.hatena.ne.jp/entry/www.shopbiz.jp/nf/news/112667.html

  • id:quaoar Suicaシステムの改修じゃなくて運賃値上げの準備期間が(システム改修含め)1年以上。ベタ打ち云々より広範な影響範囲を考慮しながらの改修計画そのものが手間だという話に思える。

  • id:Guro "約12億3千万通り"…/運賃に関しては都度税率計算している訳ではなく、運賃表を参照してると思うのだがなぜだろう?/システムてき影響を考えると2度もやるのは勘弁願いたい。あとで一度に10%じゃだめですか。

たしかに.

消費税の二段階引き上げなんて,現場のことを知らないバカでないと思いつかない発想だな.手間が全て倍に増えるんだぞ?

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

http://www.juse.or.jp/sqip-sympo/
http://www.publickey1.jp/blog/12/_1040.html
http://www.publickey1.jp/blog/12/_1040_1.html
http://www.publickey1.jp/blog/12/_1040_2.html
追記

テスト対象となる実機用の運賃ソフトウェアと、検証用の運賃ソフトウェアは別のチーム、別のアルゴリズム、別のプログラミング言語で作ります。実機用はC++ですが、検証用はJavaで言語特有のバグをなくそうとしています。でも検証用のソフトウェアにはそんなに予算が掛けられず少人数で作っているので、実機用はどうやって作ったのか聞きたくなるのですが、そこを我慢して作る。

基になるデータベースも間違っている可能性があるので、検証用は別に手入力してデータのチェックも合わせてやります。

テストは100台くらいPCをレンタルして、がーっとやります。だいたい2週間から長いと3カ月くらい。このとき何に時間がかかるかといえば、間違った原因を探していくことですが、1000万パターンあると0.1%間違えても1万件とかになります。でも間違っているリストを見ると目黒ばっかり間違えていると、それで目黒のデータが間違っているというのが分かったりして。

間違いがあればその原因を解析しなければいけないのですが、検証用の運賃計算ソフトウェアが間違えることももちろんあるので、これをきっちり作らないと検証用のソフトウェアの方のデバッグをしているようになってきてしまいます。でもお客様には検証用のも合わせて2つソフトウェアを作るから費用を2倍にしてくれとも言えないので、頑張って作るしかないです。

「鉄道運賃、1円刻みが浮上=消費増税に合わせ−IC乗車券限定で」

http://www.jiji.com/jc/c?g=ind_30&k=2013050200648
http://headlines.yahoo.co.jp/hl?a=20130502-00000086-jij-bus_all
後日談.

現在は10円刻みとなっているJRなどの鉄道運賃について、1円刻みにする構想が浮上していることが2日分かった。関係者によると、複数の鉄道会社が消費増税に合わせて導入を検討しており、増税分をスムーズに運賃へ転嫁するのが主な狙い。駅券売機で10円未満の硬貨を利用可能にするのは技術的に困難なため、交通系ICカードでの乗車に限る方向で調整している。

こういう話も出てる.システム開発よりは運賃体系の話か.

国土交通省は、鉄道とバスのIC乗車券で消費税率の引き上げ分を転嫁した「1円単位」の運賃改定を認める方針を固めました。
こうした内容を盛り込んだ基本方針を近く公表し、各社が料金改定を申請する見込みです。


国土交通省は、来年4月の消費税率の引き上げに伴う交通運賃の改定に向けて、鉄道とバスのIC乗車券について増税分の端数をどう処理するか検討を進めてきました。その結果、SuicaやPASMOといったIC乗車券が広く普及し、定着したという判断から、その利用者を対象に「1円単位」の運賃の値上げを認める方針を固めました。
ただ、鉄道の券売機やバスの料金箱は当面「10円単位」のままで変更がないことから、同じ区間でもIC乗車券と従来の切符とで料金が異なる「二重運賃」になる可能性があります。
その際、10円単位となる切符の運賃がIC乗車券の運賃と同じか、高くなるように端数の切り上げなどで調整されるということです。1円単位での運賃改定は、JR東日本のほか、東急電鉄小田急電鉄東京メトロなど、IC乗車券の利用者が多い首都圏の各社が検討していて、国土交通省が正式に方針を明らかにしたあと、改定を申請する見込みです。

http://www3.nhk.or.jp/news/html/20131017/k10015334791000.html

*1:たとえば「運賃は内税なので,言わばコード中に消費税率が埋め込まれてるようなものですよ。」→ 「プログラム中に消費税をそのまま書き込んでいるため」みたいな形で記者が脳内変換したとか.

*2:「消費税をハードコーディングはしていないはずだけれど,ひょっとしたらどこかに含まれているかもしれないので,含まれていないことを確認する作業が必要だ」というなら納得.こういう悪魔の証明的作業は金と時間がかかるんだ.どこに使われているか既に分かっているなら改修はむしろ楽.

*3:10円単位で切り上げかもしれないが,実際には十円刻みでさえないようだ.

*4:もし方式を外税に変更するとなると,全国の全ての券売機を交換しなければならなくなる.今みたいに内税の限られたボタンが並ぶのではなく,たとえば10キーで料金を打つようなどの方式にしないと,ボタンの数が足りなくなるから.もちろん内部のソフトもハードもそれにあわせた新規設計になるだろう.

*5:料金表作成支援システムくらいはあるかもしれんけど.

*6:料金が変わるので,券売機の改修も必要になるが,まあSuicaみたいに自動で処理する部分が少ないので,金額の見直しだけで済むんだろう.

*7:本文をみると「その数はスイカパスモの連携だけでも約12億3千万通りと膨大な作業が必要となる。」だそうだ.

*8:そもそも料金改定の頻度にくらべれば消費税率変更の頻度の方が少ないしね.たとえ外税だったとしても改札機の場合はハードコーディングした方が,全体の変更コストは安く済むのかもしれない.

*9:http://www.news-postseven.com/archives/20120701_124540.html http://hamusoku.com/archives/7229312.html

*10:「タリフとは、運賃を算出する上で必要な運賃表データのことです。
物流業界では事業開設にあたり、その提供価格を運輸省原価計算書と共に提出する必要があります。原価計算書を提出しない場合は運輸省が計算した標準運賃表をもとに事業を行うことができます。この「標準運賃表」に当るものをタリフと呼びます。「標準運賃表」はトンキロ【重量×距離】で計算しており、2年に一度改訂され平均して5%程度の運賃アップがなされてます。 」だそうだ. http://www.buturyu.net/ta/tariff.html

*11:コンビニやスーパーのPOSレジなんかはまた別の話.あれは外税が多いから.

*12:基本に返れば,大都市の鉄道なんて最短経路問題でもあるので.最短経路問題は難しい問題ではないけど,実行時に解かせるのは時間の無駄でしかないしテストの効率も悪くなる.そういう無駄な作業は実行時ではなく事前に行っておいて,ハードコーディングするというのは初歩的な最適化だと思う.

*13:Suicaにはハンディーターミナルもあるので,そちらのプログラムの変更とテストも必要だな.おそらく他の交通計カードでも同様.