ICカードこれひとつのCSV出力について

現在、基本的な動きは完成しているCSV出力について、本流にマージ(※)する前に考えなければならないことを幾つかメモしておきます。

※別の開発用ブランチからリリース用のブランチに混ぜる作業のこと

CSV出力機能の大まかなコンセプト

  • 機能については追って追加していくとして、まずは基本的な内容が出力されることを目指す。
  • 出力される場所(ディレクトリ)は固定。(将来的にはディレクトリを選ぶ機能を付けたい)
  • 出力するファイル名も固定。IDmまたはカードに付けた名前 + .csv とする。
  • 出力するもの、しないもの等も、いずれ選択可能にする。
  • 文字のエンコードも選べるようにするが、まずはUTF-8のみとする。
  • カンマ(CSV)とタブ(TSV)も選べるようにするが、まずはカンマ(CSV)のみとする。

ICカードこれひとつでCSVを出力するにあたり生じる問題点

CSVを出力するICカードリーダーアプリは他にも色々あるようです。弊社はそれらがどういった仕様になっているかは正直よく分かりません。

ただ「ICカードこれひとつ」の場合、非常に多機能・高性能であるため、内部に持つデータをどうやって出力すれば良いのだろうか、という問題点・疑問点が、実装しながら数多く浮かび上がっております。

このアプリの場合、交通系ICカードも、WAON等の電子マネーも分け隔てなく使うことができますが、それらは自然にCSVとして出て行く必要があります。しかしカードごとの仕様差もあり、どう実装するか悩ましい点が、かなりあります。

①支払いとチャージ同時をどうするか

WAONやナイスパスその他のカードでは、オートチャージを認識し、チャージ額と支払い額を求めています。

アプリ画面では一つにまとめて表示していますが、実際のカード内データとしても、支払いとオートチャージは別れていません。

これを、CSVだからといって別の行に分けるのは難しいため、まずは処理を軽量にするために使用金額とチャージ金額でカラムを分けることにしてみました。

家計簿アプリ等での使い勝手がどうなのかは疑問なので、使ってみてから判断して下さい。問題あれば改善方法も合わせてご提案いただければ幸いです。

②金額が複数あるカードはどうするか

manaca、ayuca、SAPICAなどのように、アプリでポイント額併記のカードの場合、ポイント額は出力しないとしても、ポイント払いをどうしたらいいのか?という疑問があります。ポイント払いがCSVに出て行くと、家計簿アプリ等での処理が混乱するのではないかと危惧します。

ポイントとチャージ額の双方を使った支払いなども可能性としては0ではないので、これもどう出すべきかは考えないといけない気がします。

また、CI-CAで実施しているように、通常額と昼割額の複数の金額がある場合、出力は分けるべきかどうか迷います。これは合算で出すことを考えています。

③店名や駅名が確定できない場合をどうするか

WAONでは原則として重複しませんが、交通系ICカードの電子マネーでは無数に重複しますし、自動的にはどれが正解か分かりません。

また駅名も、基本的には重複はしないはずでした。最近までは。

ここ最近は運賃を隣駅と同じくするという方法で、つまり駅番号も隣駅と同じくする方法で運賃表の変更をせずに済ませ安く開業させるのが流行しています。このため現在では残念ながら駅名すら重複してしまいます。

とりあえず、重複したら空欄にする、重複していなければ(店名等が)仮に不正解でもそのまま出力、などを考えています。仕方が無いですね。

補足

それ以外でも、気付いたことがあればブログやTwitterに書いていきたいと思います。

2017/12/10(日)12:48 |Comments(0) |Trackback(0)

製造開発 | ソフトウェア開発 | コンピュータ | [編集]

▲ページトップ

ICカードこれひとつの課金サービスについて

「ICカードこれひとつ」

現状では、期待していた広告収入はほぼない状態です。
また当初はアプリ内課金による月極契約を予定しておりましたが、長期にわたる実験において、Eclipseでアプリ内課金が正常に動作することは遂になく、この方法でのサービス提供も無理と判断するに至りました。
他の方法をGoogleに問い合わせておりましたが、アプリ内課金以外の月極契約はないとの回答が得られましたので、つまり、Google経由で課金をすることは現状では不可能ということになります。

しかし莫大な開発コストが既に掛かっており、この回収と今後も掛かる開発費を工面する必要があるため、このアプリを末永く維持し改良し続けるためには、何かしらの方法で開発資金の提供を利用者の皆様にお願いせざるを得ません。


課金サービスを提供する事業者は様々あるため、どこかと契約して、という方法もあります。しかし今から始めるとなるとまた追加で長い時間が必要となりますため、まずは弊社内で可能な方法で何とか対応をしていきたいと考えております。


仮称 「ICカードこれひとつ 開発サポーター制度」

①契約期間は、まずは1ヶ月、3ヶ月、半年程度の期間ごと (いずれは1年なども)
②契約グレードは、まずは「各停」「急行」「特急」の3種類 (3種全部など重複契約も可能)
③メールアドレス、期間、契約種類、入金予定日などの補足をアプリより申請し、注文番号を得る
④依頼人名の前に注文番号を付けて、楽天銀行またはゆうちょ銀行に入金

↓弊社作業
⑤弊社が入金確認
⑥ユーザーデータベースに登録し、メールでパスワードを通知
↑弊社作業(あわせて要1〜3営業日)

⑦アプリに、メールアドレス、注文番号、パスワードを入力し、認証
⑧正常に認証が終われば課金機能が利用可能に

⑨契約期間はアプリから確認可能 (残り少なくなった場合に表示する機能も搭載予定)
⑩期間満了から数営業日前までに、④と同様に入金すると、弊社側で契約期間の延長作業を実施



欠点など
・クレジットカードは使えません
・期間ごとに、いちいち送金をいただく必要があります
・送金手数料はお客様負担となります(楽天→楽天は無料、ゆうちょ→ゆうちょも月3回までは無料)
・全て手作業ですので、入金確認までしばらくお待ちいただく必要があります


今後
この方法で資金の目処が付き次第、Android Studioでアプリを作り直し、アプリ内課金に移行したいと考えております。


いまできる対応はこの程度となってしまいますが、
このような方法でも良いと思われる方は、拍手ボタンを押していただければ幸いです。

2017/10/31(火)14:38 |Comments(0) |Trackback(0)

製造開発 | ソフトウェア開発 | コンピュータ | [編集]

▲ページトップ

いわさきICカードの停留所番号について(5回目) 最終手段

詳細は1回目である「いわさきICカードの停留所番号について」をご覧下さい。

最終手段


いわさきICカードですが、これまで全9バイト(72ビット)のうち、途中や下位の部分比較をすることで、バス停番号を見いだす調査と研究をしてきました。

下位7バイト(56ビット)の比較で、おおむねバス停番号が確定できそうではありましたが、実際にはこれでもだめで、重複が生じます。

そこで今回、諦めて、できるだけ避けていた全桁比較を実施することとしました。
具体的には従来の実装下位7バイトに、さらにもう一つ情報を加え、上位2バイトをあわせて全9バイトを比較する形としたものです。

これまで下位7バイト用として登録された情報については、かなり大変でしたが全て再チェックし、DBに不足する2バイト分の情報を書き足す作業が完了しました。ですので公開中バージョンと同等以上のデータが再登録されています。
後にも書きますが乗車と後者は番号が違うので、これによっていわさきのDBデータ量は当社比2倍に増大しました。


重複するかどうかはまだ不明


同じ車体の同じ系統の同じ停留所なら常に同じ9バイト(72ビット)もの情報をカードに書くのかどうか、はまだ不明です。今後明らかになることでしょう。
そして、この9バイト(72ビット)もある番号が本当に一意なのかどうかも謎です。これも今後明らかになることでしょう。


乗車と後者は原則として番号が違う


理由は不明ですが、乗車と後者では上位2バイトの内容が異なります。
登録については報告があったものに限るので、同じバスの同じ系統の逆方向で同じバス停に乗ったとしても、乗車と後者は別の登録になるので表示はできなくなります。


今後起こること


どうやら上位2バイトから4バイト程度で車体あるいはカード端末を一意に表わし、その中で他の番号と全く調整を取っていない附番方式で系統、そして停留所番号を振っているのではないかと予想されます。

全情報比較となったことから、従来はたまたま一致して正常表示されていた停留所や営業所も、今後はたまたまでは表示されなくなります。完全一致が表示の条件となるためです。

このため特に営業所や、鴨池・垂水フェリーでは従来表示できていたものが表示できなくなる現象が頻発すると予想されます。
ただこれも、営業所の窓口番号、フェリーでも改札機の番号、といったものが番号で区別可能になる可能性があります。
こういった報告の際には、端末装置が一意に特定できる情報をお寄せいただければ幸いです。



←4回目 ◆ 6回目?→

2017/09/22(金)18:44 |Comments(0) |Trackback(0)

地域振興 | ソフトウェア開発 | コンピュータ | [編集]

▲ページトップ

いわさきICカードの停留所番号について(4回目)

詳細は1回目である「いわさきICカードの停留所番号について」をご覧下さい。

バス停番号


いわさきグループは、Rapicaと共通で、全部で9バイト(72ビット)の情報領域を持っているのですが、ここに書き込む内容が未だによく分かっていません。

全ての情報のうち先頭4ビットは事業者番号であり、いわさきグループは現在は4で固定です(かつてのいわさきバスネットワーク(林田バス系統)は5があった)。

乗降で一致するのは、バイト単位なら下位7バイト(56ビット)、ビット単位なら更に上7ビットが共通するので下位63ビットは一致しているとみなすことができ、うち下位4バイト程度は停留所番号であろうと考えられます。

これだけの長さがあれば、バス停はおろか、運行しているバスの車体をも一意に特定できるのではないかと、一応は考えています。


それでも生ずる番号重複


ところが、今年の5月9日に65-2番線として報告された番号と下位7バイトが完全に重複する番号が今日、13番線として報告されました。


0 1 2 3 4 5 6 7 8 9 A B C D E F
xx xx xx|45 12|06 A0 01 B0 DC 00 12|41|xx xx xx ◆ 65-2番線 降
xx xx xx|4B 92|06 A0 01 B0 DC 00 00|30|xx xx xx ◆ 65-2番線 乗



0 1 2 3 4 5 6 7 8 9 A B C D E F
xx xx xx|40 92|06 A0 01 B0 DC 00 12|41|xx xx xx ◆ 13番線 降
xx xx xx|4E 12|06 A0 01 B0 DC 00 00|30|xx xx xx ◆ 13番線 乗


これを見ると、+5〜+Bの7バイト(56ビット)の停留所番号は2件で完全に一致していますし、更に上に7ビット追加して下位63ビットにしてみても一致してしまいます。
+4の最上位ビットを含めた、下位64ビットにしてようやく不一致にすることができます。
乗車と降車で不一致となる上位バイト(+3〜+4)は謎が多いのですが、いわさきで、停留所を完全に特定することは本当に可能なのでしょうか。


全桁使えば一意になるのだろうか?


先頭4ビットを除いた全8.5バイト(68ビット)を使えば一意にできる可能性はあります。

ただ、同じ車両の同じ系統に乗車したとして、上位ビットは常に定まった値を書くのかは、現時点では情報がなく不明です。
これについては報告に期待をするしかありません。

そして、同じ車両の同じ系統なら常に同じ番号を書く=停留所が完全に特定できる、のだとしても、実際には次ような問題が生じます

①乗降で上位バイトが違うため、ソートしたときに乗車と降車で番号が離れてしまう
②乗車と降車で番号が変わってしまう
③系統のバス停一覧をみても番号全体の予測が不可のため、事前登録ができない
④Javaのlongは63ビット長なので、整数の変数に番号が収まらない。複数に分ける必要がある
⑤SQLiteの整数も63ビット長なので、DBに数値を収められない。複数に分ける必要がある


今後の方針


内部的な仕様変更が必要になるため、すぐの対応ができないことから、当分の間は画面には停留所が重複するように表示させるしかないようです。
現在はRapicaといわさきはDBを共通化させており、今後もその方針ですが、影響範囲が大きくなるため慎重に仕様変更をしていかなければなりません。

そしていずれ全桁を使うようにするかもしれません。
その場合、いまは予測対応で乗降の途中の停留所も表示するような対応ができることもありましたが、それは今後一切不可になるのかもしれません。


いわさきの報告で今後して欲しいこと


当分は、下位7バイトの一致で判定します。
そこで表示が正常であった場合も、その旨を報告いただきたいのです。比較していない上位バイトを確認し、全体として一致するのかどうかを判断できます。
またお時間に余裕があれば、車体を特定するため、車のナンバープレートの番号を合わせて報告願います。

完全に予測ではありますが、この長大な番号は、車体→系統→停留所という構成で番号を振っているのではないかと予想をしており、系統だけでなく車体をも特定できる可能性が秘められています。



←3回目 ◆ 5回目→

2017/09/19(火)23:03 |Comments(0) |Trackback(0)

地域振興 | ソフトウェア開発 | コンピュータ | [編集]

▲ページトップ

新幹線の駅番号について

新幹線の駅番号


駅には番号が付いています。新幹線も同様です。
新幹線にICカードで乗ることができるようになった現在、新幹線の駅番号も確認することが可能な時代となりました。
(スマートフォンなどのように本体内蔵のFeliCaチップも、ここではICカードと呼ぶことにしておきます)
現在、ICカードやスマホなど何らかの形でFeliCaで乗車できる新幹線は次の通り。

JR北海道 北海道新幹線
JR東日本 東北新幹線
JR東日本 上越新幹線
JR東日本 北陸新幹線
JR東海 東海道新幹線
JR西日本 北陸新幹線
JR西日本 山陽新幹線


番号は複数ある


新幹線と在来線の乗り換え駅の場合、新幹線改札機は新幹線としての駅番号と、在来線としての駅番号をカードに書こうとします。

弊社では「モバイルSuica特急券」は未確認でどのように動作しているのか全く分かりませんが、EX-ICは調査しておりますので、その前提で説明を致します。

新幹線のりかえ改札に、ICOCA等とEX-ICを重ねてタッチすると、新幹線に乗る場合は、ICOCA等には「在来線の駅番号で出場」が書かれ、EX-ICには「新幹線の駅番号で入場」が書かれます。
新幹線から降り在来線への乗り換え改札を通る場合は、この逆になります。
新幹線から直接外に出る改札で出場すれば、EX-ICのみに「新幹線の駅番号で出場」が書かれるわけです。このように新幹線駅には、とりあえず常用される駅番号が二つあると考えて良いでしょう。


北陸新幹線は何やら独特な雰囲気


北陸新幹線の駅番号の振り方は独特で、こちらも駅番号が二つ存在します。新幹線としての駅番号のほかに、在来線としての駅番号があります。

モバイルSuicaで新幹線に乗る場合、モバイルSuica内の「モバイルSuica特急券」情報欄に特急券情報が書き込まれます。モバイルSuica特急券で使用される駅番号は、新幹線としての駅番号です。

ところが、モバイルSuicaの「履歴」情報と「改札」情報に記録される番号は、どうやら乗る時も降りる時も、新幹線としての駅番号は使われておらず(弊社では未確認、報告から推定)、「在来線」として用意されたと思われる特異な番号が使われています。
特異な番号が作られたのは、北陸新幹線によって旧来の路線がJRとしては廃止され第三セクターになってしまったことも関係していると思われます。


モバイルSuica特急券の動き


モバイルSuica特急券を、TOICA/ICOCAとEX-ICに対応付けるとするならば、モバイルSuica部分(履歴、改札など)はTOICA/ICOCAに対応し、モバイルSuica特急券部分はEX-ICに対応するのでしょう。

EX-ICの場合でもTOICA/ICOCA等は在来線としての駅番号を書かないと他の駅の自動改札機で処理できなくなりますので、在来線としての駅番号が使われています。
そこから考えると、モバイルSuica特急券の場合も同様であり、新幹線とそれ以外での区別用として、新幹線としての駅番号と別に、在来線としての新幹線駅番号(よく分からない表現)が必要だったのかもしれません。


なお、駅番号は路線ごとに附番されますから、複数の路線との乗り換え駅ではその路線数ぶんの駅番号が存在しています。
つまり北陸新幹線の在来線等との乗り換え駅の場合は、この在来線としての新幹線駅番号のほかに、在来線の各路線ごとの駅番号がありこちらも使われているものと思います。

例えば長野駅などは在来線がIC未対応なため不明ですが、富山駅の場合は、あいの風とやま鉄道の富山駅としての番号が併用されていることを確認しています。あいの風とやま鉄道の駅番号は旧国鉄と同じ番号帯に新たに作られていますが、元の北陸本線としての番号とは異なっているようです。

2017/08/09(水)19:17 |Comments(0) |Trackback(0)

地域振興 | ソフトウェア開発 | コンピュータ | [編集]

▲ページトップ

カレンダー

06 | 2018/07 | 08
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR