Macをはじめ、UNIXでFeliCaを読み取る場合、Pythonでnfcpyを使うのが楽ですね。
2.6x以上で3.xには対応していないようです。Macには最初から2.7.xが入っているようです。
##下準備
###必要なツール
とりあえずHomebrewとpipのインストールがまだの人はインストールお願いします。
Homebrewに関しては本家のスクリプトをコピー。pipについては、
curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python
などとします。
###OpenSSL問題
普通にインストールするとOpenSSLに起因したエラーがでます。どうやらOpenSSLのバージョンが古いとダメなようです。これに対し、2016年8月頃までは、
brew install openssl
brew link openssl --force
既にインストールされてる場合はbrew upgrade openssl
として、Macにプリインストールされたopensslを強制的にbrewのものにすることで問題が解決できたのですが、最近 --forceでの強制リンクができなくなったようで、手動でリンクを作成する必要があるようです。
私の場合、下記のようにopensslインストール後、必要なシンボリックリンクを作成することで対応しました。nfcpyにかぎらず、OpenSSLが古い問題はこれで解決できるかと。
brew install openssl
ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/libcrypto.dylib
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/libssl.dylib
これを行わないと、AttributeError: dlsym(0x7f8328411ff0, EC_KEY_set_public_key_affine_coordinates): symbol not foundというようなエラーが出ます。
###Pasoriを認識させる
読取り装置であるPasoriを認識させるために幾つかのライブラリをインストールします。
$ brew install libusb
$ brew install libusb-compat
$ sudo pip install pyusb
$ sudo pip install libusb1
$ sudo pip install pyserial
##nfcpyの取得とサンプルの実行
nfcpyはBazzar(gitみたいなバージョン管理ツール)経由かpip経由で取得できるようです。
ここではBazzarをインストールし、取得します。
#Bazzarのインストール
brew install bzr
#Bazzarを利用してnfcpyを取得(gitでいうclone)
bzr branch lp:nfcpy
とするとnfcpyフォルダができます。その下にあるexamples/tagtool.pyというIDm等を読み取るサンプルを実行してみます。
cd nfcpy
python examples/tagtool.py show
すると、
[nfc.clf] searching for reader on path usb
[nfc.clf] using SONY RC-S380/P NFC Port-100 v1.11 at usb:253:006
** waiting for a tag **
Type4ATag MIU=255 FWT=0.038664
こんな感じになりました。おサイフケータイはNFC Type4 Tagとして認識されるようです。