Webの概要を説明させていただきました。この技術の上でどんな応用が可能なのか考えていきたいところではありますが,そのためにはまずその基盤となる技術を把握し,制約を知らなければなりません。今回と次回に分け,一つ一つのパートを技術的に掘り下げていきたいと思います。何と言ってもUriBeaconです。Energyを利用していますので,まずはそちらについて解説していきます。Energyという無線通信技術を使って近接検知を行います。LE⁠”,“⁠BTLE⁠”,“⁠BLE⁠”というように略されます。本稿では以降BLEと略すことにします。Bluetoothを知らないという人は現在ではさすがにいないでしょう。ヘッドホンやキーボードなど,日常でBluetooth機器の恩恵に預かっている方もたくさんいるかと思います。Bluetoothの登場から現在までの変遷についてまでは,あまり知られていないのではないでしょうか。Bluetoothは1999年にバージョン1.0の仕様が発表され,2000年代前半から普及期に入りました。ユビキタスネットワークという言葉が流行っていたのを思いだす人もいるかもしれません。Bluetoothは登場以降,バージョンを重ねながら通信の高速化などの進化を続けていましたが,Wi-Fiなどの他の無線通信技術とうまく差別化を計れずに伸び悩んでいた所がありました。4.0において統合されました(注1⁠)⁠。Rate⁠)⁠,HS(HighSpeed)など,これまでのバージョンで追加されてきた規格も含んでいます。ここに新たに追加されたのがLEであり,4.0=LEではありません。4.0の後にも進化は続いていて,2014年12月には4.2の規格が発表されIPv6との連携なども考えられています。UriBeaconで利用されているのは,この省エネバージョンであるBLEの規格になります。BLEの手続きの流れ主題があまり逸れてしまわないように,ここではBLEの仕組みのうち,UriBeaconの動作の理解に必要な部分だけ簡単に解説していきます。それ以上のBluetooth及びBLEの情報について,より詳しくは専門の文献を当たっていただければと思います。アドバタイズBLEのフローはまずはアドバタイズという動作から始まります。BLEのサービスを提供するデバイスが,「⁠自分はこんなサービスを提供していますよ」と言う情報を周囲に発信します。この情報を載せたパケットをアドバタイジングパケットと言います。サービスの識別にはUUIDを利用します。UUIDが載せられます。ビーコンはアドバタイジングパケットを放出し,それぞれのパケットにはServiceを識別するためのUUIDが載っている1秒おき,あるいは0.5秒おきなど,設定されたインターバルに従い,このブロードキャスト処理を行います。インターバルが短いほど,相手に到達しやすくなるのですが,電力は消費しやすくなります。トレードオフを考慮してインターバルを設定することになります。ちなみに到達可能距離は10m程度と言われています。電力を弱めれば到達距離を短くすることも可能です。スキャンBLEのスキャナが起動しているデバイス(スマートフォン等)が,このように発信されているアドバタイジングパケットの到達範囲内に入ることでこのパケットを読み込み,解析します(注2⁠)⁠。注2)1つのアドバタイジングパケットで必要な情報を載せきれない場合は,ScanRequest/ScanResponseというやり取りでもう一段情報をやりとりすることも可能です。UUIDなどを見て識別を行い,このパケットの発信元が自分の求めるサービスを提供していると判断すると,接続処理を行います。接続を行うことで,デバイスが提供するサービスを利用することが出来るようになります。このとき必要であればペアリングなどを行いますが,BLEではペアリングを必要としない用途で使われることも多いようです。サービスとは何かではここで言う「サービス」とは何でしょうか(注3⁠)⁠。注3)BLEではGATTプロファイルというプロファイルの上でサービスを定義していきます。こちらに関してもより詳しくは専門の文献を当たってください。サービスにはcharacteristic(特性)と呼ばれる値がぶら下がっています。この値に対して読み書きしたり,値の変更をすることができます。エアコンのコントローラであれば次のような例が考えられます。エアコンのコントローラというサービスがあり,4BC78330-337F-4D08-89B4-9A1028B56583というUUIDを割り当てているエアコンのコントローラというサービスがあり,4BC78330-337F-4D08-89B4-9A1028B56583というUUIDを割り当てています。このサービスは3つのcharacteristicを持っています。それぞれのcharacteristicはUUIDをあてがわれています。現在の室温(9200B09-F42C-4408-8277-C084F31FA746)設定温度(47E26BA3-CF6E-4F2B-82F9-05A5C752287E)スイッチ(A0370A52-E8DC-4478-BECF-420C3E373666)BLEで利用するserviceやcharacteristicのUUIDが,あまりヒューマンリーダブルではないために,パッと見たときに難しく感じるかもしれませんが,次のようにWebのサービスと比較してイメージするとわかりやすいかもしれません。UUIDを指定して接続し,CharacteristicのUUIDを指定してread/writeなどを行う図注)ただし,ステートレスな処理が基本となるHTTPと違い,BLEの場合は一度serviceに接続すると基本的にはその接続を維持したままでcharacteristic読み書きを行います。HTTPのパスのように階層構造は持つことができず,characteristicは必ずserviceに直接ぶら下がることになります。基本的にはkey-valueペアのようなものだ,とわかってしまえば凄く単純な話です。いわゆるデバイスのon/offを制御するスイッチのような役割を持つcharacteristicもよく使われます。このように,writeすることで動作を切り替えることが出来るコントロールポイントとしても振る舞えるという点は覚えておきましょう。ちなみに上の例のエアコンのように,BLEでサービスを提供する側の役割をPeripheral(ペリフェラル),上の例のスマートフォンのようにサービスを享受する側の役割をCentral(セントラル)と呼びます。LE著者プロフィール加藤亮(かとうりょう)ソフトウェアエンジニア。比較的プロトコルとフロントエンド寄り。2014年7月よりリクルートテクノロジーズアドバンスドテクノロジーラボ所属。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。