ヤマダタイゴです。 Felicaカードを使って来場管理できる仕組みを作ったのでご紹介します。 つくったものはだいぶ業務システムっぽいですが、何かの参考になれば幸いです。
つくったもの
- イベントやセミナーに来場したときに、受付で来場者記入の代わりにお財布ケータイやSUICA、入館証でピッってできちゃう仕組み
- ATNDで告知や予約が便利になったのを見て、来場者の受付も簡単にできたらなーと思って作ってみました。
デモ
端末でタッチするところ
管理画面上の操作
用意したもの
タッチしたFelicaの情報を、自作のcgiがAPI経由でsalesforceに流し込む、という構成にしています。
- Felicaリーダー:株式会社ビー・ユー・ジー ピットタッチ プラス
- ノートPC:無線LAN、USBポートがあるPCです。ピットタッチプラスには有線なLANポートしかなく、社内が無線LAN環境しかないので、このノートPC経由でFelicaリーダーがHTTP通信するようにしています。
- USB LANアダプタ:上で書いたように、ノートPCとピットタッチプラスをつないでます。
- Salesforce デベロッパー用アカウント:developer.salesforce.co.jpから入手できます。
- 自作のcgiが動く環境
環境の準備
ピットタッチプラスはLANポートが2つあって、世の中のルータと同じようにhttpでアクセスする管理画面が用意されています。さらに、これ自身が直接Webサーバにhttp getできるステキな仕組みなので、LANにつなげるのが最初の重要なステップになります。
メディアテクノロジーラボのあるフロアは無線LANしかないので、ノートPCのワイヤレスネットワークを、USBアダプタ<->ピットタッチプラスのローカルネットワークに共有するようにしています。
正直このセットアップが今回一番はまったのですが、本ブログのホテルのLANを2人で共有する方法のエントリを見ながらなんとかクリアしました。同じような環境の方は是非ご参考にしてください。
前編 ピットタッチからWebサーバ
FelicaリーダーからHTTP getを送る
ピットタッチプラスの管理画面から送信先のホストやWebアプリのパスを設定するだけで、以下のように決められたパラメータが送信されます。
- Felicaの識別ID
パラメータ名:idm - Felicaチップ(厳密にはメモリ領域)単位に割り振られるほぼユニークなIDです。フェリカネットワークスは「完全にユニークであること」は保証してないようですが、世の中の使われ方を見ると特に問題はなさそうに思います。
- ピットタッチプラスの端末ID
パラメータ名:tid - ピットタッチプラスの端末に割り振られたIDです。今回はこれを「イベントや会場」を示すものとして使っています。このIDはピットタッチプラスの管理画面から変更できるので、イベントが変わるごとにセットしなおすイメージです。
- タッチした時刻
パラメータ名:tim - タッチされた時刻です。yyyymmddhh24missの形式です。
- FeliCa種別
パラメータ名:typ - タッチしたFelicaがカードなのか、ケータイなのかを示す種別です。今回は使っていません。利用者分析で役に立ちそうです。
- ステータス
パラメータ名:sts - タッチされた時のピットタッチプラス端末のステータス(01〜04)を示すパラメータです。ピットタッチプラス端末にあるボタンを押すと、前面にある4つのランプが切り替わります。1つ目のランプの時にタッチすると来場、2つ目のランプで再入場、3つ目のランプで退出、のように使い分ける時に使うパラメータです。今回は使っていません。
簡単ですね!あとはパラメータを受け取ったcgiを好きに動かすだけです!
ここまででいったんまとめ
Felicaリーダから情報を送る部分、環境さえ用意できればとても簡単でした。
簡単にとれるFelica IDをどう活用するかというところに重点を置き、Felicaカード(チップ)にデータを書き込むとか、ケータイアプリを実行するといったのはすっぱりあきらめたら、あとはWebなデベロッパーの腕次第!
この仕組みの部分は、既に他のたくさんの開発者の方が試していてあまり珍しくないかもしれませんが、改めてアイデアを練る機会ととらえていただければとてもうれしいです。
今回は、ピットタッチプラスという個人の開発者が(たぶん)簡単には手に入れにくい高機能なものを使っています。このエントリを書き終わったら1台3,000円のpasoriでやってみようと思います。その際はまたエントリいたします!
次のエントリで、後編のSalesforceでFelica IDを管理 をご紹介しますので、こちらもあわせてご覧くださいませ。
ふろく。検討段階で調べたことメモ
モバイルFeliCaプログラミング—NTT DoCoMo、au、Vodafone対応版 (編集 アスキー書籍編集部)やネットで調べたことをメモします。
- SuicaやpasmoのようなFelica搭載カードには、勝手にデータを書き込めるようなメモリ領域はなく、フェリカネットワークスにサービス事業主としての事前申請が必要。ケータイ各キャリアの公式サイト審査のイメージ。
- NTTdocomoのおさいふケータイ対応機種のみ勝手に読み書きできるフリー領域がある。ただし3つまでなので、既に利用者が3つ使っていたらどれか削除してもらわないといけない。
- 勝手に書き込めない、共通領域と呼ばれるところにあるデータは、サービス事業主しかアクセスできない。(フェリカネットワークスと事前に取り決めた共通鍵が必要。)
- メモリからのデータread/write以外にケータイのアプリを起動するだけの三者間通信という仕組みがある。(今回はこれをつかってケータイのブラウザ起動しています。)
- 3者間通信はケータイアプリを開発するときに用意する鍵をリーダ側から指定する。なのでそれがわからない(作れない)と起動できない。
- 単にブラウザやメーラを起動するだけでも同じようにしないといけなさそう。(たぶん。要調査。)
- なので、各キャリア用にケータイアプリを作り、かつ利用者にそれをダウンロードしてもらうというハードルがでてしまう。(たぶん。要調査。)
- フェリカネットワークスのかざポンというアプリがキャリア対応もしていて、比較するとハードルは低い。