うちのはどこにいるんだろう?
FedExの配送状況によると、GUANGZHOUにあるようだ。
どうもこれは広州のことらしい。
ほほぅ。
28日から動いてないので、土日が休みなのかしら。
なお、配達予定は10月2日のお昼らしい。
9月26日に注文して、「3~5営業日以内にお届け」となっているから、こんなものなのかな。
(そもそも、Google Playの営業日っていつなんだろう? FedExの営業日の方かな。)
平日だったらいつでも同じなので、どうでもいいんだけどね。
sm 9812 Thu Nov 18 02:09:34 JST 2010 classes.dex
X.509, CN=xxxxx, OU=yyyyyy, O=zzzzzz, L=ppp, ST=ffffff, C=jp
[証明書は 09/09/18 0:28 から 37/02/03 0:28 まで有効です]
sm 24480 Fri Aug 19 00:15:06 JST 2011 classes.dexデバッグ用の署名、というやつだろう。
X.509, CN=Android Debug, O=Android, C=US
[証明書は 11/12/20 23:53 に失効します]
sm 24480 Fri Aug 19 00:15:06 JST 2011 classes.dex複数署名されたのだ。
X.509, CN=xxxxx, OU=yyyyy, O=zzzzzz, L=ppp, ST=ffffffffff, C=jp
[証明書は 09/09/18 0:28 から 37/02/03 0:28 まで有効です]
X.509, CN=Android Debug, O=Android, C=US
[証明書は 11/12/20 23:53 に失効します]
jarsigner: jar に署名できません: java.util.zip.ZipException: invalid entry compressed size (expected xxx but got yyy bytes)
確か、こんなのだった。sm 10136 Wed Apr 16 08:40:50 JST 2008 classes.dex
X.509, CN=xxxxx, OU=yyyyy, O=zzzzzz, L=ppp, ST=ffffffffff, C=jp
[証明書は 09/09/18 0:28 から 37/02/03 0:28 まで有効です]
X.509, EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android
, L=Mountain View, ST=California, C=US
[証明書は 08/04/16 7:40 から 35/09/02 7:40 まで有効です]
「ArduinoとFeliCa Plugでなにかしようかと」という話を昨日聞いたので、ちょっと調べてみた。
NFC-F Developers' Blog
FeliCa Developers' Blog
SWITCH SCIENCE
こんなところか。
Arduino版ライブラリがv1.1ってなっているが、2010年5月31日の時点でv1.1のようだ。
Readmeだけじゃわからない変更が入っているのかな?
ちょっとだけ見てみたが、まあコメントがないソースファイルだこと。。
接続はどうなってるんだろう?
Arduino Duemilanove
FeliCa Developers' Blog
へー。こういう接続なんだ。
FeliCa PlugのDATAって、SELによって方向が変わるのだけど、MOSIにしかつなげてない。
どうやってんだ?
ソースを見ると、ソフトウェアでSPIやっているみたいだった。
そうするしかないのか。。
私が別のARM基板を使ったときは、MOSIがHi-Zにできるようになっていたので、MOSIもMISOもDATAに接続し、受信したいときはMOSIをHi-Zにしていたのだ。
SIMと通信するとき、9600bpsくらいだったよなあ、でも覚えてないなあ、と思って少し調べることにした。
wikipedia。
最大1.6Mbpsまでは出せそう、とは・・・。
すんません、甘く見すぎてました。
まあ、そこまで出さないにしても、9600bpsなんてことはないだろう。
SEをSIMに置くと遅い、という記事があったのだが、1Mbpsくらい出せるんだったら、SAM(でいいのかな?)に置くのとそんなに違いが出るのかしら。
でも、ハード結線だったら通信速度とかなきに等しいだろうし、FeliCaは高速にするためにいろいろとやってる。
SWPがいくら速くても、戦略的に高速化をめざして作られているFeliCaにはかなわんのだろう。
NFCは、携帯電話に載らないと広まらないだろう。
携帯電話に載せるとなると決済機能抜きということはありえんと思う(キャリアやメーカーのメリットがないので)。
決済機能がつくなら、セキュアエレメントを何とかせんといかん。
今のモバイルFeliCaチップには、FeliCaのSAMしかつながらないようになっているから、ひとまずSWPでのルートを確保し、最後はSIMにFeliCaのメモリを持っていこう、という図になっている。
http://wirelesswire.jp/special/201101/01/report/201102170455.html
ってことは、SWPを使っても高速にやる算段は付いてるってことか?
あるいは、SWP経由の場合は高速にできないけど、海外端末でもFeliCaがつかえる、という方なのかな。
なんとなく後者のような気がする。
そういう時代になったら、私もスマートフォンとか使うようになってるのかな。
壊れるまで買い替えるつもりはないし、壊れたら修理するつもりだから、しばらくはこのままだな。
昨日は、福岡のNFC勉強会に行ってきた。
そこでようやく、SNEP PUTの動作確認ができた。
うん、できないわけではなかった。
NDEF TEXTを送信したのだが、受信できるものとできないものがあったのだ。
うーん、NDEF TEXTじゃなくて、URIにしておけばわかりやすかったか。
自分でもどういう文字列を送信しているか忘れていたし、受信したらAndroidがどう動くかもよく知らないし。
URIだったら、きっとブラウザとかが起動するようになってるんじゃないかな。
とりあえず「SNEPはできないわけではなかった」ということで、よしとしよう。
さて、R/Wモードもやったし、Card Emulationモードもやったし、送信のみではあるがP2Pモードもやったし、一通りはやったことになる。
一番簡単なのは、やはりR/Wモードだった。
Initiatorになって要求を出せばいいだけだからだ。
Card Emulationモードはそれほど深入りしていないが、ちゃんとやるなら面倒だ。
メモリを持たないカードとして振る舞うなら、それほど難しくはない。
たとえば「FeliCa Liteのように振る舞う」となると、それなりにコマンドに対して応答するような実装をしてやらんといかんだろう。
最後にやったP2Pモードは、DEPだけなら簡単、LLCPは面倒、SNEPはそこそこ、という印象をうけた。
今回はSNEPで送信できるサイズが小さなものしかできないようにしているが、それでも全体としては面倒だった。
そういえば、SNEPはサーバとクライアントがあるが、今回はクライアントのみの実装だった。
これだと、Card Emulationモードでいいやん、という気はする。
FeliCa Plugだと簡単にできるし、こっちの方が電力的には消費が少なくてよい。
そう考えていくと、わざわざP2Pモードでやらなくてもいいやん、という気持ちにはなってくる。
うーむ。
最近、LLCPS、というセキュアなLLCPってのを考えているところがあるみたいだ。
IETFってなんじゃ、とおもったら、wikipediaにあった。
ドラフトドキュメントは、こちら。
"TLS"というワーキンググループが公開してるらしい。TLSは"Transport Layer Security"(RFC-2246)の略とのこと。
図を見ると、「TLS over LLCP」とあるから、LLCPはそのままで、その上にTLSを載せようとしているのかな。
まだドラフトなので読まないが、どのドキュメントのLLCPSシーケンスはわかりやすい。
図になってるからだ。
こういうのを望んでいるんだよ、こういうのを >LLCPのドキュメント。
ISO/IEC 14443のドキュメントを読み始めた。
といっても、JIS X6322なので、少しは違うところがあるかもしれん。
最初に「特許には自分で注意してね」と書いてあって心配したが、私はカードを読みたいだけだから大丈夫だろう。
あんまりしっかり読むつもりはなく、またTypeBのところだけ読めばよい。
と思ったが、TypeAのところも興味深かった。
特にUID(NFCID1)のシングル(4byte)の説明。
MIFAREのカード仕様書なんか読んでいると、UIDの取得に何回か分けて読み込んでいる。
これが「カスケード」というやつ。カスケードになっている目的は、PICCの衝突を起こしやすくするためらしい(よくわからない…)。
シングルUIDの先頭バイトには、意味があるらしい。
0x08の場合は、残り3byteは動的に発生された乱数、という意味らしい。
そこでようやく、RC-S620/Sの動きに納得がいった。
ターゲットになるときUIDの後ろ3byteを指定できるようになっているのだが、「先頭は自動的に0x08になります」という動作になっているのだ。
当時は何気なく見過ごしていたけれども、そういう意味があったんだねぇ。
(手書きのコメントには「TPEの場合は0x08」と書いていた。)
というところで満足したので、今日はここまで。
私がNFCを家でやる前くらいにつくったAndroidアプリがある。
当時は円高だったので(今もだけど)、登録料も安いと思って作ったのだ。
いくつかあるけど、その中に「Eject SD」ってのがある。
インストールされてもだいたい消されてしまうアプリの中では、がんばっている。
ってより、これ以外には残ってるのが少ないってだけだがね・・・。
このアプリは、Widgetになってて、SDカードのマウントとアンマウントをするだけのやつ。
AcerのA500を買ったときに、抜き取りができなかったんだかメニューが深いんだったか忘れたが、なんか作ったのだ。
今でも千人くらいはインストールしてもらっていてありがたい。
残念ながらこのアプリ、Android 4.0には対応していないのだ。
あまり調べてないけど、アンマウントするAPIの引数が増えたみたいだ。
この辺の事情は、たまにブログに書いていたような気がする。
放置している理由は、うちに4.0の環境がないから。
エミュレータでやるってのもあるだろうけど、めんどくさい。
それにこのアプリの特徴は、標準以外のSDドライブをアンマウントすることを目的にしているところだと思っている。
ほら、タブレット端末とかだと、Android APIから取得したパスはexternalではあるんだけど、removableじゃない方を指していることが多いではないか。
なので、環境変数を見て候補を選ばせ、どうしようもない場合にはパスを入力できるようにしている、というところだ。
さっき見たら、まだアプリをインストールしている人がいるので、なんとか4.0にも生き残らせたいのだが、回避方法がよくわからん。
わからんし、試すことができんので、あんまりやりたくない。
こまったものだ(私が)。
長いことNFCの資料を見ていないので、忘れてきてしまった。
ちょっと整理しておこう。
NFCのType(Type n Tag)の整理だ。
NFC-A
TOPAZなど
NFC-A
MIFARE Ultralightなど
NFC-F
FeliCa Liteなど
NFC-A
MIFARE DESFireなど
NFC-B
・・・?
そう、NFC-Bだけよくわからないのだ。
Interface誌の特集にも書いてなさそうだし、ネットで検索しても出てこない。
かといってNFC-Bのカードが運用されていないわけではない。
海外にもあるし、日本でも運転免許証や住基カードで使われている。
じゃあNFC-BでアクセスできるカードがType 4Bかというと、そうとは限らない。
MIFARE ClassicはNFC-Aでアクセスできるけど、どのTagにも属さないしね。
そういえば、FeliCa LiteやMIFARE Ultralightだって、買ってきたそのままではまだ「Type n Tag」を名乗ることはできないのかも。
NFC規定のデータが書き込まれるまでは、単に「NFC-nでアクセスできるカード」というだけなのかもしれない。
何が言いたかったかというと、自分で運転免許証にアクセスできないかな、ということだ。
やってる人もいるようだけど、PC/SCじゃなくて、ごりごりとアクセスしたいのだ。
SDK for NFC Starter KitにはType 4Bのサンプルもあるそうだから、試してみましょうかね。
うん、EX_UNSUPPORTED_TAG、みたいな例外が発生した。
やっぱり、違うんですな。
知らない方がよかったのか?
昨日、Windows8でRC-S370は動かん、という記事を書いた。
そしたら「SNEPはPC/SCじゃなくて、NFPだよ」と教えてもらった。
NFP ?
またMicrosoftが新しい用語を作りやがって・・・。
知ってしまったからには、少しは調べておかねば。
NFCは"Near Field Communication"の略だが、NFPは"Near Field Proximity"の略らしい。
Proximityってのが、既に「近接、近傍」みたいなもんだから、「豚のとんかつ」みたいな印象を受けてしまうが、まあいいや。
ドキュメントは、ここ。
私は、2012年2月28日版をダウンロードできた。
ドキュメントの部類としては"Networking"になるようだ。
まあ、無線通信だから、そうなのか。
関係あるか知らんが、こんなページもあった。
近接通信とタップのサポート (JavaScript と HTML を使った Metro スタイル アプリ)
このドキュメントは、以下の章からなっている。
60ページある・・・。
全部読む気にはならないので、つまみ食い程度に眺めよう。
Microsoftから見たNFCの分析、ともいえるので、ユースケースだけでも読んでおくと面白そうだ。
"Tap and Do"ってのが、MicrosoftのNFCアクションに対する名称らしい。
タッチアンドゴー、みたいなもんか。
Tap and Doで周辺機器とのセットアップを済ませよう!かな。
PC間というかユーザ間というか装置間というか、そういったものの関係を作るトリガとしてTap and Doしようぜ!とかかな。。。
URLの交換とか、Wi-Fiとかでの画像交換とか。NFCだけで全部済ませようとはしていないようだ。
Tap and Doゼスチャー
こういう分類をちゃんとやるのは、さすがですな。
ユースケースは、最終的には2つのカテゴリのうちどっちかになる、という。
それぞれのユースケースについて詳細も書かれているが、めんどうなので省略。
例も書かれているので、NFCを使ったサービスを考えている人にはよさそう。
NFC provider modelは、Windowsシステムでさっきのユースケースみたいなものを使うための共通項目(common surface)を提供する。
ここら辺から、NDEFという単語が出てくる。
NFCではNDEFを使う、という前提のようだ。
なおかつ、NFP providerは"Windows"をサポートする必要がある、と。例えば、
Windows.urn:contoso.com:t
のような。
NFC Forumでのサービス名は
urn:nfc:sn:<servicename>
urn:nfc:xsn:<domain>:<servicename>
というルールになっている(LLCP)。
urn(Uniform Resource Name)の標準というものもあるらしいが、私は詳しくない。
AndroidからSNEPできるというところから、これらはWindowsのプロトコルだけに適用されるんだろうけど、なんか、ねぇ。
urn:nfc:xsn:Windows:contoso.com:t
とかでよかったんじゃないの、と思ってしまう。
ここは、実装詳細だ。
GUIDとか、IOCTLとか。
WindowsのSNEPはPC/SCとは関係ない、ということだったから、ここもPC/SCとは関係ないのだろう。
ってことは、メーカーはNFP用に実装し直さないといけないと言うことか。
NDEF Protocolというのも、ここら辺に書かれている。
LLCPとかSNEPもここだ。
うーん、LLCPの実装までの実装はドライバがやってもいいと思うけど、SNEPはWindowsが自分でやってもよかったのでは。NDEFもドライバでやるからこうなったのかな?
詳細を読みきれていないから認識を間違ってるかもしれんし、そもそも私が実装するわけじゃないからいいんだけどね。
運用面の話なのかな。
Tap and Doのマークとか、アンテナはここに置け、とか。
ペアリングとかWindows8で使うNDEF詳細とか。
Bluetooth OOB(out of band)、なんてものもある。
urnにWindowsってのが出てきたところでテンションが下がってしまったが、だいたいこんなもんだ。
NFC Forumと共通の部分はOSではなくドライバ側でやりそうなので、きっとコンパチビリティテストみたいなものもMicrosoft側でやるんだろう。
やらないと、A社のR/Wではうまく動くけど、B社のでは動かないことがある、みたいな非互換性が出てきてしまうからな。
もうちょっとWindows色を薄くして、「みんなこうやろうぜ」みたいな方がよかったんじゃないかな、と個人的には思う。
Tap and Setupなんて規格化してしまうと今後はいいと思うけど、頭に「Windows」って付くと、ちょっとなぁ(くどい)。
私の英語ドキュメント読み違いであることを期待しよう。
きっと、やましたさんがうまいことやってくれるだろう。
たまに、githubなどにソースファイルを置いている。
よくわからないが突然、ソフトウェアライセンスを付けた方がいいんじゃないのか?と思った。
まあ使う人はいないだろうけど、練習としてやっておいても損はあるまい。
といっても、そういうのをやったことがないので「MITライセンスとか修正BSDライセンスが自由そうでいいんじゃないの」くらいしか考えてなかった。
英語の文字列をソースのコメントにひっつけておけばいいや、くらい。
調べていくと、なんかいくつか出てきたので、覚え書きを書いておこう。
最初に見たのが、このタイプ。
これは、http://opensource.org/licenses/BSD-3-Clauseに出ていたものだ。
この「3」というのは、項目が3つあるからのようだ。
/*
* Copyright (c) 2012-2012, hiro99ma
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the distribution.
* - Neither the name of the "hiro99ma" nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*/
項目が2つのものもあった。
これは、http://opensource.org/licenses/BSD-2-Clauseにあった。
/*
* Copyright (c) 2012-2012, hiro99ma
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*/
訳がわからなくなったので検索すると、こちらのサイトが詳しかった。
3番目は、著作権者の名前を使いたいなら事前に書面で連絡してね、というものらしいが、削除してもいいとか。
私はどっちでもいいんだけど、FreeBSDのサイトには3番目がないので、まねしておこう。
"hiro99ma"をオーナー名として入れたが、いいのかな?
そもそも、hiro99maって、なんだろうねぇ。。。