【コラム】

OS X ハッキング!

217 もうすぐPASMOがやってくる - OS XでPaSoRiを使おう

    海上忍  [2007/03/08]

    Amazon.co.jpに「Mac OS X v10.5 Leopard(仮称)」のページが登場した模様です。いわゆる予約販売用で、現在のところ商品の入荷次第メールで知らせるための登録しかできませんが、近々発売開始となる可能性は高いかも。それはともかく、iPodを接続したiTunes 7.1に「07/03/13上のアップデートを……」と表示されることが、新ファームウェアの登場が近いようで、とても気になるのですが。

    さて、今回はSONYのUSB接続型ICカードリーダ/ライタ「PaSoRi(RC-S320)」について。長らくOS Xでは使えなかったUSBデバイスだが、データの読み取りを可能にするライブラリとアプリケーションが公開された。GUIの整備までは進んでいないものの、SuicaやEdyカードの残高照会には十分使えるので、ICカード好きな読者にはぜひとも試していただきたい。

    もうすぐPASMOがやってくる

    これでようやくPaSoRiが使えるように。PASMOもOK……になるはず

    近頃、3月18日サービス開始の「PASMO」がかなり気になる。知らない方のために説明しておくと、PASMOとは関東地方の交通事業者が導入するICカードで、23の鉄道会社と31のバス会社の路線に乗り降りできるというもの。Suicaとの互換性を持つため、JRの路線にも乗れる。早い話が、PASMO一枚あれば、首都圏のほとんどの場所に行けてしまうのだ。

    このカード、SONYの非接触ICカード技術「FeliCa」を利用している。FeliCaは、いわゆる"おさいふケータイ"やプリペイド型電子マネーの「Edy」に採用されているので、実際に利用したことがあるOS Xユーザも少なくないはず。PaSoRiは数千円で販売されているほか、同等の装置がSONY VAIOシリーズに標準装備されたり、PaSoRiがPS3でサポートされたりと、気がつけばFeliCa対応機器が周囲にゴロゴロ、という状況になりつつある。

    で、手許のMacBookを見ると、USBポートはあれどもPaSoRiは認識されない。正確にいえば、認識はされても使えない。デバイスドライバがないからだ。BootCampやParallelsを使うという奥の手はあるものの、OS Xネイティブで使えなければイヤだ。チャージは無理でも残高照会だけは……と考えていたところ、「libpasori」や「SuicaValue」の存在に気がついた、という次第だ。

    まずは下準備

    できぬなら作ってしまえ、と言ったかどうかは知らないけれど、ここに紹介する「libpasori」は、PaSoRi(SONY RC-S320)のプロトコルを解析し、信号の受信を可能にしたUNIX系OS用のオープンソースソフトウェア。データの書き込みには対応しないものの、SuicaやEdyなどのFeliCaカードのデータを読み取ることができる。実物が手許にないため断言はできないが、PASMOにも使えるはずだ。

    libpasoriの機能を利用するためには、「libusb」が必要。まずはダウンロードした書庫ファイルがあるディレクトリから以下のとおりコマンドを実行し、インストールを完了しておこう。

    $ tar xzf libusb-0.1.12.tar.gz
    $ cd libusb-0.1.12
    $ ./configure
    $ make
    $ sudo make install (要管理者権限)

    libpasoriには、サンプルとして「lpdump」というプログラムが収録されている。以下のとおりコマンドを実行したあと、USBポートにPaSoRiを接続、Suicaを載せた状態で同じディレクトリから「./lpdump」としてみよう。ズラズラとカードの内容がダンプされれば、テストは成功だ。

    $ tar xjf libpasori02.tar.bz2
    $ cd libpasori/src
    $ ./buildline-libusb.sh
    $ ./lpdump
    # lpdump : Thu Mar 8 03:08:31 2007 ←カードの情報がダンプされればOK
    # --- IDm info (FeliCa) ---
    # Manufacture Date = 2006/7/14
      …
      …

    いよいよSuicaの残高を確認する

    lpdumpはFeliCaカードの内容をダンプする機能しか実装されておらず、情報を整形しなければ人間が理解できるものにはならない。野村行憲氏の手による「EdyValue」と「SuicaValue」はそのために開発されたプログラムで、それぞれEdyカードとSuicaに対応する。同じFeliCaを採用したカードでも、種類が異なれば表示されないので念のため。

    ビルドの手順だが、カレントディレクトリがlibpasori/srcの状態から、以下のとおりコマンドを実行すればOK(SuicaValueの例)。これでSuicaの残高とチャージの履歴が表示されるはずだ。

    と、ここで気が付いた。PASMOのフォーマットはEdyやSuicaと異なる可能性が高い……整形プログラムが必要になるだろう、ということに。ともあれ、オートチャージ機能付きのPASMOをカード会社に申し込んでいるので、その到着を待つことにしたい。

    $ curl -O http://www.imfj.net/people/nomura/soft/PaSoRi/SuicaValue.c
    $ cp buildline-libusb.sh buildline-Suica.sh
    $ perl -i -pe 's/lpdump.c/SuicaValue.c/' buildline-Suica.sh
    $ perl -i -pe 's/lpdump/SuicaValue/' buildline-Suica.sh
    $ ./buildline-Suica.sh

    Suicaの残高は表示できたが、PASMO用の整形プログラムは別途開発する必要がありそう

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン