As a SW/Ops/DB Engineer

riywo’s technology memo

Sonic Notify - a Real Broadcasting

前置きというか能書き

アプリ作りたいですよね、アプリ。今日なんか作れないかなーと思って妄想してました。昨日こういうアプリを見かけて、

なるほど、もうTCP/IPで通信できるのは当たり前すぎて、その上でできること考えるよりも、なんか別な通信方法考えるの面白いかもなぁと思いました。

上のアプリは多分映像のチカチカを使って0と1の情報を伝えてるんだと思いますが、だったら音声でもできるよね、と。音声だとブロードキャスト(ひとつの音源で沢山の人に伝えること)できるので映像より面白そう。

探してみるとこういうことやってる人がいました。音を鳴らしてその信号にファイルの中身を乗っけて通信してしまうと。でもせっかくだったら人間の可聴域以外を使ってやれると、人間には聞こえないけど機械には聞こえる音であら不思議ファイルが転送できたりしたら魔法っぽくておもしろそう!

Sonic Notify

ということで色々下調べを初めて1時間、既にありました。。。しかもすごいのが。

これまさにさっき上に書いたことそのまんまを既に実現してるみたいです。具体的な技術内容を見つけられてないのですが、アプリの挙動を見るにおそらく人間には聞こえない範囲の音を発生させてると思います。

上記のサイトにあるdemoページの動画を、iPhoneアプリ起動した状態で視聴すると、あら不思議、ところどころで通知がきます。動画の音をミュートにすると通知はきません。

ユーザ登録すると、自分でも試せるのでやってみました。コンポーネントはこんな感じ。

  • Studio
    • 実際のプロモーションを表現してる
    • Programを追加するとStudioが出来る感じ?
    • いろんなタイプがある(Live Concert, In-Store Display, Live Sportsなど)
    • ContentsをStudioに対して指定できる
      • 通知を受けた時の情報で画像とタイトル、URLやミニサイトを指定できる
  • App
    • iOSとAndroidのSDKがあるので、自分のアプリに組み込める
    • テスト用には、先ほどインストールしたアプリに新しく作成したアプリのGUIDを反映させればOK
  • Channel
    • 実際に信号を送る側の定義
    • いろんなデバイスを売ってる!
      • コンセントに差すだけのやつ、音声信号の出力ができるやつ、など
    • テスト用にMacのクライアントアプリを利用した
      • 起動して適当に新しいChannel名指定して繋ぐ

Program作って、Studio画面でAppとChannelを紐付けたら、多分クライアントアプリから音が出てます。iPhoneのアプリのGUIDを切り替えたら自分の設定した画像とリンクが通知されました。すごい。

中身推察

多分、

  • アプリのGUIDが秘密鍵的なものになってる?
    • 送信側と受信側で同じ鍵を設定すれば、その信号が取り出せる
  • 最終的に情報取り出す時にクライアントはインターネット通信してる
    • iPhoneをAirplaneモードにしたら受信してくれなかった
    • Sonic Notifyのサイトにデバイス毎の分析画面とかあるので多分この時情報送ってる?

まとめ

技術的興味津津なんですが、それはさておき色々使い道のある技術だとは思いませんか?ユースケースとして挙がってる、コンサート会場で観客にプレゼント配布とか、小売店でキャンペーン情報とか、リアルにその場にいる時に受け取ることに価値がある様なものにフィットしそう。

ちょうど今年はiOSアプリに挑戦したいと思ってたので、折を見てこのSDKを組み込んで遊んで見るかもしれませんが、先に人柱誰か!

Comments