10/1 "Azure Sphere 爆誕最速セミナー" 参加ログ

## ALGYAN のイベントに参加しました

未明までの台風に加え、内定式がちらほらと行われていた中で開催された [ALGYAN](https://algyan.connpass.com/) のイベントに参加してきました。
写真とかなにも無くてサーセン。

行ってきたのは [いよっ！IoTの真打ち解禁！Azure Sphere(スフィア)爆誕最速セミナー@Microsoft](https://algyan.connpass.com/event/95907/) です。
とても濃い内容で、追い付くのが精いっぱい。

間違っている、抜けている、付け足したい、ということであれば編集リクエストをぜひください！

Seeed 松岡さんの [Azure Sphere MCU の資料](https://www.slideshare.net/TakashiMatsuoka2/azure-sphere-mcu) が公開されました！！

## そもそも IoT や MCU ってさ

まずは助走を [太田さん@MS](https://twitter.com/embedded_george) から。
資料は公開していただきました。ありがたい！！ [こちらをクリック](https://aka.ms/sphereG201810)

- MCUの波は2期目。1はMCU自体の登場、2はインターネット接続
- 毎年90億のMCU搭載デバイス。connectedなのは1% ※要出典
- connected device におけるセキュリティの 7 つのfeatures
- IoTってお客とつながってる、それに興味がないってのは会社としてヤバい。だから、「IoTって役に立つんですか」って論外だよねー

## Azure Sphere Architecture

概要は [Azure Sphere architecture](https://docs.microsoft.com/en-us/azure-sphere/product-overview/architecture) に掲載されています。
余談ですが、昨今のMicrosoftはコードとかドキュメントとかかなりオープンです。

### Azure Sphere ハードウェア側

![Azure Sphere Hardware architecture](https://docs.microsoft.com/en-us/azure-sphere/media/graphic-mcu-01.png)

Hardware Architecture 的には Cortex-A(7) と Cortex-M(4) が載ってますが、アプリケーションは A(7) 上で動かすことになります。
M(4) は I/O※ サブシステムのリアルタイム制御用です。今はSDKは未対応なので使いことができません。

ここまで見ると昔の [Centrino](https://ja.wikipedia.org/wiki/Centrino) っぽい規格のように見えますが、キーは [**Pluton security subsystem**](https://docs.microsoft.com/en-us/azure-sphere/product-overview/architecture#microsoft-pluton-security-subsystem) です。
構成は [MONOist さんのページ](http://monoist.atmarkit.co.jp/mn/articles/1806/29/news016_2.html) に詳しく載ってますが、CPU としての Cortex-M4, Cryptgraphic Engine, Hardware root of trust, Random Number Generator などセキュアなシステムを作る際に必要なファンクションが揃っており、さらにDevice IDを格納する領域もあると思われる(資料が見当たらず)
→ この値を基に Azure Sphere Securoty Service 上でデバイスを識別し、管理やOTA等を行っていく事になる

### Azure Sphere アプリケーション側

![Cortex-A software architecture](https://docs.microsoft.com/en-us/azure-sphere/media/cortexasoftwareplatform.png)

アプリケーションは Linux kernel 上のコンテナで実行される。(Containerize テクノロジーは不明だが、他のコンテナ技術同様に OS からプロセス的に隔離された形になる模様)
実行はRAMへのロード無にフラッシュから直接できる XIP (Execute-in-place) を用いることで、RAMの消費が抑えられるし、電源断にも耐えられる。
Microsoft との責任分界点はライブラリで提供されるAPIになる。

アプリケーションイメージの配布は Azure Sphere Security Service によって行われ、その際署名(Certificate Auth.)がされたイメージのみ実行可能。これによってアプリケーションの正当性を保証する枠組みが提供されることになる。要するに App Store のようなものです。

一方、野良アプリのデプロイについては USB 経由でのサイドローディングが可能。

アプリケーションイメージは複数デプロイできる？ようだが、実行は同時には１つという形。Linux kernel が動くからといってドライバを追加したりとUser Mode上のソフトウェア構成を変更できるわけではなく、どちらかというと、Arduino のような環境上でThreadなどPOSIX APIが叩けると思ったほうがいい。

アプリケーションの通信先はAzureにロックインするものでは無い。
Azure IoT Hub 等を簡単に使えるライブラリはMicrosoftから提供されるけど、それに限ったものでは無い。ただ、アプリケーションイメージの更新をOTAで行う場合は、先に紹介した通り Azure Sphere Security Service を通じて"のみ"行える。

## 開発環境編

[MT3620 開発ボード](http://akizukidenshi.com/catalog/g/gM-13677/) を使うのが最短。
その前に [MT3620開発キットを買う前に知っておくべきこと](http://matsujirushi.hatenablog.jp/entry/2018/09/24/124951) を見ておくのは必須かな。

とくに「実質の開発環境は Windows 10 のみ」という点に注意。

## おわりに

この２～３年のマイクロソフトは「マイクロソフト帝国」と言われていた面影はなく、開発者と共に歩む姿勢と「使えるモノは Linux だろうが gdb だろうが使う！それよりも開発者の幸せを！」ということを実現しようとしていると感じてます。

登壇された太田さん、松岡さん共に「まだ、若いプロダクト」ということを強調されてましたが、「フィードバック」が容易に反映される、そんな時代が来ているんだなーという、月並みでサーセン。

## 宣伝

11/24(土) に [IoT つくるよ](https://www.tsukuruyo.net/) を開催します！
ソラコムもハンズオンセッション持ってますので、是非とも現地でお会いしたいです！

EoT