Levi’s Commuter Trucker Jacket with Jacquard by Google を手に入れた
5/5/2019, 3:57:12 PM
Levi’s Commuter Trucker Jacket with Jacquard by Google を手に入れた
苦節4年、ついにスマート繊維を組み込んだ例のアレを手に入れて、早速少しコードを書いてみました。
Levi’s Commuter Trucker Jacket with Jacquard by Googleとは
あれはもう4年前。Google I/O 2015で発表されたJacquardプロジェクトで「スマート繊維」というコンセプトが発表された。
Google I/O 2015の後にたまたまRebuild.fmに呼んでいただいて、ほんの少しだけこれの話をしていて、このときからずーっと気になっていた。もっともこのときは、ジーパンに組み込まれるとばっかり思ってて、「太ももにこれが入っててもガサガサ触っちゃう」みたいなことを言っていたけど。
1年経って、Google I/0 2016でLevi’sとのコラボで作るのはパンツじゃなくてジャケットであることが明らかになって、なるほど!となった。
Google ATAPは(少なくとも当初は)2年で市販品を作ることがプロジェクトの要件になっていることが他のmoon shot的なR&Dとは違う点で、それゆえにこのジャケットも、Levi’sが2017年の春に出荷することになっていた。結局2017年の春は過ぎたものの秋になってようやく、でも本当にこのジャケットは出荷された。2019年の今でもLevi’sの(ディスコンになった)Commuterラインで唯一残っている製品としてオンラインでもお店でも買うことができる。
買うことができる…んだけど、$350って高すぎる!どうせちっとも使わない機能がついているからって$250余計に払うほどお財布に余裕はなかった…。
ジャケットとsnap tagを別々に中古で入手
自転車通勤時のパンツを買いたいなあと思ってて、でも上記のとおりLevi’sのCommuterラインはディスコンになっていて、うーんと思ってたときにメルカリで1本見つけて以来、(スマホで)古着屋巡りを時間つぶしにやっていた。こちらNew YorkではPoshmarkというサービスがそこそこに流行っているらしく、それ以外にGrailedとか、あともちろんeBayやMercariもある。
ある日、どういうわけか女性ものを検索する設定で、”Levi’s Commuter”をPoshmarkで検索してしまったときになんと、Jacquard Tracker Jacketを$50で売っている人を発見。スマホと通信するためのsnap tagはなくなっているものの、$50??
実はそれ以前にMercariでsnap tagだけを$15で売っている人を見つけていて、ただ本体がなければ意味がないので放置していた。さっそくMercariを見に行って、まだ売っていることを確認。Poshmarkでジャケットを無言即買いした。ジャケットが出荷されたのを確認して、Mercariでsnap tagもお買い上げ。しめて$65+送料トータル$20くらいで、$350だったあのジャケットを手に入れた。
中古といっても、ジャケットは色落ちもほとんどなくてめちゃくちゃ綺麗だし、snap tagは多分開封してない箱のままで来たし、新古品と言ってよいクオリティ。
ジャケットの作りも、全部のポケットにファスナーがついていたりとか、袖の内側に隠してリブがあって風が入らないようになっていたりとか、Levi’sのCommuterラインのTracker Jacketの作りはそのまま、まあこれが$50ならお買い得なのでは、という感覚。
だがこれを買ったことの意味は当然、Jacquardを試すことにあるのだ。まずはさっそく、公式アプリをダウンロードして機能を確認してみる。
Jacquard公式アプリ
Jacquardの公式アプリを起動して、ジャケットとsnap tagとアプリを接続したら、ジャケットに対する3種類の動作について対応するアクティビティを設定できる。3種類の動作とは、袖を上から下へこするBrush in、袖を下から上へこするBrush out、袖を2回叩くDouble tap。このそれぞれに、現時点でアプリが提供しているアクティビティを割り当てる。例えばナビゲーション機能(次に曲がる場所を音声で教えてくれる)、現在地をアプリに保存する、単純にsnap tagのLEDを光らせるなど。また、アプリからsnap tagへ通知を送って、snap tagを振動させることもできる。電話やテキストが来たときとか。
…と、かなりできることは限られていて、まあそれも当たり前で、自転車に乗っている最中にサッと行いたいことってそんなもんでしょう、ということなんだろう。音楽を聞き始めるとか、次の曲へ進むとか、止めるとかいうこともできるんだけど、自転車乗ってるときに耳栓しないでーって思うし(けっこうな数いらっしゃいますけども)。
とはいえ、ここまで何もできない(というか自分がやりたいことが揃っていない)と、そりゃー「なければ作る」しかないねと。
だが、Jacquard SDKは存在しない。以上。
仕方ないので、適当にあたりをつけながらtry and errorでジャケット+snap tagとアプリとの通信を解析してみることにした。
Bluetooth Low Energy (BLE)でscan
まあ当然予想されることだし、スマホのBluetoothを切ったらアプリが動かないことがわかるので、snap tagはBLEのPeripheralなんだろうなと想像して、単にBLEでデバイスをscanして、deviceを見つけて、serviceを見つけて、characteristicを見つけて、という一連の流れでデバッグログを書くだけのものを作ってジャケットを探してみた。
最初は全然それらしきデバイスが見つからなくて困ったんだけど、snap tagがadvertiseしてなかっただけっぽくて、ジャケットの袖に刺激を与えたら出てくるようになった。ScanRecord#getDeviceName()が”Jacquard”という文字列を返してくるのですぐわかってよかった。結果、このデバイスは「d45c2000–4270-a125-a25d-ee458c085001」というserviceを持っていることがわかった。
さらにこのserviceは17のcharacteristicを持っていて、そのうち12のUUIDが上記のserviceのUUIDと関連する値を持っていた。具体的には「d45c2000」の部分が「d45c2010」「d45c2030」となっていてあとは同一。これが多分Jacquard特有のcharacteristicなんだろうなあと推察した。
そこでこれらのcharacteristicからもう少し情報を取得してみる。BluetoothGattCharacteristic.html#getProperties()を見ればcharacteristicがREADだけなのかWRITEもできるのかがわかって、WRITEできるcharacteristicはアプリからメッセージを送れる、つまりLEDを光らせるものかまたは振動させるものということになる。予想に反してWRITEできるものが4つ見つかったんだが、そのうち2つはREADとWRITEが両方できるので、なんとなくこの2つ「d45c2080–4270-a125-a25d-ee458c085001」と「d45c20f1–4270-a125-a25d-ee458c085001」から見てみることに。
とりあえず、公式アプリから使える「七色に光らせる」機能を自作アプリから呼び出せるようにしてみようと目標を設定した。