WebエンジニアにとってのIoT ~Physical Webが拓く未来~

第3回 Physical Web技術解剖(2)-Metadata Resolver

この記事を読むのに必要な時間:およそ 3 分

第2のポイント-Metadata Resolver

前回は技術的な概要のうち,UriBeaconについての解説をさせていただきました。今回はもう1つのポイントであるMetadata Resolverについて解説をして行きます。

Metadata Resolverは,現状ではUriBeaconと違い,しっかりとした規格は用意されておらず,あくまでリポジトリのコードの中で利用されているに過ぎません。

しかし,その現状の仕様や,Physical Webの今後の応用について考えていくと,やはりこちらも重要な役割を担う可能性を持っていることがわかってきます。

サーバサイドのコードは,Pythonで用意されているものがこちらで確認できます。

連載第1回の概要説明で簡単には説明しましたが,今度はもう少し詳細を加えながらそのフローを見て行きましょう注1)⁠

注1)
ただし,上で説明した通り,規格としてしっかりしたものではないため,あくまで現状での説明になり,今後変更が行われて行く可能性は非常に高いと思われます。

Metadata ResolverのInterface

対応アプリケーションがUriBeaconから放出されたアドバタイジングパケットをスキャンすると,その中から抽出したURLについてMetadata Resolverに問い合わせるのでした。

図1 抽出したURLについてMetadata Resolverに問い合わせる

図1 抽出したURLについてMetadata Resolverに問い合わせる

Request

問い合わせたいURLについて,次のようなJSONの文字列を作成し,POST BODYとしてリクエストを送ります。上記で紹介したPythonのWebアプリケーションのコードでは/resolve-scanのパスに対して問い合わせるようになっています。

{"objects": [{"url": "http://goo.gl/f7BSAj"}]}

次のように複数のURLについてまとめて問い合わせることも出来るようになっています。

{"objects": [
  {"url": "http://goo.gl/f7BSAj"},
  {"url": "http://goo.gl/EKqGSz"}
]}

Response

次のようなJSONがレスポンスデータとして返ることになっています。

{"metadata":[
  {
    "id":"http://goo.gl/f7BSAj",
    "title":"The Physical Web",
    "url":"http://google.github.io/physical-web/",
    "icon":"http://google.github.io/physical-web/images/logo-black.png",
    "description":"Walk up and use anything",
    "json-ld":[]
  }
]}

次のようなパラメータを持つオブジェクトが渡されているのがわかると思います。 これがMetadataになります。

  • id
  • title
  • url
  • icon
  • description
  • json-ld

複数のURLについて同時に問い合わせたのであれば,次のようになります。

{"metadata":[
  {
    "id":"http://goo.gl/f7BSAj",
    "title":"The Physical Web",
    "url":"http://google.github.io/physical-web/",
    "icon":"http://google.github.io/physical-web/images/logo-black.png",
    "description":"Walk up and use anything",
    "json-ld":[]
  },
  {
      "id":"http://goo.gl/EKqGSz",
      "title":"google/uribeacon · GitHub",
      "url":"https://github.com/google/uribeacon",
      "icon":"https://avatars2.githubusercontent.com/u/1342004?v=3\u0026s=400",
      "description":"uribeacon - The Web Uri Open Beacon for the Internet of Things",
      "json-ld":[]
  }
]}

著者プロフィール

加藤亮(かとうりょう)

ソフトウェアエンジニア。

比較的プロトコルとフロントエンド寄り。

2014年7月よりリクルートテクノロジーズアドバンスドテクノロジーラボ所属。

コメント

コメントの記入