【初めの一歩】Azure Sphereを動かしてみた　～セットアップ～

#はじめに
ある日の外出中、メールで「Azure Sphereのトレーニングあるから行ってきてね！」とお達しがあり、
外出から戻ると自分の席の上にAzure Sphere Kitが置かれていたところから始まりました。

ひとまず、触ってみないことにはトレーニング行くのも気が引けるな、と思い、Azure Sphereの公式ドキュメントを一通り進めてみたので、それをレポートします。

#開封。
使う機材はこちら。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482426/9ef714df-8299-df8e-275f-e1b0938b8e28.png)


中身はこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482426/766add2e-0fcc-ef9e-0d98-111fd843a470.png)



#最初のセットアップ
まずは公式ドキュメントをなぞってみることにしました。
参考にした情報は以下です。
https://docs.microsoft.com/ja-jp/azure-sphere/

Azure Sphereの概要についてつらつらと記載があるのですが、「ひとまず、動かしたほうが理解が進みそうだな。」という直感にしたがって、
「開発キットの使用を開始する」の下にある手順を進めてみることにしました。


○デバイスの接続とSDKインストール
https://docs.microsoft.com/ja-jp/azure-sphere/install/install
まずはPCにAzure Sphereデバイスを接続して、デバイスマネージャーで認識されていることを確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482426/b18f1c71-a094-b1fe-18b5-445ba013641e.png)

おっ、見えましたね！
次は、SDKなどの開発に必要なもろもろの機能をインストール！
※余談ですが、このインストールの際にAzure Sphereデバイス用のネットワークアダプターもセットアップされるので、デバイスはPCに接続したままインストールしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482426/0c743646-dfd4-2fe4-3ad6-ad0158bcbaeb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482426/49b38952-b535-1173-b67d-f419cd41b71a.png)


○デバイスのOSバージョンを確認
https://docs.microsoft.com/ja-jp/azure-sphere/install/install-os
ここからは、SDKと一緒にインストールした開発者用コマンドプロンプトをガシガシ使っていきます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482426/9ea45a24-f522-8ea6-183c-e293e9410503.png)
「スタート」メニューを開けると、「Azure Sphere」の中にこんなコマンドプロンプトが入っています。「A」なのですぐに見つかります。
ちなみに、コマンドプロンプト系はだいたい管理者権限で開きがちです。。。権限エラーには遭遇したくないですww
コマンドプロンプトが開いたら、最初に以下のコマンドでOSのバージョンを確認します。

```ruby:cmd
azsphere device show-ota-status
```

基本的にはインターネットに接続すると最新のOSバージョンを落としてくるようですが、一応何になっているのか気になりますよね。。
ちなみに、OSの最新バージョンや、そのほかのUpdateについては以下で最新の状況を確認できます。
https://azure.microsoft.com/ja-jp/updates/?product=azure-sphere
※リリースノートでも良いのですが、URLが更新される可能性が高いので、上記にしています。

○Azure Sphereデバイスをテナントに登録
ドキュメントを読んでみましたが、Azure Sphereを利用する際にはAzure Sphereテナントというものが必要になるようです。これはAzure ADとは別ものです。
ややこしいですね。。。
ひとまず、これをやらないことにはうまく接続や管理ができないようなので、やってみましょう。

まず、コマンドプロンプトでMicrosoftアカウントのログインをします。
https://docs.microsoft.com/ja-jp/azure-sphere/install/claim-device
(すでにユーザーを所持しているので、ここは飛ばします。
https://docs.microsoft.com/ja-jp/azure-sphere/install/azure-directory-account)
ログインのコマンドを実行し、Microsoftアカウントの認証を突破！

```ruby:cmd
azsphere login

[結果]
The selected Azure Sphere tenant '****.onmicrosoft.com' (66***e2c-0**3-4**2-9**7-ccba***a***d) will be retained.
Successfully logged in with the selected AAD user. This authentication will be used for subsequent commands.
Command completed successfully in 00:00:20.1760073.
```

次に、Azure Sphereテナントを作成します。ここで一瞬だけ横道に逸れます。
https://docs.microsoft.com/ja-jp/azure-sphere/install/create-tenant

以下のコマンドの<my-tenant>を自身の好きなテナントの名前にしてコマンドを実行します。

```ruby:cmd
azsphere tenant create --name <my-tenant>

[結果]
Created a new Azure Sphere tenant:
 --> Tenant Name: ****.onmicrosoft.com
 --> Tenant ID:   66***e2c-0**3-4**2-9**7-ccba***a***d
Selected Azure Sphere tenant '****.onmicrosoft.com' as the default.
You may now wish to claim the attached device into this tenant using 'azsphere device claim'.
Command completed successfully in 00:00:35.9610975.
```


テナントの作成ができたら、先ほどのページに戻って、以下のコマンドでテナントに要求を出します。

```ruby:cmd
azsphere device claim

[結果]
Claiming device.
Successfully claimed device ID '2A30E*****0124B506645*****1157D7E6E7C31F2*****627CDF60*****D7C2973F261C*****A450778F9E70A*****20121168E537*****EC18CD75*****9EF45' into tenant '****.onmicrosoft.com' with ID '66***e2c-0**3-4**2-9**7-ccba***a***d'.
Command completed successfully in 00:00:04.2590155.
```

※テナントへの要求はデバイスごとに1度きりしかできませんので、実行する際は要注意です！

○ネットワークを構成
Azure Sphere専用コマンドプロンプトでネットワークを追加します。

```ruby:cmd
azsphere device wifi add --ssid <yourSSID> --key <yourNetworkKey>
```

コマンド上の<yourSSID>と<yourNetworkKey>はご利用のWi-Fi環境のSSIDとKeyに置き換えてください。
少し反映まで待ちますが、接続状態を以下のコマンドで確認します。

```ruby:cmd
azsphere device wifi show-status

[結果]
SSID                : ****
Configuration state : enabled
Connection state    : connected
Security state      : psk
Frequency           : 2437
Mode                : station
Key management      : WPA2-PSK
WPA State           : COMPLETED
IP Address          : 1**.1*8.**.120
MAC Address         : 00:**:b5:**:31:b9
```

上記のように、「Configuration state：enable」、「Connection state：connected」となれば、設定は完了です。

#まとめ
セットアップのみなので、時間はそこまでかからないですが、ドキュメントの内容を理解するのはあまりすんなりいかないですね。。。
Azure Sphereで使う単語や言い回しが多いのも、理解の難易度を上げる要因かもしれないです。

次は、アプリケーションを動かしてみます！