2017 年も DevWire をよろしくお願いします! – DevWire (2017/1/30)


2017 年 1 月号
TwitterTwitter でつぶやく  FacebookFacebook でシェアする  LinkedInLinkedIn でシェアする
Index
Hot Topics
今年も見せます! マイクロソフトの流通向けソリューション
Windows 10 Enterprise E3 ライセンスの Qualifying OS に
Windows 10 IoT Enterprise が追加!
組込み製品に付加価値を! 新ビジネスをお手伝いします!
Azure IoT Gateway SDK を使ってみる
DevWire のバックナンバーをご紹介
正規販売代理店情報
セミナー・トレーニング情報
Column
IoT に適したプロトコルの要件を探る (その 5)
MQ (Message Queue) と MQTT 今岡工学事務所 代表 今岡 通博
ほっとひと息
編集後記「お正月は・・・」
DevWire 編集部 加藤 大輔
Hot Topics
今年も見せます! マイクロソフトの流通向けソリューション
寒さが厳しくなりましたが、いかがお過ごしでしょうか? 春が待ちきれませんが、春の到来を感じさせるイベントと言えばリテールテック Japan 社外サイトへ です。流通情報システムの総合展ですが、昨年のマイクロソフトは、「モノとクラウドの融合で実現する IoT 時代のおもてなしソリューション」をテーマにパートナー企業と展示を行い多くの方にマイクロソフト ブースへお越しいただきました。あまりにたくさんの方にお越しいただいたため、ブースに入れない時間帯もあり、ご迷惑をおかけしたお客様もいらっしゃいました。今年はその教訓を活かして、ブースが少し大きくなります。

今年のテーマは「流通業のデジタル トランスフォーメーション」。デジタルでどう流通業が変わるのか。今年は AI やコグニティブといった未来を感じさせるテクノロジーを使ったソリューションもご紹介します。今後の動向が知りたい方はマイクロソフト ブースにお越しください!
毎年、リテールテックと併設で行われる「スマーター リテイリング フォーラム」も同テーマでさまざまな事例や最新情報をご紹介いたします。登録サイトが公開されたら、リテールテック ホームページにバナーが掲載されますので、ぜひ、チェックしてみてくださいね! リテールテックに関しては来月号でもっと詳細にご紹介しますので、お楽しみに!

昨年のリテールテック マイクロソフト ブース
昨年のリテールテック マイクロソフト ブース

Windows 10 Enterprise E3 ライセンスの Qualifying OS に Windows 10 IoT Enterprise が追加!
この特典変更に伴い、これまで VDA ライセンスの購入が必要だった Windows 10 IoT Enterprise OS をご利用のお客様も Windows 10 Enterprise E3 ライセンスの購入で各種特典をご利用いただくことができます。

「え!? そもそも Windows 10 Enterprise E3 って何?」という声が聞こえてきそうですが、これまでは、ソフトウェア アシュアランスという呼び名でボリューム ライセンスとして企業のお客様にご購入いただいておりました。マイクロソフトの提供する製品、テクノロジー、サービス、使用権などをセットで特典として提供しており、常に最新バージョンを使えるなどのメリットがありました。Windows 10 Enterprise E3 は、7 月に開催したマイクロソフトのパートナー向けカンファレンスである WPC (Worldwide Partner Conference) で発表されており、Windows 10 Enterprise を 1 ユーザーあたり月額 7 ドルのサブスクリプションで購入することができ、その中にはソフトウェア アシュアランス時代と同様、VDA ライセンスを含むさまざまな管理ツールや機能が特典として含まれています。

エンドユーザー企業様向けのライセンスにはなりますが、Windows 10 IoT Enterprise 搭載の組込み機器を購入してお使いの企業がこの E3 ライセンスをうまく活用していただくことで、お得になる場合がありますので、ぜひ、チェックしてみてください。

組込み製品に付加価値を! 新ビジネスをお手伝いします!
ISV マッチング イベント 2017 冬
組込み機器に最適なソフトウェアを提供する ISV をマイクロソフトが厳選してご紹介するセミナーと商談会を実施します。注目のソフトを貴社の製品に組み合わせることで、製品単体売りからソリューション売りへの変革が実現できます。今回は、ISV 6 社のソリューションを紹介します。 ぜひご参加ください。

日時: 2017 年 2 月 24 日 (金) 10:30 - 17:30 (受付 10:00 -)
場所: 日本マイクロソフト 品川本社 31 階 セミナー ルーム A
対象: ハードウェア製造企業の BDM、開発者、エンジニア
費用: 無料

ISV 参加企業: アジュールパワー株式会社 様 社外サイトへ 株式会社 アロバ 様 社外サイトへ
株式会社 Empress Software Japan 様 社外サイトへ 株式会社 セラク 様 社外サイトへ
株式会社 タイプ・アール 様 社外サイトへ 株式会社 フューチャースタンダード 様 社外サイトへ

詳細情報や参加登録は、お申し込みサイトをご参照ください。

Azure IoT Gateway SDK を使ってみる
2 年振りに DevWire に登場!! Windows Embedded MVP "株式会社デバイスドライバーズ 代表取締役社長 日高亜友さん" から Azure IoT Gateway SDK について執筆していただきました。「前編」「後編」、2 号にわたってお送りします。
昨年の 11 月 GitHub で Microsoft Azure IoT Gateway SDK のリリース版 社外サイトへ が公開されました。Microsoft Azure Blog でのアナウンスはこちら。今回はこの IoT 開発において重要な役割を持つ SDK を実際に使うためのヒントを 2 回にわけて紹介します。 公開の直前に Microsoft MVP Global Summit に参加して、IoT Gateway SDK の興味深い Hands On Training を受講してきました。テキストは英語ですが、GitHub で公開されていたので紹介しようと考えていたところ、SDK の正式リリースにあわせて Hands On Training とほぼ同様のコンテンツが日本語で公開されていたので紹介します。

(概要)
Azure IoT Gateway SDK は、センサーやアクチュエータなどのデバイスを Microsoft Azure に接続して双方向通信を実現する IoT Gateway を容易に開発することができるソフトウェア キットで、2016 年 7 月からベータ版が公開されていました。Gateway は IoT を構成するデバイスとクラウドの接続点です。多くの機能と性能、セキュリティが要求される IoT の要とも言えるでしょう。

私は約 3 年前、Azure IoT 機能の先行実装版とも言える Azure ISS (Intelligent Systems Service) Limited Public Preview の SDK を Windows 8 と Ubuntu Linux 搭載の BeagleBone Black で評価して、どちらでも容易に Azure IoT Gateway を実装できる好感触を得ていたので、IoT Gateway SDK の正式リリースを心待ちしていました。

Azure IoT Gateway SDK はソース コードで提供されるので、あらゆる環境に移植可能です。現在動作検証されている OS 環境は次のとおりで、基本的にはハードウェアに依存しません。

・Ubuntu 14.04
・Ubuntu 15.10
・Yocto Linux 3.0 on Intel Edison
・Windows 10
・Wind River 7.0

SDK に含まれるサンプル プログラムは次のとおりです。

・ble  Bluetooth low energy (BLE) デバイスを Gateway に接続します。
・hello_world  "hello world" メッセージを定期的に送信します。
・identitymap  MAC アドレスを IoT Hub デバイスの ID と Key にマップします。
・iothub  IoT Hub に対してメッセージを送受信します。
・logger  受信したメッセージをファイルにログ出力します。
・simulated_device  Gateway に接続した BLE デバイスをシミュレーションします。
・azure_functions  Azure Function にメッセージを送信します。

今回は最新の 2016-12-16 版を、Raspberry Pi 3 / Raspbian GNU/Linux 8 (Debian 8.0 相当) でコンパイルして TI 製センサー タグと接続して ble サンプルで評価したところ、データを Azure IoT Hub と送受信できることを確認しました。Raspberry Pi 3 / Raspbian は、後述のドキュメントで動作手順が載っているため、実質的に動作対象と考えてよいでしょう。

(ドキュメント)
参考にしたドキュメントを次に示します。これらドキュメントのほとんどが IoT Gateway SDK のベータ版用の古い内容であり、なおかつ最新の Raspbian 8.0 には対応していないため、手順とおりに進めると不具合が発生します。後で手順と注意点を示します。

1. MVP Summit 2016 IoT Workshop 社外サイトへ
2. How To Send Device-to-Cloud Messages with the Azure IoT Gateway SDK 社外サイトへ
3. Azure IoT Gateway SDK - Linux を使用した物理デバイスで D2C メッセージを送信する
(2. とほぼ同じ内容の日本語版です)

また特に IoT Hub のページ 社外サイトへ の前半、「作業の開始」節は、コントローラーとして Intel Edison、PC Linux、Windows のアーキテクチャが混在して書かれているため、非常に分かり難くなっています。この節はいずれ修正されることが予想されるので、現時点ではすべて参照しない方がよいでしょう。

(機器と環境)
・Gateway コントローラー ハードウェア
Raspberry Pi 3 (Bluetooth と WiFi コントローラーを内蔵しています)
16GB 以上の MicroSD カードに最新の Raspbian をインストールしておきます。
ルーターを経由して有線 LAN でインターネットの Azure に接続できる環境を構築して使用しました。
初回起動時に raspi-config を使用して SSH サーバーを有効化するために、HDMI 接続ディスプレイとキーボードとマウスが必要です。

・センサー デバイス
Texas Instruments SimpleLink SensorTag CC2650STK
小さな赤いパッケージに封止されている 10 個の低消費電力 MEMS センサーと BLE 対応デバイスが内蔵されています。CC2650STK で検索すればネット販売でも秋葉原でも容易に入手できます。BLE (Bluetooth Low Energy) で Raspberry Pi 3 と無線通信します。

・開発用 Windows PC
Windows 10 搭載のデスクトップ PC を使用して、インターネットや Raspberry Pi 3 とは有線 LAN で接続しました。
開発作業はインストールした Tera Term から Raspberry Pi 3 に SSH 接続して行いました。ブラウザーで表示させたテキストのコマンドを簡単にコピーアンドペーストできるので便利です。また Azure 上のデバイスを管理、モニターするための DeviceExplorer を動作させます。

・Azure アカウント
実際に Azure IoT Hub に接続してテストするため、Azure アカウントが必要です。無料アカウントも利用できます。IoT Hub を作成しておきます。

・Raspbian のインストール (ハードウェアの準備)
NOOBS を使用したインストールを推奨します。2016-11-29 版 (Version 2.1.0) を 32GB の FAT32 でフォーマットした MicroSD カードに展開して使用しました。作業は Windows 10 マシンに USB MicroSD カードリーダー ライターを装着して、エクスプローラーを使用して展開した ZIP ファイルの内容をコピーするだけです。
MicroSD カードのコピーが終了した後は Raspberry Pi 3 にキーボード、マウス、ディスプレイ、LAN ケーブルを接続して起動します。少し時間がかかりますが、ディスプレイでインストールが進むようすを確認できます。
Raspbian 起動後はコンソールを開いて次のコマンドを入力してコンフィグレーション ツールを立ち上げます。
$sudo raspi-config

メニュー画面が表示されるのでカーソル キーと Enter キーを使用して、
「7. Advanced Options」
「A4 SSH」と進み「Would you like the SSH server to be enabled?」
の画面で<Yes>を選択して確定させます。
メニューは ESC キーで終了します。

写真 1:<br />
実験中の Raspberry Pi 3 と SensorTag
写真 1: 実験中の Raspberry Pi 3 と SensorTag
写真 2:<br />
raspi-config を<br>起動した画面。
写真 2: raspi-config を
起動した画面。
写真 3:<br />
作成した IoT Hub のプロパティ画面
写真 3: 作成した IoT Hub のプロパティ画面
以上で準備ができました。今回はここまでとさせていただきます。次回は実際にサンプル プログラムをビルドしてインストールする手順を示します。次回もお楽しみに!
DevWire のバックナンバーをご紹介
DevWire のバックナンバーをご紹介 これを読めば組み込み業界のすべてが網羅できる!

DevWire バック ナンバー サイトはこちら

【正規販売代理店情報】
アドバンテック株式会社 統合 IoT ソリューション 社外サイトへ
IoT 産業の発展を促進するため、マイクロソフトとの協力のもと WISE-PaaS IoT ソフトウェア プラットフォーム サービスを開発。お客様が迅速に IoT アプリケーションを構築できるオールインワン SRP (ソリューション レディ パッケージ) サービスをワンストップで提供していきます。
【セミナー・トレーニング情報】
セミナー・トレーニング情報 多くのセミナー、トレーニングを開催しております。
ぜひご活用ください。

●アヴネット株式会社 トレーニング 社外サイトへ
●岡谷エレクトロニクス株式会社 セミナー/トレーニング情報 社外サイトへ
●東京エレクトロン デバイス株式会社
トレーニング 社外サイトへ セミナー・イベント 社外サイトへ
●菱洋エレクトロ株式会社 イベント・セミナー情報 社外サイトへ

Column
 今まで「IoT に適したプロトコルの要件を探る」と題して 5 回にわたって連載をして参りましたが、いよいよ今回が最終回となります。
8 月号の「MQTT と AMQP の共通の特徴である MQ (Message Queue) についておさえておこう」に関して「MQTT は MQ (Message Queue) ではない」という指摘を受けました。ということで、今回はこの点について考えてみたいと思います。
MQ (Message Queue) とはネット上のノード間以外にも同一ノード内のプロセス間やスレッド間の通信に使われるソフトウエア コンポーネントです。たいていの場合 FIFO (先入先出) タイプのバッファーに Queue (キュー) いわゆる行列 (数学でいう行列ではなく「行列のできる○○」の行列の意) が構成されます。送信側のメッセージはキューにいったん格納され、キューにあるメッセージは受信側が取り出すまで格納されます。そのため送受信間で同時にメッセージをやり取りする必要がなく、いわゆる非同期のメッセージ交換を実現しています。

それでは本題の MQTT は MQ であるかという問題ですが、MQTT V3.1 プロトコル仕様には MQTT が MQ であることはどこにも書かれていません。また MQTT を MQ Telemetry Transport と表記しており、以前は MQ のところを Message Queue とは表記していたところを、最近は MQ としかあえて表記していません。なので仕様書では MQTT がメッセージ キューであることを暗に否定していると解する向きもあります。しかし仕様を細かく読んでみると、MQ の実装が適切ではないかと思われる箇所があります。
そのひとつが Clean Session の扱いです。これはサブスクライバー (メッセージを受信する側) がブローカー (メッセージを仲介するサーバー) に接続するときに設定するフラグです。
これを 1 に設定して接続に行くとブローカーは以前に保持していたサブスクライバーに関する情報をすべて破棄します。またサブスクライバーが接続を切断した時にブローカーはそのサブスクライバーの情報をすべて破棄します。
一方このフラグを 0 に設定して接続にすると、ブローカーはサブスクライバーの都合で接続を切断した場合でもサブスクライバーの情報を保持しなければなりません。そしてこれは QoS という通信品質を保証するレベルにもよりますが、ブローカーは同じサブスクライバーが再接続するまで、接続が失われた間のメッセージを保持する必要があります。
これらのことから MQTT を実装するうえでメッセージを保持するなんらかの機能が必須であることはお解り頂けたかと思います。確かにそれが MQ (Message Queue) である必要はないかとは思いますが、システムを実装するエンジニアにとって最初に頭に浮かぶのが MQ ではないでしょうか。
今回は MQTT V3.1 のプロトコル仕様に記載されている Clean Session というサブスクライバーがブローカーに接続にする際に設定するフラグをもとに、MQTT が MQ であるかというテーマで考えてみました。MQTT に詳しくないとわかりづらい術語が多々出てきたと思います。たとえばブローカーとかサブスクライバーとか QoS とか、これらについては順次コラムの中でも扱っていきたいと思っています。その後でこのテーマを思い出したらもう一度読み直して頂ければ幸いです。

このシリーズは今回を持って最終回となりますが、現在新しい企画も検討中です。また読者の皆様とは誌面でお目にかかれることを楽しみにしております。

ほっとひと息
編集後記「お正月は・・・」DevWire 編集部 加藤 大輔
遅ればせながら、明けましておめでとうございます。今年もよろしくお願いします。12 月号で予告したとおり見事に寝正月だった加藤です。寝正月だったにもかかわらず体調を崩したおかげで体重が増えずにすみました。ここは思い切って幸先がよいことにします!
ここ数年、「年末年始の独特な雰囲気」が無くなっている気がします。個人的には冬のゴールデンウイークみたいだなと思いました。あの独特の雰囲気を感じなくなったのは、年末年始だからこそする特別なことを、あまりしなくなったからかもしれませんね。

Comments (0)

Skip to main content