Center CLR Try!開発 #2

昨日は「Center CLR Try!開発 #2」に参加しました。

Try!開発とは、もくもく会のように、みんなで集まって気楽に開発をやるイベントです。 イベントというよりも、もくもく開発、寄り合い、寺子屋といった表現のほうが正しいのかもしれません。

今回は水曜日に告知からの土曜日開催なので、参加者3名と寂しい感じでした。

やること・教えてほしいこと

最初に「やること・教えてほしいこと」を自己申告でホワイトボードに書いて情報共有。

わたしは11/17に京都で開催される、AzureSphereセミナーのプレゼン資料の作成をやることにしました。(切実)

Matsuiさんは(あいかわらず)IL2Cの例外だそうです。お手伝いできそうなところはナイっす。

ayumaxさんは忘年会で使えるUnityアプリ開発。これまたお手伝いできそうなところはナイっす。(ちょっと面白そう、、、実際に使ってみたい。)

もくもく

それぞれバラバラな内容ってことで、教えてもらう・教えるみたいなのはほとんど無く、各自もくもく作るって感じになりました。

情報交換?で印象的だったのは、、、

  • C#のcatchにwhere句があるが、内部実装はスゲー大変。を切々と語られた。
  • ILには、よく考えて作られたものと、あまり考えられていないものに大別できるっぽい?
  • UEのC++にはGCがある(!)

わたしは、、、やる気が上がらず、途中でミスドへ買い出しにいったりしていました。場所が金山駅近くなので、買い物に便利です。買い食いが捗る。

やったこと・教えてほしいこと

終わりの1時間前に、「やったこと・教えてほしいこと」を自己申告で情報共有。

わたしは、しゃべっていたり、ミスドへ行ったりしていたので、、、全体の8割ぐらいできたかなぁという程度でした。

毎月開催します

このイベント、毎月第2土曜日に開催するみたいなので、興味ある方は気軽にご参加ください。

(当面は、cre8 BASE KANAYAMAにご協力いただき、こちらの会議室でやる予定です。)

最後に写真

雰囲気がわかる写真を撮っておらず、、、 Matsuiさんの本日の成果説明の様子をアップしておきます。

f:id:matsujirushix:20181111105536p:plain

AzureのFlow, Logic Apps, Functions, Virtual Machineの価格比較(定期実行時)

SeeedのWio Node、ちょっとしたデータ取得には便利なのですが、、、
連携しているWio Serverには定期的にデータを取得、チェック(たとえば、定期的に温度を測って、異常に高いときはEメール通知するとか)することができません。
Wio Serverは外部からリクエストが来ると、Wio Nodeへ問い合わせして、現在の値を取得する、、、という仕組みなので。

定期実行できて、ちょっとした条件を加えて、外部へ通知する、、、のに適したAzureサービスはなんだろう??主に価格面でw
というわけで、調べました。

Flow

  • Free
    • 無料
    • 実行数 750回/月(1回/時間)
    • 最短周期 15分
  • Plan1
    • $5.00/月
    • 実行数 4500回/月(6回/時間)
    • 最短周期 3分
  • Plan2
    • $15.00/月
    • 実行数 15000回/月(20回/時間)
    • 最短周期 1分

Logic Apps

※ 西日本リージョンの場合

Functions

  • 実行時間 0.001792円/GB・秒(毎月400000GB・秒が無料提供)
  • 総実行回数 22.40円/100万実行回数あたり(毎月100万実行回数が無料提供)
  • 開発はC#, JavaScript, F#, Java

※ 西日本リージョンの場合
※ ストレージを使った場合は別料金が発生
※ Azure IoT Edgeを使えば無料

Linux Virtual Machine

  • B2MS(Core x2, RAM 8GB)
  • 14.34円/時間

シナリオ

  • 2分周期でセンサーのデータを収集。
  • センサーは5台。
  • データはtwitterなどへ転送するものとし、Azure上で保持しない。

Flow

無理。 (Plan2でも、実行回数の制限に引っかかる。)

Logic Apps

2アクション+1Standardコネクタを5台。(という考え方で良いのかな?) 2438円/月。

Functions

総実行回数は22320回。(センサー5台を逐次取得した場合)
実行時間、、、わからん。

Linux Vertual Machine

10669円/月。

参考リンク

Azure Sphereテナントの作成(準備編)

こちらの記事を、分かりやすく書き直そうとしています。

matsujirushi.hatenablog.jp

予備知識

Azure Sphereテナント

MCUバイス(Azure Sphere対応MCU)のセキュリティ更新やプログラムアップデートなど、いくつかの機能を実現するために、マイクロソフトからAzure Sphereセキュリティサービスが提供されています。
Azure Sphereでは、このAzure Sphereセキュリティサービスの使用が必須です。MCUバイスをインターネットに接続してAzure Sphereセキュリティサービスと紐づけしない限り、MCUバイスにプログラムを入れることさえできません!!
そして、このMCUバイスAzure Sphereセキュリティサービスの管理範囲を、Azure Sphereテナントと言います。
具体的には、MCUバイスを紐づけたり、プログラムアップデートなどを指示するときは、Azure Sphereテナントを指定して操作します。

f:id:matsujirushix:20181002194209p:plain

Azure Sphereテナントの認証

Azure Sphereテナントのリソースに対する認証は、Azure ADテナントを使用します。
そのため、Azure Sphereテナントは1つのAzure ADテナントと紐づけされなければいけません。
また、Azure Sphereテナントで使える認証のアカウントは、組織アカウント(Work or school account)に制限されています。(個人アカウント(Microsoft account)は使用することができません。)

f:id:matsujirushix:20181002194806p:plain

Azure ADテナント

Azureのポータルにログインできる状態ですと、必ずAzure ADテナントが存在、使用しています。
自身が保有、利用できるAzure ADテナントは、Azureポータルの画面上部にある手帳マークをクリックすると、一覧表示されます。

f:id:matsujirushix:20181002213548p:plain

組織アカウントと個人アカウント

組織アカウント個人アカウントは、アカウント名からは判断できません。
Azure ADのユーザー一覧にある”ソース”列や、ログインするときに表示されるアイコンで判断します。

ソース列の"Azure Active Directory"は組織アカウント、"Microsoftアカウント"は個人アカウント
f:id:matsujirushix:20181002211727p:plain

ネームタグアイコンは組織アカウント、人型アイコンは個人アカウント
f:id:matsujirushix:20181002212126p:plain

計画

以上から、

  • どのAzure ADテナントを使うのか?
  • どの組織アカウントで認証するのか?

を決めて、用意してから、

  • Azure Sphereテナントを作成

する流れになります。

プライベートで使用しているAzureとか、大企業のAzureとか、状況によってどうするのがベストなのか迷うところですが、、、

プライベート使用であれば、普段選択されているAzure ADテナント組織アカウントを追加するだけで良いと思います。

たとえば、普段、選択されているAzure ADテナントが”xxx.onmicrosoft.com”だったときは、

  • Azure ADテナントは、xxx.onmicrosoft.comを使用する
  • xxx.onmicrosoft.comに、組織アカウント yyy@xxx.onmicrosoft.comを追加する

という感じで。

Azure Sphereテナントの作成(雑記版)

そろそろMT3620開発キットが手元に届いたころですね。
すぐにデバイスの電源を入れて動かしたいところではありますが、その前にAzure Sphereテナントを用意しておく必要があります。
MCU、OS、Cloudとあった3つのうちの、Cloudの部分です。 下図の赤マルのところ。
f:id:matsujirushix:20180926204703p:plain

今回は、このAzure Sphereテナントの紹介と作り方を書こうと思います。

Azure Sphereテナント

MCUバイス(Azure Sphere対応MCU)のセキュリティ更新やプログラムアップデートなど、いくつかの機能を実現するために、マイクロソフトからAzure Sphereセキュリティサービスが提供されています。
Azure Sphereでは、このAzure Sphereセキュリティサービスの使用が必須です。MCUバイスをインターネットに接続してAzure Sphereセキュリティサービスと紐づけしない限り、MCUバイスにプログラムを入れることさえできません!!
そして、Azure Sphereセキュリティサービスを使えるようにするには、「Azure Sphereテナントを作成する」という作業になります。

Azure SphereテナントAzure ADテナントに紐づいて作成します。これは、Azure SphereセキュリティサービスMCUバイスを追加したり、プログラムをOver-the-Airで配布したりするときの認証に組織アカウントを使うためです。

あー、ややこしい、、、

ざっくりと言うと、

  1. Azure ADテナントに、組織アカウントを用意した上で、
  2. (Azure ADテナントに紐づいた)Azure Sphereテナントを作成、
  3. (するとAzure Sphereセキュリティサービスが使えるようになって、)
  4. Azure SphereテナントMCUバイスを割り当てる ←Claim your device
  5. (と、MCUバイスの操作が可能になる)

です。

んー、図にしないと分かりにくい(汗

Azure ADテナント

現状、2のAzure ADテナントAzure Sphereテナントの紐づけをあとから変更したり、4のAzure SphereテナントMCUバイスの割り当て変更ができません。
そのため、どのAzure ADテナントを使うかを考えて決断が必要です。
さらに、、、このAzure ADテナントがまた理解し辛い。
どのAzure ADテナントを使うかは、次の3シナリオのいずれかになると思います。

  1. 個人アカウントのAzureで、デフォルトで作られたAzure ADテナント
  2. 個人アカウントのAzureで、新たに作成した(する)Azure ADテナント
  3. 組織アカウントのAzureで、組織のAzure ADテナント
  4. 組織アカウントのAzureで、新たに作成した(する)Azure ADテナント

推奨は、個人アカウントのAzureは2、組織アカウントのAzureは3のようです。

1のケースは公式ドキュメントに書かれていないため、本当に可能かは不明です。

個人アカウントと組織アカウント

これも良く話題になることですが、自分が使用しているのが個人アカウント組織アカウントか判断がつきにくいです。

Azureにログインするときに、「ひとアイコン」は個人アカウント、「ネームタグアイコン」は組織アカウントです。

(下図の上2つが個人アカウント、3つ目が組織アカウント
f:id:matsujirushix:20180926213343p:plain

個人アカウントのAzureで、新たに作成した(する)Azure ADテナント

さきほどの2のケースが多数だと思うので、これについて手順をサラッと書いておきます。

Azure ADテナントを作成

Azure Sphereテナントと紐づけるAzure ADテナントを作成します。
手順はこちら。

docs.microsoft.com

組織アカウントの作成

セキュリティポリシー的に?Azure Sphereテナントは組織アカウントが必須なので、組織アカウントを作成します。

こちらの3と4。

https://docs.microsoft.com/ja-jp/azure-sphere/quickstart/qs-azure-directory-account#create-a-new-account-and-directory-that-are-associated-with-an-existing-accountdocs.microsoft.com

Azure Sphereテナントを作成

azsphere loginして(このときに使用するアカウントはさきほど作成した組織アカウント)、azsphere tenant create -n ホゲホゲ で。

こちらの2と3。

https://docs.microsoft.com/ja-jp/azure-sphere/quickstart/claim-devicedocs.microsoft.com

Azure Sphereテナントを確認

azsphere tenant list で、作成したテナントを確認することができます。

最後に

わたし一人ではさまざまなケースをテストできないので、、、
みなさんのやってみた結果をコメントいただけると嬉しいです。

Azure Sphere開発ツール

Azure Sphereのアプリケーションは、Visual Studio + Azure Sphere SDKで開発します。

  1. Windows 10 Anniversary Update以降(1607以降)
  2. Visual Studio 2017 Enterprise/Professional/Community 15.7以降
  3. Azure Sphere SDK Preview for Visual Studio

1と2を事前に準備しておき、Azure Sphere SDK Preview for Visual Studioをネットからダウンロードして実行、インストールすればOKです。

Azure Sphere SDKインストール前

Windows 10を1607以降にアップデートしておきます。
winverコマンドでバージョンを確認しておきましょう。
現在の最新は1803です。

f:id:matsujirushix:20180924184817p:plain

Visual Studioは15.7以降にアップデートしておきます。
現在の最新は15.8.5です。

f:id:matsujirushix:20180924190256p:plain

Azure Sphere SDKインストール

Azure Sphere SDK Preview for Visual Studioをダウンロードして実行します。

f:id:matsujirushix:20180924190411p:plain

OpenVPN TAP driverを入れぞ!と赤字で協調されていてドキドキしますが、気にせずInstallボタンをクリックしてインストールを進めます。

f:id:matsujirushix:20180924190552p:plain

あとは待つだけ、、、

f:id:matsujirushix:20180924190615p:plain

f:id:matsujirushix:20180924190711p:plain

インストール後

インストールされた結果をいくつか確認しましょう。

プログラムの一覧に、Visual Studio Tools Preview for Azure Sphereが追加されました。

f:id:matsujirushix:20180924190922p:plain

メニューに、Azure Sphere > Azure Sphere Developer Command Prompt Previewが追加されました。
今後、このコマンドプロンプトで「azsphere」というコマンドを実行することが多々あります。

f:id:matsujirushix:20180924191238p:plain

Visual Studioには、Visual Studio Tools Preview for Azure Sphere拡張が追加されました。

f:id:matsujirushix:20180924191403p:plain

このVisual Studio拡張によって、新規プロジェクトのVIsual C++ > クロスプラットフォーム に、Azure Sphere が追加されました。

f:id:matsujirushix:20180924192635p:plain

以上、終了。

一般的な組み込み系のツールと比較して、Azure Sphere SDKを実行するだけのあっさりとした仕組みになっています。
EXE、1個を実行するだけの簡単インストールで良いですね♪

以下、余談

赤字で表示されていたOpenVPN TAP driverって何ぞ?ですが、、、
Visual Studioやazsphereコマンドはパソコン内の仮想ネットワークを経由してMCUバイスと通信する仕組みになっています。

Visual Studio, azsphere <-> TAP driver <-> Azure Sphere Device Communication Service <-> USB <-> MCUバイス

そんなわけなので、ネットワーク接続にAzure Sphereという接続(これがTAP driver)と、

f:id:matsujirushix:20180924191902p:plain

WindowsサービスにAzure Sphere Device Communication Serviceが追加されています。

f:id:matsujirushix:20180924192135p:plain

MT3620開発キットを買う前に知っておくべきこと

Seeedが販売するAzure Sphere MT3620開発キットを購入する前に、知っておくべきことを書いておきます。
購入してから「あー、買って失敗だった。使えねー。」とならないためにも。

Search results for: 'Azure Sphere MT3620'

はじめに

本文書はマイクロソフト、Seeedの正式な文書ではありません。
マツジルシ個人のメモです。
ライセンスなど、デリケートな部分は各社の文書をご確認ください。

Azure Sphere MT3620開発キット

Azure Sphere対応MCUMediaTek MT3620が載った、Azure Sphereの開発用キットです。
内容物は、

  1. Azure Sphere MT3620開発ボード
  2. USBケーブル

の2つ。

取扱説明書といった類は一切入っていません!(キッパリ

f:id:matsujirushix:20180924115546p:plain

Wi-Fi電波などの都合で、製品が { US, EU, JP } の3種類あります。
日本で使うなら JP(SKU 102991100)を。

f:id:matsujirushix:20180924120232p:plain

開発ツール

MT3620のアプリケーションは、Windowsパソコン上のVisual Studio 2017で開発します。

パソコンの要件はこちら。

  1. Windows 10 Anniversary Update以降(1607以降)
  2. Visual Studio 2017 Enterprise/Professional/Community 15.7以降
  3. Azure Sphere SDK Preview for Visual Studio

MacLinuxでは開発できません!

3のSDKはネットからダウンロード可能なので、MT3620開発キット購入前にコンパイルまで出来るか確認しておくと安心です。(MCUバイスが無くてもコンパイルまでは可能です。)

(情報ソース)

Azure

ここがややこしい!

MCUバイスをUSBからプログラム可能にするには、

  • Azure ADを用意して、
  • Azure Sphereテナントを作成して、(& 紐づけ)
  • Azure ADにADユーザーを作成して、
  • MCUバイスをADユーザーに割当てして、(クレーム)(←ちょっと間違っているかも?)
  • MCUバイスをUSBからプログラム可能にする。(サイドローディング)

と操作します。

そのため、Azureアカウントが必要です。

Azure Sphereテナントなどは、Azureアカウントで費用は一切かかりません。

ライセンス

製品ページに注意事項があります。

  • 出荷国に制限あり。(日本はオッケー)
  • 返品不可。
  • プロトタイプ用途に制限。製品に組み込んではダメ。

さらに、End User Lisense Termsがあるので、こちらもご確認を。

返品、所有権の移動

MCUバイスとAzure Sphereテナントの割当て(クレーム)は1度しかできません。
割り当ての変更や解除はできません。

使えない機能

9/24 20:30に加筆

現在はAzure Sphere SDKPreviewということもあり、ハードウェアの一部機能が使用できません。

これらの機能をサポートするスケジュールは公開されていませんが、早く使えるようになって欲しいですね。

最後に

後半、気が滅入るような内容が続きましたが、、、
最新テクノロジーをちょこっと試してみよう!といった感覚で使ってもらえると嬉しいです。

配線が苦手な人向けにMT3620 Groveシールドとか、センサーなどがセットになったAzure Sphere Grove Starter Kitという製品もありますので、時間を短縮したい方は一緒にどうぞ。

Azure Sphereとは?

まもなく、SeeedからAzure Sphere MT3620開発キットが出荷になるぞい!ってことで、Azure Sphereについて整理してみました。

Azure Sphereとは?

azure.microsoft.com

Azure Sphere は、極めてセキュリティの高いインターネット接続マイクロコントローラー (MCU) デバイスを開発するための新しいソリューションです。このソリューションで提供されるセキュリティと接続の基盤を利用すれば、大規模なモノのインターネット (IoT) 実装が可能な価格で、顧客に愛されるインテリジェントな製品とエクスペリエンスを開発できます。そして、それらの製品をすばやく市場に投入できます。

ポイントを抜き出すと、

  1. MCUバイスを開発するためのソリューション
  2. インターネットに接続するMCUバイス
  3. 極めてセキュリティの高いMCUバイス
  4. 大規模なIoT実装が可能な価格
  5. 製品をすばやく市場に投入

大雑把にいえば、Azure SphereMCUバイスを開発するために、MCUOSCloud(と開発ツール)のすべてを提供するソリューションです。 対象のMCUバイスインターネット接続するのが特徴で、ネットからの攻撃、侵入に耐えられるよう極めて高いセキュリティを実現することができるよう設計されています。また、この手のMCUバイスでは珍しく、自動OSアップデートが提供されており、新たな脅威に対しても防御することができます。

MCU

MCUがAzure Sphereに対応するには特定の要件を満たす必要があります。要件が明記された文書は見つかりませんが、ほぼこちらに書かれています。

f:id:matsujirushix:20180924104300p:plain

推測ですが、FLASH 4MB, SRAM 4MB, Microsoft Pluton, ARM Cortex-AとNetwork Connectionは必須と思います。

現在入手可能な唯一のAzure Sphere対応MCUは、台湾MediaTekが製造するMT3620です。
Product Briefが公開されていますが、、、ペリフェラルレジスタ操作など詳細は公開されていません。

www.mediatek.com

f:id:matsujirushix:20180924104943p:plain

”現在入手可能”と書きましたが、個人ではMT3620単体を購入することは(たぶん)無理です。
Seeedから開発キット「Azure Sphere MT3620開発キット」が販売されているので、開発初期はこれを使うことになります。

Search results for: 'Azure Sphere MT3620'

OS

コアが複数載っており、各コアの役割が別々なので、、、OSは1種類では無いようです。
OSというより、サブシステム毎に考えたほうが良さそうです。 このあたり、今後、用語を整理していきたいところではあります。

今の時点で認識しておいたほうが良さそうなサブシステムは次の3つです。

  1. Microsoft Pluton security サブシステム
  2. Application processor サブシステム
  3. Wi-Fi サブシステム

1と3は、マイクロソフト?が開発、保守する部分なので気にしなくて良いでしょう。(おぃ
ここのOSが何なのかはハッキリ分かりません、、、

2は、我々が開発したアプリケーションが動くサブシステムで、ARM Cortex-A上で実行されます。ここがカスタムLinuxカーネルで動いています。

f:id:matsujirushix:20180924112047p:plain

Linuxと聞くと、Shellが立ち上がってlsとか操作するんでしょ?と思いがちですが、、、Application processorサブシステムにはShellが無いです。

さらに、これ。

Only one A7 application runs on the device at a time.

同時に1つのアプリケーションしか動かないです。

(このあたりの詳細については、引き続きブログで紹介できたらと思っています。)

Cloud

AzureにAzure Sphereセキュリティサービスが動いて、MCUバイスとネットワーク連携します。
Azure Sphereセキュリティサービスから、MCUバイスのアプリケーションを配布(Over-the-Air)できます。

f:id:matsujirushix:20180924113904p:plain

つづき

次は「MT3620開発キットを買う前に知っておくべきこと」を書こうと思います。

宣伝

Azure Sphereセミナーやります。 (すでに満席ですが、、、 キャンセル待ちに並んでおけば繰り上がるかも?) algyan.connpass.com