ヤマダタイゴです。連投しているFelica関連で最後のエントリです。
前々回のエントリではピットタッチを使いましたが、今回は安価なPasori(www.jp.sonystyle.com) 、Sony社のvaioに付属のFelicaリーダでどこまで、どんなことができるか試したのでご紹介します。
つくったもの
- 事前に予約すると同時にFelica IDを登録しておく仕組み。
- ピットタッチでは運営する人が利用者情報の登録をやるにようしていたけど、利用者が予約する時にピッで予約来場時の受付もピッで通過できたら運営する人がちょっと楽になりそうだなあというのを考えました。
デモ
まずはデモをご覧ください。
動画にはタッチするところは写っていませんがが、vaio typeF(VGN-FE52B/H)にP705iμをタッチして動かしています。Pasoriでも動作確認しました。
実現方法について調べたこと
まずは何を使ってどう作るかについて調べたことをまとめます。間違い等あればコメントいただけると助かります!
選択肢1:Felica ブラウザエクステンション(www.sony.co.jp)(以下FBEと略します。)が導入されている人に対象を限定して、この仕様の範囲内で作る
メリット
- 独自のHTMLタグを書くだけで、クライアントアプリを作り込む必要がないので、僕のようにC#とかVB.NETよくわかりません><という人に向く。
- ケータイ各キャリアの仕様の違いはFBEが吸収してくれる。
- 選択肢2に書く、ツールを購入しなくて良いのでコストがかからない。
デメリット
- FBEを利用者にインストールしてもらわないといけない。(ただしvaioにはプリインストールされています。)
- ↓のように仕様上の制限があるようです。
- suicaや社員証のようなFelicaカードは使えません。FBEではアクセスするメモリ領域のID(ターゲットID)を指定しないといけなくて、そのIDは公開されていません。おさいふケータイは、モバイルFeliCaプログラミング—NTT DoCoMo、au、Vodafone対応版 (編集 アスキー書籍編集部)のふろくにあったサンプルコードに、ターゲットIDの記載があったのでそれを使えましたが、suicaやpassmoについては見つけられずあきらめました。Edyはググってたらありましたが、情報元がわからなかったので見送ってます。
- ピットタッチでできていた、タッチしたケータイにURLを返してブラウザ起動させる、というのができません。FBEからケータイのアプリを起動させる場合、ケータイのアプリに埋め込まれたIDを指定する必要があります。ブラウザやメーラといったケータイ標準のアプリのIDを指定するための仕様は公開されていません。
選択肢2:SDK for Felica(www.sony.co.jp)、公開されているライブラリを使ってクライアントアプリを作る
メリット
- 選択肢1にあるような仕様上の制限はなく、好きなように作れる。
デメリット
- SDK for Felicaは高価なようで、簡単には手がでない。
- 個人が作ったクライアントアプリを利用者にインストールしてもらわないといけない。
利用者にクライアントアプリをインストールしてもらうっていうのが厳しく、FBEであれば少しだけハードル下がるかなと思って、今回は選択肢1を採用しました。
以下、
- FBE対応のhtmlを書いて、
- 渡されるFelica IDをsalesforceに流し込むcgiを書く
FBE対応のHTMLを書く
今回はおさいふケータイが持つFelica IDをサーバに送るというhtmlを作るだけなので、普段書いているhtmlとほとんど違いはありません。
FeliCa HTMLタグを利用したHTML文書作成ガイドをご覧いただいたら、特に悩むこともないかと思います。
おさいふケータイのターゲットID
↑で書いたとおりFBEでは何をするにしてもまずターゲットIDが必要です。おさいふケータイのターゲットIDは↓が使えます。
GyIWYP3cxVRDJxQ76NwbyQ==
情報元は、モバイルFeliCaプログラミング—NTT DoCoMo、au、Vodafone対応版 (編集 アスキー書籍編集部) プログラム事例編 IDmAuth(P.173 )で紹介されていたサンプルです。ここを読まれると「このサンプルでやっていることと同じものを今回つくっちゃってること」がばれてしまって恥ずかしい感じですが、とにもかくにも情報元をご理解の上、自己責任でご利用ください。
cgiを作る
ここで作るcgiは前回ご紹介したcgiを少しカスタマイズした(検索、登録、更新を並び替えた)程度です。ソースはgoogle codeに置いているので必要であれば参考にしてください。
こちらの利用規約に同意のうえでご利用くださいませ。利用規約に同意の上、FelicaデータをSalesforceに送信するcgiのサンプルをダウンロード
WWW::Salesforceは日本語が苦手?
今回は使わなかったのですが、WWW::SalesforceのAPIで日本語を登録できるか試してみたところ、↓なエラーが返り、うまくいきませんでした。。必須種別以外の値: [B@f91ff9
「あああ」みたいな適当な日本語を使ってcreateしようとAPIを叩いた結果です。英数字であればうまくいくので、utf8の文字コード周りを疑って思考錯誤しましたが、残念ながら解決策がわかりませんでした。。
解決できた方コメントいただけるとありがたいです。
まとめ
Pasoriはピットタッチプラスと比較するとやれることは限られますが、今回作りたかったものはなんとか実現できました。
ピットタッチ、pasoriともに利用者/運営者に少なからず環境の準備を強制することになるので、それでも使いたいと思ってもらえるようなサービスであることが重要ですね。
Felicaでタッチというインタフェースがあることを頭の片隅に置いて、ドンピシャなアイデアが生まれた時にはこのエントリとあわせて思い出してもらえると幸いでございます。