Raspberry Pi を動かそう（Windows 10 IoT編）

本記事は Raspberry Pi に Windows 10 IoT Core をセットアップする際の手順を記した備忘録です。

Windows 10 IoT Core をインストールすると、面倒なGUIアプリケーションもVisual Studio Communityを使って簡単に作成することができます。
ユニバーサルWindowsプラットフォーム（UWP）アプリケーションを作成したことのある人なら、Raspberry Piのことを知らなくてもあっという間に高度なGUIアプリを作成できます。

しかしこのOSはRaspberry Pi専用のOSではなく、細かい制御を行おうとしても方法が見つからない場合があります。
私の場合、HDMIからの出力を制御したい事情があったのですが、残念ながら 2018年1月現在に至るまでその機能を実現できていません。

したがって、Windows 10 IoT Core での開発は現在 一時 中断しています。
この備忘録も作業再開に備えたメモ程度の内容となっています。
<br/>**[物理PC]**

|    |                 |
|:----|:----------------|
|モデル|MacBook Pro (Retina, 15-inch, Mid2014)|
|OS|macOS Sierra ver 10.12.6|
|メモリ|16GB|
|仮想環境|VMware Fusion バージョン 8.5.8(5824040)|
<br/>**[仮想PC]**

|    |                 |
|:----|:----------------|
|OS|Windows 10 Pro<br/>　バージョン:1709<br/>　OSビルド:16299.125|
|メモリ|4GB|
|ネットワークアダプタ|[ブリッジされたネットワーキング]<br/>自動検出|
<br/>**[Raspberry Pi]**

|    |                 |
|:----|:----------------|
|モデル|Raspberry Pi 3 Model B (日本製)|
|SDカード|TOSHIBA microSDHC UHS-I Card 32GB Class10|
|キーボード|ELECOM TK-FCM084BK (有線)|
|マウス|ELECOM M-XGL10UB Series EX-G (有線)|
|電源|公式 Raspberry Pi3 アダプタ 5.1V/2.5A|
|ディスプレイ|公式 7'' Touchscreen Display (element14製)<br/>　- 電源は本体GPIOピン(5V)より供給。|

## (事前検討)Windows 10 環境の用意
Windows 10 IoT デバイスを外部から操作するツールとして「Windows 10 IoT Core Dashboard」というアプリが提供されています。
このアプリはWindows OS上でしか動作しませんが、仮想環境に用意したWindows PCで上でも問題なく実行させることができます。

## (事前検討)OSイメージのSDメモリーカードへの書き込み
Macユーザは十分にご存知のはずですが、仮想PCからMac本体のSDメモリーカードを「デバイス」として取り扱うのは非常に困難です。
単なるファイルストレージとしてアクセスするには問題無いのですが、仮想デバイスとしては正常に取り扱うことができない様なのです。

Windows 10 IoT Core Dashboard が提供するOSイメージの「ダウンロードとインストール」機能が常に失敗するため、このままではSDメモリーカードに Windows 10 IoT Core イメージを書き込むことができません。
また、外付けのカードリーダー/ライターも試してみましたが、残念ながら状況は全く変わりません。

よって、この時点で Windows 10 IoT Core Dashboard からOSイメージを書き込むことを諦めました。

## (事前検討)NOOBSによるインストール
ここでようやく公式のインストールソフトウェアである「NOOBS」の存在を思い出しました。
複数のOSの中から一つを選び、任意のOSを簡単にインストールできる便利なツールという認識でしたが、インストール可能なOSについては No Check でした。

調べてみたところ、インストール可能なOSの中に「Windowd 10 IoT Core」をあっさりと発見しました。
SDメモリーカードを多少消費しますが、現環境でインストールを実施するには他に手段はなさそうです。

公式サイト（あるいはミラーサイト）から NOOBS をダウンロードして使用することにします。

## (準備)有線LANへの接続について
Raspberry Pi3 には無線LANモジュールが組み込まれており、NOOBSによるOSインストールの際にも利用することが可能です。

作業開始前に、使用する無線LANの「SSID」および「暗号化キー（パスワード）」を調べておきます。

## (準備)SDメモリーカードについて
下記のサイトを参考にしながら、今回はTOSHIBA製のSDメモリーカードを購入しました。

[Raspberry Pi 3で安定して使える相性の無い最適な microSDメモリーカードの種類のまとめ](http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_microsd_card_stable/)
http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_microsd_card_stable/

容量は大きいほど便利ですが、サイズが大きくなると金額も上がっていきます。
折衷案ということで32GBのメモリを購入しました。

## NOOBS のダウンロード
NOOBSはいわゆる「インストーラ」で、様々なOSを簡単な手順でインストールすることができます。
公式サイトのダウンロードページへアクセスし、「NOOBS」の画像をクリックします。
https://www.raspberrypi.org/downloads/

![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/c3483444-b992-c03d-8214-81ab9ef899a5.png)

NOOBSページが表示されたら、「NOOBS LITE」側の「Download ZIP」をクリックします。
通常の「NOOBS」にはRaspbian OSのイメージが含まれていますが、今回インストールするのはWindows 10 IoT Coreです。
このイメージを利用する機会はないので、OSイメージを持たない「ネットワークインストール専用」の NOOBS LITE をダウンロードします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/d202e7eb-998a-d7b5-9b6d-319e279d2e3e.png)
30数MBしかないので、ダウンロードにそれほど時間を要することもないと思います。
ダウンロードしたZIPファイルは事前に解凍しておきます。

## SDメモリーカードの初期化（フォーマット）
OSの標準ツールで初期化（フォーマット）すると、SDメモリーカードに最適化されていない状態でフォーマットされてしまい、アクセス性能が低下するようです。
下記サイトからダウンロードした「SD Card Formatter」を使って初期化（フォーマット）します。

[SD Card Formatter](https://www.sdcard.org/jp/downloads/formatter_4/)
https://www.sdcard.org/jp/downloads/formatter_4/

「InstallSD_CardFormatter0500.mpkg」のようなファイル名でダウンロードされるので、ダブルクリックしてインストーラを起動します。
その後はインストーラの指示に従ってインストールを進めます。

インストールしたSD Cars Formatterを起動してSDメモリーカードをPC本体のカードスロットへ差し込むと、次のような画面が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/0b6c174c-3b21-68d1-f863-a2b0037bdf36.png)
**フォーマット**ボタンをクリックして初期化（フォーマット）を実施します。
通常はオプションを変更する必要はありませんが、完全に内容を消去してから使用したいときは**上書きフォーマット**を選択します。

## SDメモリーカードへの書き込み
フォーマットしたSDメモリーカードは、通常のディスクドライブと何ら変わりません。
NOOBS LITEのZIPファイルの解凍によって作成された NOOBS LITEフォルダ（例． NOOBS_lite_v2_4）の内容全てを、SDメモリーカードへそのまま「コピー」してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/e6d6d301-3302-21ca-a96f-fee1a9fb2db8.png)

Finderから普通にコピーしても問題ありませんし、コンソールを起動して cpコマンド でコピーしても構いません。

## NOOBS の起動と無線LAN環境の設定
SDメモリーカードを Raspberry Pi3 へセットして電源を入れると、NOOBS が起動します。
ネットワークへ接続されていないので、最初は下記の画面が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/99b2aa77-212f-29bd-32d3-a629c48e6b97.png)

ツールバーの「Wifi networks」をクリックすると、認識している無線LANのSSID一覧が表示されます。
接続先のSSIDを選択後、接続用の暗号化キー文字列を「Password」欄へ入力してから「OK」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/a76c1e31-4e0e-dd2e-b74e-08a8ff4cb938.png)

無事に接続できた場合は、インストール可能なOS一覧が表示されます。
その中から「Windows 10 IoT Core」を探し、左端のチェックボックスにチェックを入れてから、ツールバーの「インストール」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/88b4ce34-40d1-0624-0ebd-1dbdb7eb6ce2.png)

## Windows 10 IoT Core のインストール
リリース版とプレリリース版のどちらかを選択してから「OK」ボタンをクリックします。
ここでは「リリース版」を選択しています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/1216d7ed-fa7b-500a-ee63-45d2fbcef395.png)

利用許諾画面で「YES」ボタンをクリックすると、OSのインストールが始まります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/2bc20f9f-d6c9-161b-5de2-9d4010f71ac6.png)

しばらく待たされますが、インストールが完了すると次の画面が表示されます。
「OK」ボタンをクリックすると、Windows 10 IoT Core の初期起動が始まります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/17aa1d82-5427-c904-099d-31218fb1710b.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/97731d71-e27d-07df-2bd1-5f30689aac1a.png)

言語選択画面では「日本語」を選択してから「Next」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/2bac92e2-9199-9366-9e1f-9852933077c7.png)

NOOBS 画面で入力した無線LAN設定は引き継がれません。
画面に表示された一覧の中から接続先のSSIDを探し、「接続」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/b82fe57f-ae07-2091-5a4b-34823cba1141.png)

「ネットワークセキュリティキー」の入力を促されるので、接続先SSIDの暗号化キーを入力してから「次へ」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/7e997e0b-19e5-3e59-2a6b-2a0cdd950d5a.png)

音声入力機能に関する質問ですが、当面利用する可能性はないので「Maybe Later」ボタンをクリックします。
思いっきり手が写り込んでいますね（汗）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/9517161c-f009-7890-3ab9-c7545e66ab6e.png)

次の確認画面では、そのまま「Get It」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/2bbbd6d9-9ef8-80a6-8d27-81f38c522475.png)

無事に起動すると次の画面が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/8815cb8c-7ee3-19ec-70f2-80595087f403.png)