2012年8月31日金曜日

SNEP通信してみた

SNEPとはP2Pで使用されるプロトコルの名前です。
AndroidではAndroid BEAMという名前で呼ばれていますが、このSNEPプロトコルを使用して実現しています。
今回はAndroidとWindows8でSNEP通信をしてみます。


用意するもの

Windows8















RC-S380















Android 4.0















Windows8にRC-S380を接続しドライバをインストールします。
AndroidはSC-04D Android 4.0.4を使用しています。


カードを読み取る

SNEPをする前に普通のNFCカードを読み取ってみます。
中にはNDEFでURLを書き込んでいます。
NFCカード















カードをRC-S380にかざします。
読み取るとぴこぴこ音がします。















Windows8側に通知が表示されました。
クリックではなくタップになっていますね。















通知をクリックするとブラウザが起動します。
NFC QUESTのページが表示されました。















カードを読み取って中のNDEFデータからURLを取得し
ブラウザに表示することができました。
これはRC-S330/Sでも可能でしたね。


SNEP通信をする

続いてSNEP通信をしてみます。
Androidでブラウザを開いている状態でRC-S380にタッチすると通信することができます。


Androidでブラウザを起動します。
弊社のホームページ見てます。















AndroidをRC-S380にかざします。
Android BEAMの画面になった!!















タップしてビームを送信するとWindows8に
カードの時同様、通知が表示されます。
さっきとは違うアングルから















こちらも通知をクリックすることでブラウザが表示されます。
大きい画面で見れた!















無事SNEPでも通信することができました。

まとめ

今回SNEP通信をしましたが、ドライバのインストールをしただけで、プログラムは一切書かずに実現することができました。

今後パソコンにもNFCが搭載されていきます。今回はその片鱗が少し見えたような気がしました。利用シーンで考えると、帰宅時に見ていたホームページを、家に帰ってきてから大きい画面で見たいなと思った時に便利なのではないでしょうか。
さらにプログラムからアクセスできるようならば、もっと夢が広がると思います。


Windows8用ドライバは評価用にお借りしたものなので一般公開はされていませんが
今後Windows8のリリース後に公開されるのではないでしょうか。
さらに今後のアップデートに期待です。

カスタマー開発部 山下智樹

Windows8とAndroidでSNEP通信してみた

SNEP通信してみた

SNEPとはP2Pで使用されるプロトコルの名前です。
AndroidではAndroid BEAMという名前で呼ばれていますが、このSNEPプロトコルを使用して実現しています。
今回はAndroidとWindows8でSNEP通信をしてみます。


用意するもの

Windows8















RC-S380















Android 4.0















Windows8にRC-S380を接続しドライバをインストールします。
AndroidはSC-04D Android 4.0.4を使用しています。


カードを読み取る

SNEPをする前に普通のNFCカードを読み取ってみます。
中にはNDEFでURLを書き込んでいます。
NFCカード















カードをRC-S380にかざします。
読み取るとぴこぴこ音がします。















Windows8側に通知が表示されました。
クリックではなくタップになっていますね。















通知をクリックするとブラウザが起動します。
NFC QUESTのページが表示されました。















カードを読み取って中のNDEFデータからURLを取得し
ブラウザに表示することができました。
これはRC-S330/Sでも可能でしたね。


SNEP通信をする

続いてSNEP通信をしてみます。
Androidでブラウザを開いている状態でRC-S380にタッチすると通信することができます。


Androidでブラウザを起動します。
弊社のホームページ見てます。















AndroidをRC-S380にかざします。
Android BEAMの画面になった!!















タップしてビームを送信するとWindows8に
カードの時同様、通知が表示されます。
さっきとは違うアングルから















こちらも通知をクリックすることでブラウザが表示されます。
大きい画面で見れた!















無事SNEPでも通信することができました。

まとめ

今回SNEP通信をしましたが、ドライバのインストールをしただけで、プログラムは一切書かずに実現することができました。

今後パソコンにもNFCが搭載されていきます。今回はその片鱗が少し見えたような気がしました。利用シーンで考えると、帰宅時に見ていたホームページを、家に帰ってきてから大きい画面で見たいなと思った時に便利なのではないでしょうか。
さらにプログラムからアクセスできるようならば、もっと夢が広がると思います。


Windows8用ドライバは評価用にお借りしたものなので一般公開はされていませんが
今後Windows8のリリース後に公開されるのではないでしょうか。
さらに今後のアップデートに期待です。

カスタマー開発部 山下智樹


2012年映像情報メディア学会の2日目となりました。学会自体は明日8/31(金)までありますが、本日大阪に帰らなければいけなかったので、私にとっては最終日となりました。3日目のキネクトやARなどのデモが本当は出席したかったので、実に残念です。

さて、本日は朝の9:00から夕方の17:30までいろいろな講演・研究発表を回ってきました。簡単に見てきたことを書きます。今日はもう遅いので詳しくはまたの機会に。。。

映像情報メディア学会 2日目



2012年映像情報メディア学会の2日目となりました。学会自体は明日8/31(金)までありますが、本日大阪に帰らなければいけなかったので、私にとっては最終日となりました。3日目のキネクトやARなどのデモが本当は出席したかったので、実に残念です。

さて、本日は朝の9:00から夕方の17:30までいろいろな講演・研究発表を回ってきました。簡単に見てきたことを書きます。今日はもう遅いので詳しくはまたの機会に。。。

2012年8月30日木曜日



2012年映像情報メディア学会にアンドロイド講習会講師として参加してきました。

場所は広島市立大学です。広島市立大学は、広島駅からJR可部線で一駅の横川駅からバスで12分、市街地を出たかと思うと、2kmほどの長いトンネルを抜けたところにキャンパスがあります。

f:id:bs-android:20120829125100j:image:w360:right

映像情報メディア学会 アンドロイド講習会



2012年映像情報メディア学会にアンドロイド講習会講師として参加してきました。

場所は広島市立大学です。広島市立大学は、広島駅からJR可部線で一駅の横川駅からバスで12分、市街地を出たかと思うと、2kmほどの長いトンネルを抜けたところにキャンパスがあります。

f:id:bs-android:20120829125100j:image:w360:right

2012年8月21日火曜日



街コンって?


みなさんは街コンというイベントをご存知でしょうか


街コンとは、地域振興を目的とした大規模な合コンイベントです。


参加者は少ない場合でも100名、多い時は1000名を超えます。


街コンは地域の商店街で開催されることが多く、地域活性化の側面をもっていますが


合コンなので、参加者が出会いを求められるという側面ももっています。


座席指定で男女が必ずテーブルを囲むように案内されることや


気になる異性に声をかけやすくする仕組みがある場合があります。



街コン - Wikipedia
http://ja.wikipedia.org/wiki/%E8%A1%97%E3%82%B3%E3%83%B3

濱コンって?


f:id:bs-android:20120816163222j:image:h400


[こののぼりが目印!]


横浜最大の街コンイベントです。


横浜市関内を中心に、横浜市のさまざまな場所で開催されています。


完全事前受付制となっており


受付でリストバンドを受け取った後、街コン参加店舗で


食べ放題、飲み放題となります。



濱コンオフィシャルサイト | 濱コン
http://www.hamacon.jp/


濱コン@横濱 | Facebook
http://www.facebook.com/hamacon.jp

NFCがやってきた!


今回濱コン事務局さんと協力して、街コンにNFCを組込みました。


全国初!NFCを街コンに実戦投入しましたので、そちらのレポートを書きます。


プレスリリースはこちら



街コン支援システム「NFCで街コンつく~る」を提供開始
http://www.brilliantservice.co.jp/press/pdf/nfc-machikon.pdf

濱コン行ってきたよ!


今回参加したイベントは20代限定のイベントでした。


通常は年齢制限のない濱コンですが、今回は20代のみの参加者となります。



濱コンUnder30~【20代限定】横浜へ集え!素敵な出会いをGet!(街コン) | 横濱史上最大規模の地域活性化イベント・濱コン
http://www.hamacon.jp/satellite_120817/index.html

受付

f:id:bs-android:20120816190928j:image:w400


受付では事前に登録した情報と、リストバンドをひもづけるために


パソコンとPaSoRiを使ってヒモ付作業をします。


リストバンドを装着

f:id:bs-android:20120816200037j:image:w400


参加者にはひもづけられたリストバンドを装着してもらい


街コンに参加してもらいます。


今回使ったリストバンド

f:id:bs-android:20120816200357j:image:w400


今回使用したリストバンドがこちらです。


裏にシール型のNFCタグが貼られています。


NFCタグにはFeliCa Liteを使用しております。


今回もSonyさんにご協力いただきました!ありがとうございます!


店頭でリストバンドを読み取り!

f:id:bs-android:20120816205254j:image:w400


参加者は店舗入退店時に、スタッフのもつスマホにリストバンドをかざしてもらうことで


入店状況を記録します。


ここは仕組み上不安なところでした。


リストバンドをタッチするということが馴染みないので


実施にやってみたら、みんな面倒がってタッチしてくれないんじゃないかな…と考えていました。


しかし実際にやってみると、慣れないのは最初だけで


慣れてくると積極的にタッチしていただけていたので、無駄な不安だったみたいです(笑)


混雑状況が分かる!

f:id:bs-android:20120821084751j:image:w400


サーバに蓄積されたデータから、参加者に直接混雑状況を配信します。


楽しい街コン!

f:id:bs-android:20120816220206j:image:w400


店内ではみなさん楽しそうに過ごしていました。


ぱっと見は普通の居酒屋さんっぽいですが


リストバンドをつけていることで、「あ、この人も同じイベントに参加しているんだ」という一体感とか安心感がありますね(笑)





個人的な感想など


私自身街コンを目にすることが初めてだったのですが


さまざまな人が参加し、非常に活気のあるイベントでした。(私も参加したかった!!)





街コンの中でも、特に濱コンは大人気です。応募総数を明かすことはできないのですが


多くの参加希望者が集まったそうです。


ちなみに次回開催は9月8日に1000人規模で開催されますので、参加されてはいかがでしょうか。


受付もまもなく開始と聞いていますので、濱コンホームページをこまめにチェックしてみてください!


もちろんそちらでもNFCが使われますよ!


今回、参加人数は男女200名とあまり大きいものではありませんでしたが


貴重なデータが得られましたので、今後に活かしてもっとよいシステムに改良していきたいと思います!





文責:カスタマー開発部 品川開発課 山下 智樹





NFCが濱コンにやってきた!



街コンって?


みなさんは街コンというイベントをご存知でしょうか


街コンとは、地域振興を目的とした大規模な合コンイベントです。


参加者は少ない場合でも100名、多い時は1000名を超えます。


街コンは地域の商店街で開催されることが多く、地域活性化の側面をもっていますが


合コンなので、参加者が出会いを求められるという側面ももっています。


座席指定で男女が必ずテーブルを囲むように案内されることや


気になる異性に声をかけやすくする仕組みがある場合があります。



街コン - Wikipedia
http://ja.wikipedia.org/wiki/%E8%A1%97%E3%82%B3%E3%83%B3

濱コンって?


f:id:bs-android:20120816163222j:image:h400


[こののぼりが目印!]


横浜最大の街コンイベントです。


横浜市関内を中心に、横浜市のさまざまな場所で開催されています。


完全事前受付制となっており


受付でリストバンドを受け取った後、街コン参加店舗で


食べ放題、飲み放題となります。



濱コンオフィシャルサイト | 濱コン
http://www.hamacon.jp/


濱コン@横濱 | Facebook
http://www.facebook.com/hamacon.jp

NFCがやってきた!


今回濱コン事務局さんと協力して、街コンにNFCを組込みました。


全国初!NFCを街コンに実戦投入しましたので、そちらのレポートを書きます。


プレスリリースはこちら



街コン支援システム「NFCで街コンつく~る」を提供開始
http://www.brilliantservice.co.jp/press/pdf/nfc-machikon.pdf

濱コン行ってきたよ!


今回参加したイベントは20代限定のイベントでした。


通常は年齢制限のない濱コンですが、今回は20代のみの参加者となります。



濱コンUnder30~【20代限定】横浜へ集え!素敵な出会いをGet!(街コン) | 横濱史上最大規模の地域活性化イベント・濱コン
http://www.hamacon.jp/satellite_120817/index.html

受付

f:id:bs-android:20120816190928j:image:w400


受付では事前に登録した情報と、リストバンドをひもづけるために


パソコンとPaSoRiを使ってヒモ付作業をします。


リストバンドを装着

f:id:bs-android:20120816200037j:image:w400


参加者にはひもづけられたリストバンドを装着してもらい


街コンに参加してもらいます。


今回使ったリストバンド

f:id:bs-android:20120816200357j:image:w400


今回使用したリストバンドがこちらです。


裏にシール型のNFCタグが貼られています。


NFCタグにはFeliCa Liteを使用しております。


今回もSonyさんにご協力いただきました!ありがとうございます!


店頭でリストバンドを読み取り!

f:id:bs-android:20120816205254j:image:w400


参加者は店舗入退店時に、スタッフのもつスマホにリストバンドをかざしてもらうことで


入店状況を記録します。


ここは仕組み上不安なところでした。


リストバンドをタッチするということが馴染みないので


実施にやってみたら、みんな面倒がってタッチしてくれないんじゃないかな…と考えていました。


しかし実際にやってみると、慣れないのは最初だけで


慣れてくると積極的にタッチしていただけていたので、無駄な不安だったみたいです(笑)


混雑状況が分かる!

f:id:bs-android:20120821084751j:image:w400


サーバに蓄積されたデータから、参加者に直接混雑状況を配信します。


楽しい街コン!

f:id:bs-android:20120816220206j:image:w400


店内ではみなさん楽しそうに過ごしていました。


ぱっと見は普通の居酒屋さんっぽいですが


リストバンドをつけていることで、「あ、この人も同じイベントに参加しているんだ」という一体感とか安心感がありますね(笑)





個人的な感想など


私自身街コンを目にすることが初めてだったのですが


さまざまな人が参加し、非常に活気のあるイベントでした。(私も参加したかった!!)





街コンの中でも、特に濱コンは大人気です。応募総数を明かすことはできないのですが


多くの参加希望者が集まったそうです。


ちなみに次回開催は9月8日に1000人規模で開催されますので、参加されてはいかがでしょうか。


受付もまもなく開始と聞いていますので、濱コンホームページをこまめにチェックしてみてください!


もちろんそちらでもNFCが使われますよ!


今回、参加人数は男女200名とあまり大きいものではありませんでしたが


貴重なデータが得られましたので、今後に活かしてもっとよいシステムに改良していきたいと思います!





文責:カスタマー開発部 品川開発課 山下 智樹





2012年8月8日水曜日

RTD Textを書く

AndroidでRTD Textを書き込みます。

反応するタグの種類の限定

NDEFを書き込めるタグの種類はNDEFタグもしくはNDEFFormatableタグなので、どちらかに反応するようにNfcAdapter#enableForgroundDispatch()を呼んであげます。

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
getClass()), 0);
IntentFilter[] intentFilter = new IntentFilter[] {
new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED),
};
String[][] techList = new String[][] {
{
android.nfc.tech.NdefFormatable.class.getName()
}, {
android.nfc.tech.Ndef.class.getName()
}
};
mNfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFilter, techList);

NdefMessageの作成

書き込み対象のRTD Text RecordをもったNdefMessageを作成します。
NdefRecordの作成には
  • TNF
  • TYPE
  • ID
  • PAYLOAD
が必要になります。(他に全てのバイナリから作成することも可能です)
TNFはTextRecord#TNF_WELL_KNOWN を使用します。
TYPEはTextRecord#RTD_TEXT を使用します。
IDは今回使用しないので空の配列を渡します。
PAYLOADは自作する必要があります。

NDEFを書き込む

タグの判定

NDEFを書き込むには、NFC反応時に発行されるIntent内に含まれるTagから
Ndef クラスもしくはNdefFormatable クラスに変換する必要があります。
また、NdefクラスとNdefFormatableクラスに親子関係はないので
どのタグなのか判定した上で、処理を別にする必要があります。

Ndefの書き込み

Ndefの場合、書き込み禁止やサイズを見ることができるので
判定した上で書き込みます。

NdefFormatableの書き込み

NdefFormatableの場合、Ndefの様にタグの状態を見ることができないので
そのまま書き込みます。

ソースコード


カスタマー開発部 山下智樹

AndroidでRTD Textを書く

RTD Textを書く

AndroidでRTD Textを書き込みます。

反応するタグの種類の限定

NDEFを書き込めるタグの種類はNDEFタグもしくはNDEFFormatableタグなので、どちらかに反応するようにNfcAdapter#enableForgroundDispatch()を呼んであげます。

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
getClass()), 0);
IntentFilter[] intentFilter = new IntentFilter[] {
new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED),
};
String[][] techList = new String[][] {
{
android.nfc.tech.NdefFormatable.class.getName()
}, {
android.nfc.tech.Ndef.class.getName()
}
};
mNfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFilter, techList);

NdefMessageの作成

書き込み対象のRTD Text RecordをもったNdefMessageを作成します。
NdefRecordの作成には
  • TNF
  • TYPE
  • ID
  • PAYLOAD
が必要になります。(他に全てのバイナリから作成することも可能です)
TNFはTextRecord#TNF_WELL_KNOWN を使用します。
TYPEはTextRecord#RTD_TEXT を使用します。
IDは今回使用しないので空の配列を渡します。
PAYLOADは自作する必要があります。

NDEFを書き込む

タグの判定

NDEFを書き込むには、NFC反応時に発行されるIntent内に含まれるTagから
Ndef クラスもしくはNdefFormatable クラスに変換する必要があります。
また、NdefクラスとNdefFormatableクラスに親子関係はないので
どのタグなのか判定した上で、処理を別にする必要があります。

Ndefの書き込み

Ndefの場合、書き込み禁止やサイズを見ることができるので
判定した上で書き込みます。

NdefFormatableの書き込み

NdefFormatableの場合、Ndefの様にタグの状態を見ることができないので
そのまま書き込みます。

ソースコード


カスタマー開発部 山下智樹

2012年8月7日火曜日

SNEPとは

Simple NDEF Exchange Protocol(通称SNEP)とは、NFCのP2Pで使われるプロトコルです。
NFC Device同士でServerとClientになり、HTTPのようにGETやPUTなどのメソッドを使いデータのやり取りを行います。


原文

Simple NDEF Exchange Protocol
Technical Specification
NFC Forum™
SNEP 1.0
NFCForum-TS-SNEP_1.0
2011-08-31

NFC Simple NDEF Exchange Protocol (SNEP) specification


和訳



カスタマー開発部 山下智樹

SNEP(Simple NDEF Exchange Protocol)の仕様書を和訳しました。

SNEPとは

Simple NDEF Exchange Protocol(通称SNEP)とは、NFCのP2Pで使われるプロトコルです。
NFC Device同士でServerとClientになり、HTTPのようにGETやPUTなどのメソッドを使いデータのやり取りを行います。


原文

Simple NDEF Exchange Protocol
Technical Specification
NFC Forum™
SNEP 1.0
NFCForum-TS-SNEP_1.0
2011-08-31

NFC Simple NDEF Exchange Protocol (SNEP) specification


和訳



カスタマー開発部 山下智樹

2012年8月3日金曜日

RTD Textを読む

AndroidでRTD Textを読み取ります。
AndroidではNdefMessageNdefRecordのクラスが用意されています。
NdefRecordはヘッダまでしかパースされないので
PAYLOADを自分でパースする必要があります。

NDEF Messageを取得する

NdefMessageActivity#onNewIntent(:Intent):void のIntentのExtraに
NfcAdapter.EXTRA_NDEF_MESSAGESという名前で格納されています。
形式はParcelable[]なので一時的にParcelable[]で保持しておき
その中のNdefMessageを取り出します。

Ndef Recordを取得する

NdefRecordNdefMessage#getRecords():NdefRecord[] で取得します。

RTD Textの判定をする

Textの判定はTNFがWELL_KNOWNになっていることと、TYPEが'T'になっていることを確認します。
NdefRecordからTNFを取得するにはNdefRecord#getTnf():shortを使います。
また、各TNFはNdefRecordに定義されているのでその定数を使います。
NdefRecordからTYPEを取得するにはNdefRecord#getType():byte[]を使います。
また、RTDのTYPEはNdefRecordに定義されているのでその定数を使います。

RTD Textをパースする

NdefRecordからPAYLOADを取得するにはNdefRecord#getPayload():byte[]を使用します。
PAYLOADが取得できたので、RTD Textの仕様に従いパースしていきます。
RTD Textの仕様についてはこちらを御覧ください。
ブリリアントサービス NFC技術ブログ: RTD Textとは
例では文字列(言語コード)という内容で返しています。

実行イメージ


ソースコード

https://github.com/bs-nfc/ReadRTDText

カスタマー開発部 山下智樹

AndroidでRTD Textを読む

RTD Textを読む

AndroidでRTD Textを読み取ります。
AndroidではNdefMessageNdefRecordのクラスが用意されています。
NdefRecordはヘッダまでしかパースされないので
PAYLOADを自分でパースする必要があります。

NDEF Messageを取得する

NdefMessageActivity#onNewIntent(:Intent):void のIntentのExtraに
NfcAdapter.EXTRA_NDEF_MESSAGESという名前で格納されています。
形式はParcelable[]なので一時的にParcelable[]で保持しておき
その中のNdefMessageを取り出します。

Ndef Recordを取得する

NdefRecordNdefMessage#getRecords():NdefRecord[] で取得します。

RTD Textの判定をする

Textの判定はTNFがWELL_KNOWNになっていることと、TYPEが'T'になっていることを確認します。
NdefRecordからTNFを取得するにはNdefRecord#getTnf():shortを使います。
また、各TNFはNdefRecordに定義されているのでその定数を使います。
NdefRecordからTYPEを取得するにはNdefRecord#getType():byte[]を使います。
また、RTDのTYPEはNdefRecordに定義されているのでその定数を使います。

RTD Textをパースする

NdefRecordからPAYLOADを取得するにはNdefRecord#getPayload():byte[]を使用します。
PAYLOADが取得できたので、RTD Textの仕様に従いパースしていきます。
RTD Textの仕様についてはこちらを御覧ください。
ブリリアントサービス NFC技術ブログ: RTD Textとは
例では文字列(言語コード)という内容で返しています。

実行イメージ


ソースコード

https://github.com/bs-nfc/ReadRTDText

カスタマー開発部 山下智樹

2012年8月2日木曜日

NDEFとは

NFC Data Exchange Formatと呼ばれるもので、NFCでデータのやり取りをする際に使われるデータ・フォーマットです。
仕様書はこちらにあります


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#ndefts


この内容についてNFC Labにて発表をしました。
資料はこちらです。
http://www.slideshare.net/tomorrowkey/ndef-13784268

Ndefの構成


NDEFには一つのNdef Messageが含まれます。
またNdef Messageには0個以上のNdef Recordが含まれます。

Ndef Recordの構成


Ndef Recordは大きくヘッダとペイロードの2つに分けることができます。

  • ヘッダ
    • MB(Message Begin)
      • 1bit
      • このフラグが1になっていると、最初のNdef Recordであることを表します。
    • ME(Message End)
      • 1bit
      • このフラグが1になっていると、最後のNdefRecordであることを表します。
    • CR(Chunked Flag)
      • 1bit
      • このフラグが1になっていると、分割されたNdef Messageであることを表します。
    • SR(Short Record)
      • 1bit
      • このフラグが1になっていると、Ndef Message全体が255Byte以下であることを表します。
      • またその場合、Payload Lengthが1Byteになります。(データサイズの節約になります)
    • IL(ID Length)
      • 1bit
      • このフラグが1になっていると、IDが格納されていることを表します。
    • TNF(Type Name Format)
      • 3bit
      • TYPEの種類を表します。
        • 0x00 Empty
        • 0x01 NFC Forum well-known-type
        • 0x02 Media-type as define in RFC2046
        • 0x03 Absolute URI as define in RFC 3986
        • 0x04 NFC Forum external type
        • 0x05 Unknown
        • 0x06 Unchanged
        • 0x07 Reserved
      • ここの内容によってTYPE の解釈が変わります。
    • TYPE LENGTH
      • 1Byte
      • TYPEフィールドの長さを表します。
      • 符号なし整数
    • PAYLOAD LENGTH
      • 1Byte or 4Byte
      • PAYLOADの長さを表します。
      • ビッグエンディアン、符号なし整数
      • SRが1だった場合、1Byteになります。
    • ID LENGTH
      • 1Byte
      • IDの長さを指定します。
      • 符号なし整数
    • TYPE
      • TYPE LENGTHによって長さが変わります。
      • TNFの値によって内容の解釈が変わります。
      • 例えば0x01 NFC Forum well-known-type だった場合
        • 'T' -> Text
        • 'U' -> URI
        • 'Sp' -> Smart Poster
    • ID
      • ILによって存在しない場合があります。
      • ID LENGTHによって長さが変わります。
      • Ndef RecordのIDを設定することができます。
  • ペイロード
    • データ本体
    • TYPEとTNFによってフォーマットが異なります。
    • well-known-typeについては別エントリにて解説します。



カスタマー開発部 山下智樹

NDEFとは

NDEFとは

NFC Data Exchange Formatと呼ばれるもので、NFCでデータのやり取りをする際に使われるデータ・フォーマットです。
仕様書はこちらにあります


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#ndefts


この内容についてNFC Labにて発表をしました。
資料はこちらです。
http://www.slideshare.net/tomorrowkey/ndef-13784268

Ndefの構成


NDEFには一つのNdef Messageが含まれます。
またNdef Messageには0個以上のNdef Recordが含まれます。

Ndef Recordの構成


Ndef Recordは大きくヘッダとペイロードの2つに分けることができます。

  • ヘッダ
    • MB(Message Begin)
      • 1bit
      • このフラグが1になっていると、最初のNdef Recordであることを表します。
    • ME(Message End)
      • 1bit
      • このフラグが1になっていると、最後のNdefRecordであることを表します。
    • CR(Chunked Flag)
      • 1bit
      • このフラグが1になっていると、分割されたNdef Messageであることを表します。
    • SR(Short Record)
      • 1bit
      • このフラグが1になっていると、Ndef Message全体が255Byte以下であることを表します。
      • またその場合、Payload Lengthが1Byteになります。(データサイズの節約になります)
    • IL(ID Length)
      • 1bit
      • このフラグが1になっていると、IDが格納されていることを表します。
    • TNF(Type Name Format)
      • 3bit
      • TYPEの種類を表します。
        • 0x00 Empty
        • 0x01 NFC Forum well-known-type
        • 0x02 Media-type as define in RFC2046
        • 0x03 Absolute URI as define in RFC 3986
        • 0x04 NFC Forum external type
        • 0x05 Unknown
        • 0x06 Unchanged
        • 0x07 Reserved
      • ここの内容によってTYPE の解釈が変わります。
    • TYPE LENGTH
      • 1Byte
      • TYPEフィールドの長さを表します。
      • 符号なし整数
    • PAYLOAD LENGTH
      • 1Byte or 4Byte
      • PAYLOADの長さを表します。
      • ビッグエンディアン、符号なし整数
      • SRが1だった場合、1Byteになります。
    • ID LENGTH
      • 1Byte
      • IDの長さを指定します。
      • 符号なし整数
    • TYPE
      • TYPE LENGTHによって長さが変わります。
      • TNFの値によって内容の解釈が変わります。
      • 例えば0x01 NFC Forum well-known-type だった場合
        • 'T' -> Text
        • 'U' -> URI
        • 'Sp' -> Smart Poster
    • ID
      • ILによって存在しない場合があります。
      • ID LENGTHによって長さが変わります。
      • Ndef RecordのIDを設定することができます。
  • ペイロード
    • データ本体
    • TYPEとTNFによってフォーマットが異なります。
    • well-known-typeについては別エントリにて解説します。



カスタマー開発部 山下智樹

RTD Textとは

Record Type DefinitionのTextフォーマットのことを指します。
仕様書はこちらにあります。


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds

Textフォーマットの構造

  • Encode
    • 1bit
    • エンコードを表します。
      • 0 -> UTF-8
      • 1 -> UTF-16
  • RFU
    • 1bit
    • Reserved for Future Use
  • Language Code Length
    • 6bit
    • 言語コードの長さを表します。
  • Language Code
    • Language Code Lengthによって長さが変わります。
    • 言語コードを表します。(ISO/IANA)
    • US-ASCIIエンコードで格納します。
  • Actual Text
    • 実際のテキストを格納します。
    • Encodeにて指定したエンコードで格納します。

Textを格納したNDEFの例

"Hello, World." を表したNDEFは以下のようになります。

D1 01 10 54
02 65 6E 48
65 6C 6C 6F
2C 20 57 6F
72 6C 64 2E

  • FLAGS
    • MB 0x01
    • ME 0x01
    • CF 0x00
    • SR 0x01
    • IL 0x00
  • TNF 0x01 (Well Known Type)
  • TYPE LENGTH 0x01
  • PAYLOAD LENGTH 0x10 -> 16
  • TYPE 0x54 -> 'T'
  • PAYLOAD
    • Encoding 0x00 -> UTF-8
    • Language Code Length 0x02
    • Language Code 0x65 0x6E -> "en"
    • Actual Text
      • 0x48 0x65 0x6C 0x6C 0x6F 0x2C 0x20 0x57 0x6F 0x72 0x6C 0x64 0x2E
      • -> "Hello, World."

カスタマー開発部 山下智樹

RTD Textとは

RTD Textとは

Record Type DefinitionのTextフォーマットのことを指します。
仕様書はこちらにあります。


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds

Textフォーマットの構造

  • Encode
    • 1bit
    • エンコードを表します。
      • 0 -> UTF-8
      • 1 -> UTF-16
  • RFU
    • 1bit
    • Reserved for Future Use
  • Language Code Length
    • 6bit
    • 言語コードの長さを表します。
  • Language Code
    • Language Code Lengthによって長さが変わります。
    • 言語コードを表します。(ISO/IANA)
    • US-ASCIIエンコードで格納します。
  • Actual Text
    • 実際のテキストを格納します。
    • Encodeにて指定したエンコードで格納します。

Textを格納したNDEFの例

"Hello, World." を表したNDEFは以下のようになります。

D1 01 10 54
02 65 6E 48
65 6C 6C 6F
2C 20 57 6F
72 6C 64 2E

  • FLAGS
    • MB 0x01
    • ME 0x01
    • CF 0x00
    • SR 0x01
    • IL 0x00
  • TNF 0x01 (Well Known Type)
  • TYPE LENGTH 0x01
  • PAYLOAD LENGTH 0x10 -> 16
  • TYPE 0x54 -> 'T'
  • PAYLOAD
    • Encoding 0x00 -> UTF-8
    • Language Code Length 0x02
    • Language Code 0x65 0x6E -> "en"
    • Actual Text
      • 0x48 0x65 0x6C 0x6C 0x6F 0x2C 0x20 0x57 0x6F 0x72 0x6C 0x64 0x2E
      • -> "Hello, World."

カスタマー開発部 山下智樹

RTDとは

Record Type Definitionの略称で、NDEFのTNFにWell Known Typeが指定された際に、使用できるTYPEです。
仕様書はこちらにあります。


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds


2012年8月時点では以下の種類のフォーマットがあります。

  • Text
    • 複数の言語のテキストを効率的に格納するためのフォーマットです。
  • URI
    • URI(Uniform Resource Identifier)を効率的に格納するフォーマットです。
  • SmartPoster
    • URLやSMS,電話番号などを格納するフォーマットです。
    • このフォーマットはTextのブロックとURIのブロックで構成されています。
  • GenericControl
    • NFCの通信を介して他のデバイス、タグに特定のアクション(アプリケーションの起動やモードの変更など)を要求する簡単な方法を提供します。
  • Signature
    • NDEFに署名を追加するためのフォーマットです。

カスタマー開発部 山下智樹

RTDとは

RTDとは

Record Type Definitionの略称で、NDEFのTNFにWell Known Typeが指定された際に、使用できるTYPEです。
仕様書はこちらにあります。


NFC Forum : Technical Specifications
http://www.nfc-forum.org/specs/spec_list/#rtds


2012年8月時点では以下の種類のフォーマットがあります。

  • Text
    • 複数の言語のテキストを効率的に格納するためのフォーマットです。
  • URI
    • URI(Uniform Resource Identifier)を効率的に格納するフォーマットです。
  • SmartPoster
    • URLやSMS,電話番号などを格納するフォーマットです。
    • このフォーマットはTextのブロックとURIのブロックで構成されています。
  • GenericControl
    • NFCの通信を介して他のデバイス、タグに特定のアクション(アプリケーションの起動やモードの変更など)を要求する簡単な方法を提供します。
  • Signature
    • NDEFに署名を追加するためのフォーマットです。

カスタマー開発部 山下智樹

2012年7月25日水曜日

作るもの

  • ホームアプリでNFCに反応するアプリを作る
  • タグの種類によって制限する

解説

AndroidManifest.xml

1. NFCのIntentFilterを定義する
タグの種類によって制限をかけたいので、TECH_DISCOVEREDというアクションを設定します。


2. 制限するタグの定義ファイルを設定する
タグを制限するにはxmlファイルを定義する必要があります。


/res/xml/nfc_tech_filter.xml

1. 制限するタグを定義する
NfcFのみ反応したい場合、以下のように定義します。

NfcFかつNdefが定義されている場合のみ反応したい場合、以下のように定義します。

NfcFとNfcA両方に反応したい場合、以下のように定義します。


HomeActivity.java

1. Intentを受信したらNFC-IDを表示する
NFCのIntentが呼ばれた時にNFC-IDを取得し、Toastに表示します。
Intentを受信するイベントはアプリが起動する場合と、バックスタックにいる場合があるので
onCreate(:Bundle):void とonNewIntent(:Intent):void の2ヶ所から呼び出しています。


実行イメージ

ソースコード

https://github.com/bs-nfc/NFCHandlerOnHome

カスタマー開発部 山下智樹

アプリを起動していなくてもNFCに反応するアプリを作る

作るもの

  • ホームアプリでNFCに反応するアプリを作る
  • タグの種類によって制限する

解説

AndroidManifest.xml

1. NFCのIntentFilterを定義する
タグの種類によって制限をかけたいので、TECH_DISCOVEREDというアクションを設定します。


2. 制限するタグの定義ファイルを設定する
タグを制限するにはxmlファイルを定義する必要があります。


/res/xml/nfc_tech_filter.xml

1. 制限するタグを定義する
NfcFのみ反応したい場合、以下のように定義します。

NfcFかつNdefが定義されている場合のみ反応したい場合、以下のように定義します。

NfcFとNfcA両方に反応したい場合、以下のように定義します。


HomeActivity.java

1. Intentを受信したらNFC-IDを表示する
NFCのIntentが呼ばれた時にNFC-IDを取得し、Toastに表示します。
Intentを受信するイベントはアプリが起動する場合と、バックスタックにいる場合があるので
onCreate(:Bundle):void とonNewIntent(:Intent):void の2ヶ所から呼び出しています。


実行イメージ

ソースコード

https://github.com/bs-nfc/NFCHandlerOnHome

カスタマー開発部 山下智樹

2012年7月20日金曜日

指定するタグの種類について

AndroidでNFC対応アプリを作成する場合、どのタグに反応するかを指定することができます。(ACTION_TAG_DISCOVEREDの場合必要ありません)
指定できるタグの種類は以下があります。

  • IsoDep
  • MifareClassic
  • MifareUltralight
  • Ndef
  • NdefFormattable
  • NfcA
  • NfcB
  • NfcF
  • NfcV

これらのクラスはandroid.nfc.techパッケージに定義されています。
それぞれを説明します。

  • IsoDep
    • ISO-DEP(ISO/IEC 14443-4 DataExchangeProtocol)にアクセスできる
    • NfcAもしくはNfcBである
  • MifareClassic
    • NXP MifareClassic
    • NfcAである
  • MifareUltralight
    • NXP MifareUltralight
    • NfcAである
  • Ndef
    • Ndefにフォーマットされているタグ
  • NdefFormattable
    • Ndefにフォーマットできるタグ
  • NfcA
    • ISO/IEC 14443 TypeA
    • Mifare系がこれに該当する
  • NfcB
    • ISO/IEC 14443 TypeB
    • 日本の公共団体発行のカード等が該当する
  • NfcF
    • FeliCa系がこれに該当する
  • NfcV
    • いわゆる近傍型と呼ばれるタグの種類
    • ISO/IEC 15693
    • ICODE
    • NFCチップによっては対応していない場合があります

具体的にどれなんだろう

どのようなタグが該当するか、私の手持ちのタグをかざしてみます。

Suica

  • NfcF


Taspo

  • NdefFormattable
  • MifareClassic
  • NfcA


運転免許証

  • IsoDep
  • NfcB


Edy

  • NfcF


Clipper Card

  • NdefFormattable
  • IsoDep
  • NfcA


Brother ラベルプリンター RL-700S

  • NfcV
  • Ndef


ネットカフェの会員証

  • NdefFormattable
  • MifareClassic
  • NfcA


名刺

  • NfcF
  • Ndef

(中にNDEFフォーマットにvCardを書き込んだFeliCa Liteを仕込んでいます)


OCTOPUS

  • NfcF


NFC QUEST Card

  • Ndef
  • NfcF

カスタマー開発部 山下智樹

Androidで指定するタグの種類について

指定するタグの種類について

AndroidでNFC対応アプリを作成する場合、どのタグに反応するかを指定することができます。(ACTION_TAG_DISCOVEREDの場合必要ありません)
指定できるタグの種類は以下があります。

  • IsoDep
  • MifareClassic
  • MifareUltralight
  • Ndef
  • NdefFormattable
  • NfcA
  • NfcB
  • NfcF
  • NfcV

これらのクラスはandroid.nfc.techパッケージに定義されています。
それぞれを説明します。

  • IsoDep
    • ISO-DEP(ISO/IEC 14443-4 DataExchangeProtocol)にアクセスできる
    • NfcAもしくはNfcBである
  • MifareClassic
    • NXP MifareClassic
    • NfcAである
  • MifareUltralight
    • NXP MifareUltralight
    • NfcAである
  • Ndef
    • Ndefにフォーマットされているタグ
  • NdefFormattable
    • Ndefにフォーマットできるタグ
  • NfcA
    • ISO/IEC 14443 TypeA
    • Mifare系がこれに該当する
  • NfcB
    • ISO/IEC 14443 TypeB
    • 日本の公共団体発行のカード等が該当する
  • NfcF
    • FeliCa系がこれに該当する
  • NfcV
    • いわゆる近傍型と呼ばれるタグの種類
    • ISO/IEC 15693
    • ICODE
    • NFCチップによっては対応していない場合があります

具体的にどれなんだろう

どのようなタグが該当するか、私の手持ちのタグをかざしてみます。

Suica

  • NfcF


Taspo

  • NdefFormattable
  • MifareClassic
  • NfcA


運転免許証

  • IsoDep
  • NfcB


Edy

  • NfcF


Clipper Card

  • NdefFormattable
  • IsoDep
  • NfcA


Brother ラベルプリンター RL-700S

  • NfcV
  • Ndef


ネットカフェの会員証

  • NdefFormattable
  • MifareClassic
  • NfcA


名刺

  • NfcF
  • Ndef

(中にNDEFフォーマットにvCardを書き込んだFeliCa Liteを仕込んでいます)


OCTOPUS

  • NfcF


NFC QUEST Card

  • Ndef
  • NfcF

カスタマー開発部 山下智樹

2012年7月19日木曜日

NFCに関するActionの種類


AndroidでNFCに関するActionは以下の3つがあります。

  • ACTION_NDEF_DISCOVERED
  • ACTION_TECH_DISCOVERED
  • ACTION_TAG_DISCOVERED

NFCタグが検出されるといずれかのActionのIntentが発行されます。
どういう場合に発行されるか説明します。

  • ACTION_NDEF_DISCOVERED
    • タグがNDEFでフォーマットされていた場合に、このActionで発行されます。
    • タグの種類によってフィルタリングすることができます。
    • IntentのExtra内にNDEFの情報が含まれます。
    • 最も優先順位が高いです。
  • ACTION_TECH_DISCOVERED
    • 上記のActionで反応するアプリがなかった場合に、このActionで発行されます。
    • タグがNDEFでフォーマットされていなかった場合、一番優先度が高いです。
    • タグの種類によってフィルタリングすることができます。
  • ACTION_TAG_DISCOVERED
    • 上記2種類のActionで対応するアプリがなかった場合に、このActionで発行されます。
    • このActionで指定していればどんなNFC Tagタイプでも反応することができますが、上記2つのActionでアプリが起動した場合、反応することができません。
    • 一番優先度が低いです。

Actionの優先度とは



タグの種類によってスタート地点が異なります。
タグがNDEFにフォーマットされている場合、ACTION_NDEF_DISCOVEREDの判定が行われます。
端末にインストールされているアプリでACTION_NDEF_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
ACTION_NDEF_DISCOVEREDを処理できるアプリが存在しなかった場合、もしくはタグがNDEFでフォーマットされていない場合は
ACTION_TECH_DISCOVEREDの判定が行われます。
ACTION_TECH_DISCOVEREDはタグの種類によってフィルタリングすることが可能なIntentです。
(たとえばTypeAにのみ反応するアプリや、TypeFのみに反応するアプリなど)
端末にインストールされているアプリでACTION_TECH_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
上記2つのActionを処理できるアプリが存在しなかった場合、ACTION_TAG_DISCOVEREDが発行されます。

Actionを優先順位順に並べると
ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED、ACTION_TAG_DISCOVEREDとなり
優先順位の高い方から処理可能か判定されます。
途中で処理可能と判定された場合、優先順位の低いActionの判定は行われません。

アプリを作る際に注意しなければならないのは、どのようなタグに反応するアプリなのか決定し
できるだけ優先順位の高いActionで起動できるようにすること
安易にACTION_TAG_DISCOVEREDを指定すると、優先順位の高いアプリにIntentを奪われて起動されない事があります。

カスタマー開発部 山下智樹

NFCに関連するActionについて

NFCに関するActionの種類


AndroidでNFCに関するActionは以下の3つがあります。

  • ACTION_NDEF_DISCOVERED
  • ACTION_TECH_DISCOVERED
  • ACTION_TAG_DISCOVERED

NFCタグが検出されるといずれかのActionのIntentが発行されます。
どういう場合に発行されるか説明します。

  • ACTION_NDEF_DISCOVERED
    • タグがNDEFでフォーマットされていた場合に、このActionで発行されます。
    • タグの種類によってフィルタリングすることができます。
    • IntentのExtra内にNDEFの情報が含まれます。
    • 最も優先順位が高いです。
  • ACTION_TECH_DISCOVERED
    • 上記のActionで反応するアプリがなかった場合に、このActionで発行されます。
    • タグがNDEFでフォーマットされていなかった場合、一番優先度が高いです。
    • タグの種類によってフィルタリングすることができます。
  • ACTION_TAG_DISCOVERED
    • 上記2種類のActionで対応するアプリがなかった場合に、このActionで発行されます。
    • このActionで指定していればどんなNFC Tagタイプでも反応することができますが、上記2つのActionでアプリが起動した場合、反応することができません。
    • 一番優先度が低いです。

Actionの優先度とは



タグの種類によってスタート地点が異なります。
タグがNDEFにフォーマットされている場合、ACTION_NDEF_DISCOVEREDの判定が行われます。
端末にインストールされているアプリでACTION_NDEF_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
ACTION_NDEF_DISCOVEREDを処理できるアプリが存在しなかった場合、もしくはタグがNDEFでフォーマットされていない場合は
ACTION_TECH_DISCOVEREDの判定が行われます。
ACTION_TECH_DISCOVEREDはタグの種類によってフィルタリングすることが可能なIntentです。
(たとえばTypeAにのみ反応するアプリや、TypeFのみに反応するアプリなど)
端末にインストールされているアプリでACTION_TECH_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
上記2つのActionを処理できるアプリが存在しなかった場合、ACTION_TAG_DISCOVEREDが発行されます。

Actionを優先順位順に並べると
ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED、ACTION_TAG_DISCOVEREDとなり
優先順位の高い方から処理可能か判定されます。
途中で処理可能と判定された場合、優先順位の低いActionの判定は行われません。

アプリを作る際に注意しなければならないのは、どのようなタグに反応するアプリなのか決定し
できるだけ優先順位の高いActionで起動できるようにすること
安易にACTION_TAG_DISCOVEREDを指定すると、優先順位の高いアプリにIntentを奪われて起動されない事があります。

カスタマー開発部 山下智樹

作るもの

  • NFCタグに反応するアプリを作る
  • 反応したらそのNFC-IDをToastで表示する
  • 反応するのはアプリ起動中のみ

AndroidManifest


1. SDK の変更をする

NFCが使えるAPI Levelは9以降になります。
しかし9はNFCを使うには貧弱なAPIしかないので10以降を指定します。


2. uses-feature を追加する

NFCをもっていない端末にはダウンロードされないように
機能の指定を行います。


3. permission を追加する

NFCを使うためには以下のパーミッションが必要になります。


4. launchMode を変更する

NFCに反応してIntentが発行されるとデフォルトのLaunch Mode(standard)では新しくActivityを作ろうとします。
何度も同じActivityを作られては困るので、launchModeを指定します。


Activity

NFCタグに反応するための準備とNFCタグを受け取る部分を実装します。


1. NFC機能のない端末では起動できないようにする

use-featureで制限していますので、ここで終了するパターンはありません。


2. NFCが無効になっていた時に終了する

NFCが無効になっていた場合、アプリを終了します。
終了するよりも、設定画面に遷移した方が親切です。


3. NFCタグを発見した時に反応するように登録する

設定する項目は2つあります。
3-1. 反応するActionを指定する(詳しくはこちら)
3-2. 反応するタグの種類を指定する(詳しくはこちら)


4. 登録を解除する

アプリがフォアグラウンドにいない時にはNFCに反応しなくていいので
onPauseにて登録を解除します。


5. Intentを受け取る

NFCタグに反応したIntentはonNewIntentを通して受け取ります。
IntentのExtraに格納されたデータを使い、タグとやり取りをします。
以下のコードではNFC-IDを受け取り文字列に整形した後に
Toastで表示しています。


実行イメージ


ソースコード

https://github.com/bs-nfc/NFCHandlerOnApp

カスタマー開発部 山下智樹

AndroidでNFCタグに反応するシンプルなアプリを作る

作るもの

  • NFCタグに反応するアプリを作る
  • 反応したらそのNFC-IDをToastで表示する
  • 反応するのはアプリ起動中のみ

AndroidManifest


1. SDK の変更をする

NFCが使えるAPI Levelは9以降になります。
しかし9はNFCを使うには貧弱なAPIしかないので10以降を指定します。


2. uses-feature を追加する

NFCをもっていない端末にはダウンロードされないように
機能の指定を行います。


3. permission を追加する

NFCを使うためには以下のパーミッションが必要になります。


4. launchMode を変更する

NFCに反応してIntentが発行されるとデフォルトのLaunch Mode(standard)では新しくActivityを作ろうとします。
何度も同じActivityを作られては困るので、launchModeを指定します。


Activity

NFCタグに反応するための準備とNFCタグを受け取る部分を実装します。


1. NFC機能のない端末では起動できないようにする

use-featureで制限していますので、ここで終了するパターンはありません。


2. NFCが無効になっていた時に終了する

NFCが無効になっていた場合、アプリを終了します。
終了するよりも、設定画面に遷移した方が親切です。


3. NFCタグを発見した時に反応するように登録する

設定する項目は2つあります。
3-1. 反応するActionを指定する(詳しくはこちら)
3-2. 反応するタグの種類を指定する(詳しくはこちら)


4. 登録を解除する

アプリがフォアグラウンドにいない時にはNFCに反応しなくていいので
onPauseにて登録を解除します。


5. Intentを受け取る

NFCタグに反応したIntentはonNewIntentを通して受け取ります。
IntentのExtraに格納されたデータを使い、タグとやり取りをします。
以下のコードではNFC-IDを受け取り文字列に整形した後に
Toastで表示しています。


実行イメージ


ソースコード

https://github.com/bs-nfc/NFCHandlerOnApp

カスタマー開発部 山下智樹

2012年6月30日土曜日



エンジニア視点で興味深かったものについてご紹介していきます。

巨大なオブジェクトの数々


f:id:bs-android:20120627125048j:image

巨大な球状のオブジェクトがありました。

手前のコントローラーを動かすと回転したり、音が変わったりしました。

Google I/O 2012の気になったところ



エンジニア視点で興味深かったものについてご紹介していきます。

巨大なオブジェクトの数々


f:id:bs-android:20120627125048j:image

巨大な球状のオブジェクトがありました。

手前のコントローラーを動かすと回転したり、音が変わったりしました。

2012年6月29日金曜日




f:id:bs-android:20120629111955j:image:w640



今月25日~27日まで、東京お台場のホテル日航東京でNFC Forumの総会が開催されていました。


NFC ForumとはNFCの技術仕様とテスト仕様の策定、普及・啓蒙活動を行う世界的な標準化団体です。http://www.nfc-forum.org/home/


AndroidにGoogle I/Oがあるように、NFCにはNFC Forum総会があるんですね。





その中でソリューション・ショーケースという、NFCを使ったサービスやプロダクトを紹介しながら世界中のNFC関係者と交流するカジュアルパーティがあり、今回はその会場を使ってNFC QUESTをやりました。





会場には世界中から集まったSIer、通信事業者、機器メーカー、半導体メーカー、試験機メーカーなどNFC Forumメンバーが180名以上がいました。海外勢が半数以上のため、NFC QUESTもすべて英語に作り替えてやりました。





展示ブースはNFC QUEST以外に12ブースありましたが、ペイメントやヘルス機器に混じって、ゲームをやっているのはブリリアントとソニーさんの2社だけでした。





会場でも異色のブースとあって、入れ替わり立ち代わり見に来ていただくことができました。特に海外の参加者たちはNFCをエンターテイメントに使うという発想に非常に食付いていました。


「ヨーロッパやアメリカではまだNFCが課金しか使われてないのに、日本はこんなサービスがもうあるのか!?NFCが課金以外でも使えるとは!!」


といって海外勢は驚いてました。





国籍は違えど、みんなゲームは大好き。ということで、多くの人がチェックポイントを回って魔王と対戦をしに来てくれました。これで、外国人にもNFC QUESTが十分通用することがわかったのでそろそろ海外のイベントに持ち込んでやってみようかと思います。





f:id:bs-android:20120629132252p:image:w640


f:id:bs-android:20120629133141p:image:w640


f:id:bs-android:20120629133142j:image:w640


f:id:bs-android:20120629133143j:image:w640





文責:カスタマー営業部 藤田健介





NFC Forum総会のソリューション・ショーケースでNFC QUESTを展示しました




f:id:bs-android:20120629111955j:image:w640



今月25日~27日まで、東京お台場のホテル日航東京でNFC Forumの総会が開催されていました。


NFC ForumとはNFCの技術仕様とテスト仕様の策定、普及・啓蒙活動を行う世界的な標準化団体です。http://www.nfc-forum.org/home/


AndroidにGoogle I/Oがあるように、NFCにはNFC Forum総会があるんですね。





その中でソリューション・ショーケースという、NFCを使ったサービスやプロダクトを紹介しながら世界中のNFC関係者と交流するカジュアルパーティがあり、今回はその会場を使ってNFC QUESTをやりました。





会場には世界中から集まったSIer、通信事業者、機器メーカー、半導体メーカー、試験機メーカーなどNFC Forumメンバーが180名以上がいました。海外勢が半数以上のため、NFC QUESTもすべて英語に作り替えてやりました。





展示ブースはNFC QUEST以外に12ブースありましたが、ペイメントやヘルス機器に混じって、ゲームをやっているのはブリリアントとソニーさんの2社だけでした。





会場でも異色のブースとあって、入れ替わり立ち代わり見に来ていただくことができました。特に海外の参加者たちはNFCをエンターテイメントに使うという発想に非常に食付いていました。


「ヨーロッパやアメリカではまだNFCが課金しか使われてないのに、日本はこんなサービスがもうあるのか!?NFCが課金以外でも使えるとは!!」


といって海外勢は驚いてました。





国籍は違えど、みんなゲームは大好き。ということで、多くの人がチェックポイントを回って魔王と対戦をしに来てくれました。これで、外国人にもNFC QUESTが十分通用することがわかったのでそろそろ海外のイベントに持ち込んでやってみようかと思います。





f:id:bs-android:20120629132252p:image:w640


f:id:bs-android:20120629133141p:image:w640


f:id:bs-android:20120629133142j:image:w640


f:id:bs-android:20120629133143j:image:w640





文責:カスタマー営業部 藤田健介







f:id:bs-android:20120628095640j:image:w360





2日目のGoogle IOの基調講演のレビューです。


昨日にも増してにぎわいを見せています。


f:id:bs-android:20120628095215j:image:w200 f:id:bs-android:20120628095352j:image:w200 f:id:bs-android:20120628085607j:image:w200





会場の様子


昨日と同様一番前の席はプレス席専用となっており、一番前からの写真を取る事ができませんでした。


f:id:bs-android:20120628100019j:image:w250 f:id:bs-android:20120628095711j:image:w250







基調講演


カウントダウンからのGoogle IO 2日目開幕です。


f:id:bs-android:20120628100628j:image:w250 f:id:bs-android:20120628100642j:image:w250





昨日同様Vic Gundotra氏から始まりました。


ブルーのGlassを装着して登場です。


f:id:bs-android:20120628100817j:image:w360





Chrome OS


本日はChrome OSから始まります。


f:id:bs-android:20120628100912j:image:w360





Chrome Browser


Nexus Galaxy, Nexus 7, iPhone, iPadでのデモストレーション


f:id:bs-android:20120628101733j:image:w250 f:id:bs-android:20120628101839j:image:w250


f:id:bs-android:20120628102056j:image:w250 f:id:bs-android:20120628102207j:image:w250





Chrome Book


自動で更新する常に最新のコンピュータとのこと。


f:id:bs-android:20120628104103j:image:w360





Google Compute Engine


新サービスの発表!


科学技術系の計算などの処理に特化したクラウドサービスのようなもののようです。


f:id:bs-android:20120628104631j:image:w360





Glass デモストレーション


またもやスカイダイビングでデモストレーションが行われました。


最後の登場はありませんでしたが、着陸時が一番の歓声で盛り上がりました!


f:id:bs-android:20120628111139j:image:w200 f:id:bs-android:20120628111227j:image:w200 f:id:bs-android:20120628111230j:image:w200


f:id:bs-android:20120628111526j:image:w200 f:id:bs-android:20120628111730j:image:w200 f:id:bs-android:20120628111754j:image:w200


f:id:bs-android:20120628111848j:image:w200 f:id:bs-android:20120628111909j:image:w200 f:id:bs-android:20120628111942j:image:w200





おまけ


最後に、ADK2.0のセッションに参加すると


今年もADK一式プレゼントもらいました!


f:id:bs-android:20120628124707j:image:w200 f:id:bs-android:20120628124549j:image:w200 f:id:bs-android:20120628124730j:image:w200





まだまだGoogle IOは続きます。



文責:カスタマー開発部 大阪開発課 藤田 竜史





Google IO 2012 ~2日目レビュー(基調講演)~



f:id:bs-android:20120628095640j:image:w360





2日目のGoogle IOの基調講演のレビューです。


昨日にも増してにぎわいを見せています。


f:id:bs-android:20120628095215j:image:w200 f:id:bs-android:20120628095352j:image:w200 f:id:bs-android:20120628085607j:image:w200





会場の様子


昨日と同様一番前の席はプレス席専用となっており、一番前からの写真を取る事ができませんでした。


f:id:bs-android:20120628100019j:image:w250 f:id:bs-android:20120628095711j:image:w250







基調講演


カウントダウンからのGoogle IO 2日目開幕です。


f:id:bs-android:20120628100628j:image:w250 f:id:bs-android:20120628100642j:image:w250





昨日同様Vic Gundotra氏から始まりました。


ブルーのGlassを装着して登場です。


f:id:bs-android:20120628100817j:image:w360





Chrome OS


本日はChrome OSから始まります。


f:id:bs-android:20120628100912j:image:w360





Chrome Browser


Nexus Galaxy, Nexus 7, iPhone, iPadでのデモストレーション


f:id:bs-android:20120628101733j:image:w250 f:id:bs-android:20120628101839j:image:w250


f:id:bs-android:20120628102056j:image:w250 f:id:bs-android:20120628102207j:image:w250





Chrome Book


自動で更新する常に最新のコンピュータとのこと。


f:id:bs-android:20120628104103j:image:w360





Google Compute Engine


新サービスの発表!


科学技術系の計算などの処理に特化したクラウドサービスのようなもののようです。


f:id:bs-android:20120628104631j:image:w360





Glass デモストレーション


またもやスカイダイビングでデモストレーションが行われました。


最後の登場はありませんでしたが、着陸時が一番の歓声で盛り上がりました!


f:id:bs-android:20120628111139j:image:w200 f:id:bs-android:20120628111227j:image:w200 f:id:bs-android:20120628111230j:image:w200


f:id:bs-android:20120628111526j:image:w200 f:id:bs-android:20120628111730j:image:w200 f:id:bs-android:20120628111754j:image:w200


f:id:bs-android:20120628111848j:image:w200 f:id:bs-android:20120628111909j:image:w200 f:id:bs-android:20120628111942j:image:w200





おまけ


最後に、ADK2.0のセッションに参加すると


今年もADK一式プレゼントもらいました!


f:id:bs-android:20120628124707j:image:w200 f:id:bs-android:20120628124549j:image:w200 f:id:bs-android:20120628124730j:image:w200





まだまだGoogle IOは続きます。



文責:カスタマー開発部 大阪開発課 藤田 竜史





Related Posts Plugin for WordPress, Blogger...