別ソフトウェアで出力した FeliCaカードのダンプ出力を解析して意味のわかる形式で表示します
- Suica互換の交通系カード(利用履歴のみ、駅データは入っていません)
- Edy
- RapiCa(鹿児島県の共通乗車IC)
- nice・pass!カード(遠州鉄道)
- felica_dump (libpafe) -- RC-S310, RC-S320, RC-S330
- lpdump (libpasori) -- RC-S320のみ
- FeliCa Raw Viewer -- Windowsアプリ
- Releases からダウンロード
- zipファイルを解凍
- 実行ファイルをターミナルで実行
- 直接ファイルを指定して実行
- 実行パスを設定
- 実行パスのあるディレクトリにシンボリックリンクを作成(おすすめ)
$ felica-look ファイル # フォーマット解析して情報を表示
$ felica-look -e ファイル # [利用履歴(元データ)] も表示
$ felica-look -x ファイル # 元データの16進表示もいっしょに表示します
$ felica-look -d [-json] ファイル # 内部形式に変換したデータをダンプ表示(デバッグ用)
パイプライン(FeliCaカードを読んですぐに表示する)
$ felica_dump | felica-look
表示用の変換テーブルを YAML形式で持ちます
- 駅名・停留所の名前はここで追加できます
- カレントディレクトリ
- 実行ファイルあるディレクトリ(シンボリックリンクを辿って実行ファイルのあるディレクトリを探します)
- 実行ファイルあるディレクトリのカードに対応するサブディレクトリ(例:
suica.yml
の場合はsuica/suica.yml
)
インストールする場合
$ go get github.com/gnue/felica-look
$GOPATH/bin
にバイナリがインストールされます
ソースコードからビルドする場合
$ git clone https://github.com/gnue/felica-look
$ cd felica-look
$ go build
注:あらかじめ Go言語をインストールしておく必要があります
$ brew install go
- なぜ Go言語で開発したのですか?
- 環境に依存せず配布バイナリのみで使えるようできる
- また、マルチプラットフォームのバイナリも容易に作成できる
- C言語のコードを容易に組込める
- 単に Go言語を使ってみたかったから(初プログラム)
- なぜ C言語がまざっているのですか?
- 他ソフトウェアと共通化をはかるため
- 実際に
suica.h
,edy.h
は PasoriKit からの流用 rapica.h
は PasoriKit に組込み予定- たぶん Go言語だけで書いたほうがシンプルになるのかもしれないけど、同じ構造体定義やロジックをC言語とGo言語で毎回書き直しはしたくないので
- Suicaの駅名が
suica.yml
に登録されていないのはどうでしてですか?- 駅の数が多いため
suica.yml
のSTATIONS:
に登録すれば表示することができます- IC SFCard Fanさんのサイバネ駅コード調査データベースとの対応は
((地区コード<<16) + (線区コード<<8) + 駅順コード)
になります
- カードリーダーからFeliCaカードのデータを直接読込まないのですか?
- パイプラインを使えばそれに近いことが可能です
- 他のライブラリや環境依存にはしたくないのでカードリーダーからの直接読込みを行う予定はありません
- 表示結果をもっとわかりやすくしたい
- もともとが FeliCaカードのフォーマット確認を目的にしています
- 目的がずれてしまうので本プログラム内で必要以上の表示整形は行いません
- さらなる表示のためには機能追加を予定している LTSV/JSON出力を利用し別プログラムで行うのがいいでしょう
- 例:JSON出力を使ってWebアプリでブラウザ表示
- 例:LTSV出力を使って fluentd で利用履歴の蓄積
- JSON出力(現在はダンプデータのみ対応)
- LTSV出力(利用履歴のみ)
- その他カードの対応