C#とFelica(NFC)でSuicaを読み込んでみる
はじめに
今回は、SuicaやPASMO、Edyなどに使われている非接触ICカードリーダーをC#で試して見たいと思います。
Felicaとは
Felicaとは、Wikipediaさんいわく、「ソニーが開発した非接触型ICカード」ということでSONYさんが開発したものということですが、FelicaとNFCは何が違うの?ということで、そこはSONYさんが解説してくれていました。NFCとFeliCaの関係ということで、SONYさんでは、「NFC-FとFeliCaは同じ無線通信技術であると同時に、FeliCaはNFC-Fというオープン規格の上にカードOSを加えたものと表現することができる」とのことです。シンプルな話、Felicaは規格化されたプロトコルで、NFCはFelicaなどが使える技術という解釈で良いのではないかと感じます。しかし、Felicaは日本では同じみですが、海外だと弱い感じですねw
Felicaリーダーデバイス
次に、ICカードなどを読み込むためのFelicaリーダーはAmazonなどでも直ぐ3000円程度で入手できます。実は、このリーダーより安リーダーがあります。それは楽天Edyリーダーだと2000円程度で入手できます。噂だと楽天Edyリーダーなど廉価デバイスのRC-S360/Sは来年くらいには製造終了するとか!?
ソニー SONY 非接触ICカードリーダー/ライター PaSoRi RC-S380
- 出版社/メーカー: ソニー
- 発売日: 2012/10/10
- メディア: Personal Computers
- 購入: 5人 クリック: 9回
- この商品を含むブログ (16件) を見る
C#とFelica(NFC)で読み込むに
では、本題のC#とFelicaでSuicaなど読み込むには上記のFelicaリーダーデバイスを購入し、下記よりドライバーなどをインストーラします。
次に、C#でFelicaを読む込むには、こちらのライブラリを利用する方法があります。
- SDK for NFC(商用利用の有料版 おそらく10万ちょいくらいかと...)
- SDK for NFC Starter Kit(開発・評価用の無償版)
- felicalib(有志によるBSDライセンスのライブラリ)
があります。どれが良いかといいますと、どれも変わらない気がします。
SDK for NFCとfelicalibは、もともとはC++ベースでしたがC#のサンプルも展開されています。しかし、SDK for NFC Starter KitのC#サンプルはよくわからない...ということで有志がいい感じにまとめたライブラリ「NfcStarterKitWrap」があります。
NfcStarterKitWrapのC#サンプ
felicalibのC#サンプル
C#とFelica(NFC)でSuicaを読み込んでみる
サンプルソースを参考に、SDK for NFC Starter Kitラッパーと有志の方が作成したfelicalibを活用して、それぞれ同じような感じでC#でSuicaを読み込んでみたいと思います。今回はSuicaなどの領域であるシステムコード(0003)、乗降履歴情報であるサービスコード(090F)の情報を読み込むサンプルを作成してみました。これで残高などの履歴が20個分閲覧できます。
他のSuicaの情報を読み出したい方は、下記のサイバネ規格をご参照下さい。また、同じような感じでnanacoやEdyなどもサービスコードとシステムコードを指定すればデータが取得できるはずです。
では、実際にコーディングしてみたサンプルソースが以下のものです。こちらは上記2つのgitよりライブラリを活用して作成したもので、参照追加で「FelicaLib」「NfcStarterKitWrap」を入れなければいけません。
最後に
サンプルソースコードは、あくまでも参考としてご利用下さい。また、各種ライブラリのライセンスにも目を通して、ご利用下さい。
ご利用した方は、コメント頂けると個人的に励みになります。