■サンプルファイルのダウンロードについて
本書掲載のサンプルファイルは、下記 URL からダウンロードできます。

http://-----------------------------------

・本書の内容についてのご意見、ご質問は、お名前、ご連絡先を明記のうえ、小社出版部宛文書（郵送または E-mail）でお送りください。
・電話によるお問い合わせはお受けできません。
・本書の解説範囲を越える内容のご質問や、本書の内容と無関係なご質問にはお答えできません。
・匿名のフリーメールアドレスからのお問い合わせには返信しかねます。
本書で取り上げられているシステム名／製品名は、一般に開発各社の登録商標／商品名です。本書では、™ および ® マークは明記していません。本書に掲載されている団体／商品に対して、その商標権を侵害する意図は一切ありません。本書で紹介している URL や各サイトの内容は変更される場合があります。

はじめに
IoT（Internet.of.Things.=. モノのインターネット）とは、世の中に存在するさまざまな物体（モノ）にネットワーク機能を持たせ、インターネットに接続することです。本書は、Windows.10.IoT.Core を IoT のオペレーティングシステムとして採用した IoT デバイスの開発手法を解説します。

Windows.10.IoT.Core は、従来の IoT 用オペレーティングシステムと異なり Windows.10の仲間です。このため、IoT 用のプログラムを Windows.10 上の Visual.Studio で開発できます。
この点が、他の IoT オペレーティングシステムと大きく異なります。
本書は、IoT デバイス開発において、初心者が戸惑う初期の環境設定や、簡単なプログラムの開発を丁寧に解説します。クラウド側や Visual.Studio で開発する UWP アプリケーション（ユニバーサル Windows プラットフォーム）、そして C# については最小限の解説に留めます。
本来、Windows.10.IoT.Core 全体を理解するには、クラウド側、デバイス側、各ハードウェ
ア、UWP、そして C# やネットワークなど、多岐に渡る知識が必要とされます。それらを一冊にまとめるのは非常に困難です。そこで、本書はデバイス側に重きを置き、IoT 理解の導入となることを目指します。

Windows.10.IoT.Core を使用すると、ハードウェアを意識することなく、IoT デバイスのア
プリケーションソフトウェアを開発できます。これによって、ソフトウェアエンジニアはハードウェアの知識は最低限の理解で済み、IoT デバイスのアプリケーションソフトウェア開発に専念できます。Visual.Studio の C# で開発できるため、
Windows アプリケーションソフトウェ
アと同じような要領で行うことができます。
一般的なソフトウェアの世界に住む人が、IoT デバイス（組み込みシステム）へ挑戦するときに壁となるのは、プログラミングの違い以前に環境の違いです。一般的なソフトウェア開発の場合、ハードウェアの構成などに気を遣う必要はありません。ところが組み込み環境では、
ターゲットシステムを何にするか、デバッガは何を使うか、開発環境に何を用いるかなど悩みどころが多いです。そして、ドライバやミドルウェア、そしてオペレーティングシステムまで
ポーティングする必要があり、開発に入るまでに習得することが多すぎます。かつ、これらの組み合わせは多岐に渡るにも関わらず、情報は断片的なため組み込みシステムに慣れた人でも戸惑うことが少なくありません。その上、ボードに半田付けなどを行わなければならない場合もあり、さらに敷居を高くしています。本書は Windows.10.IoT.Core を使用することによっiii

て、これらの困難を、なるべく取り払いました。アプリケーションに使用する部品の購入なども、すべてネットで入手可能なものを選び、半田付けが必要な場合でもなるべく最小限とし.
ます。
本書の対象読者は、以下のような人を想定しています。

. ●. IoT（Internet.of.Things）の開発に興味のある人. ●. Visual.Studio で IoT デバイスを開発したい人. ●. Windows.10.IoT.Core に興味のある人
是非、本書を参考に IoT の世界へ飛び込んでください。微力ながら本書が学習の助けになれば幸いです。
謝辞
出版にあたり、お世話になった株式会社カットシステムの石塚勝敏氏に深く感謝いたします。

2019 年初秋 都立東大和南公園付近にて.北山洋幸

iv

本書の使用にあたって-------------------------------------------------------------開発環境、および、実行環境の説明を行います。
■ホストシステム
ホストシステムは Windows.PC です。Windows のバージョンは 10 を使用してください。

Windows.10 以外を使用すると、さまざまな困難が発生します。
■ターゲットシステム
ターゲットシステムは Raspberry.Pi.2.Model.B あるいは、Raspberry.Pi.3.Model.B です。
すべての確認を行ったのは Raspberry.Pi.3.Model.B です。Raspberry.Pi.4 でも問題ないだろうと予想されますが、確認は行っていません。
■ Windows 10 IoT Core バージョン

Windows.10.IoT.Core のバージョンへ依存するとは思えませんが、確認した Windows.10.
IoT.Core バージョンは、執筆時最新の 10.0.17763.107 などを使用しました。ホストのバー
ジョンと異なる場合がありますので、バージョンの整合性に留意してください。詳細については本文で解説します。
■開発環境

Windows.10.PC へ無償の Visual.Studio.Community.2019 をインストールして使用します。
■開発者モード

Windows.10.PC は、開発者モードで使用する必要があります。詳細については、本文で解説します。
■ユーザーアカウント
近年の Windows はユーザーやアカウントの管理が強化されています。例えば、「標準ユーザー」ではプログラムのインストールやアンインストールは制限されます。各種ソフトウェアのインストールやセットアップで警告が出ることがありますので、「管理者」で実行することを推奨します。もちろん、管理者アカウントを使用する場合、危険なこともできますので、十分注意してください。

v

■ Visual Studio のバージョンとエディション
基 本 的 に、Windows.10.IoT.Core の IoT デ バ イ ス を 開 発 す る 場 合、Visual.Studio.

Community.2019 を使用します。もちろん 2019 であれば有償版でも構わないでしょう。
■ネットワーク環境
ホスト（Windows.PC）とターゲット（Raspberry.Pi）をネットワークで接続する必要があります。通常、ルーター経由でプロバイダと接続していると思います。ターゲットは DHCP
で IP アドレスを取得しますので、ホストと同じルーターへ接続してください。一般的には、
単純にルーターとターゲットを LAN ケーブル接続するだけで完了です。Raspberry.Pi.3 を使用する場合、WiFi 接続できるため、ワイヤレス接続でも構いません。
■ URL
文書中に URL の記載があります。これは、原稿執筆時点のものであり変更される可能性もあります。リンク先が存在しない場合、キーワードなどから自分で検索してください。
■サンプルプログラム
いくつかのサンプルプログラムを用意します。本サンプルは MIT ライセンスを採用しています。使用に際しては MIT ライセンスを理解し、ライセンスに違反しないようにしてくだ.
さい。

用語-------------------------------------------------------------------------------------用語の使用に関して説明を行います。
■語尾の長音符の扱い
最近は、「コンピューター」などのように語尾の長音符を付けるのが一般的になっていますが、本書では統一していません。従来の表現と最近の表現が混在しています。なるべく統一を心がけましたが、参考資料なども混在して使用しているため、統一が困難でした。
■ディレクトリとフォルダ
基本的に「ディレクトリ」を主に使用します。ただし、「フォルダー」や「フォルダ」とvi

表記されることもあります。これはシステムの表示するメッセージなどと調和を取ったため.
です。
■デプロイと配置
デプロイと表現した方が良い場所でも、配置あるいは再配置を使用しています。これはWindows.10.IoT.Core の解説などでデプロイより配置の表現が使用されているのに合わせたためです。
■プログラムとプロジェクト
本書で紹介する組み込み用のソフトウェアは、いくつかのサブシステムから成り立っています。プログラムと表現した方が良いか、プロジェクトと表現した方が良いか不明な場合、どちらか適切と思われる方を使用しています。プロジェクトやプログラムが同じものを指すことがありますので、文脈から読み取ってください。
■ソースコードとソースファイル
基本的に同じものを指します。まとまったものをソースファイル、ソースファイルの一部を指すときにソースコードと表現します。
■ UART と RS-232C
同じものを指しますが、ソフトウェアからみたときに UART を主に使用し、接続などの場
合に主に RS-232C を使用します。混在して使用しますが、同じものを指します。
■ Raspberry Pi

Raspberry.Pi と表現した場合、Raspberry.Pi.2 と 3 に共通な解説です。Raspberry.Pi.2 やRaspberry.Pi.3 と表現した場合、そのデバイス固有の解説です。

vii

参考資料-------------------------------------------------------------------------------. ●. Windows.for.IoT の ド キ ュ メ ン ト（https://docs.microsoft.com/ja-jp/windows/iotcore/）. ●. 米 マ イ ク ロ ソ フ ト 社 Windows.10.IoT の 概 要（https://docs.microsoft.com/ja-jp/
windows/iot-core/windows-iot）. ●. 米マイクロソフト社 IoT サイト（https://developer.microsoft.com/en-us/windows/iot）. ●. 米 マ イ ク ロ ソ フ ト 社.IoT サ ン プ ル サ イ ト（https://github.com/ms-iot/samples/tree/
master 、 https://github.com/ms-iot/samples/tree/develop 、 https://github.com/
microsoft/Windows-iotcore-samples/tree/develop/Samples 、https://github.com/
microsoft/Windows-iotcore-samples/tree/master/Samples、など）. ●. Windows.10.IoT.Core ダッシュボード（https://docs.microsoft.com/ja-jp/windows/iotcore/downloads）. ●. Raspberry.Pi 公式サイト（https://www.raspberrypi.org/）. ●. NXP 社、I2C バス仕様およびユーザーマニュアル. ●. 秋月電子通商（http://akizukidenshi.com/catalog/c/clpc/）. ●. Windows.10.IoT.Core の解説記事（http://www.atmarkit.co.jp/ait/series/ など類似の解説サイト多数）. ●. Windows.Dev.Center（https://developer.microsoft.com/en-us/windows、https://docs.
microsoft.com/ja-jp/windows/）

viii

目

次

目次
はじめに...................................................................................................................................................... iii

第1章

IoT と Windows 10 IoT Core ............................................... 1

1.1

IoT とは........................................................................................................................................... 1

1.2

Windows 10 IoT Core とは..................................................................................................... 4

1.3

Windows 10 IoT Core の開発環境........................................................................................ 6

1.4

開発に必要な機材........................................................................................................................ 6
センサーやリレーなど雑多な機材................................................................................................................. 10

第2章
2.1

Windows 10 IoT Core イメージを microSD へ書き込み ...... 13

Windows 10 IoT Core Dashboard..................................................................................... 13
ツールのインストール.......................................................................................................................................... 14

2.2
2.3

microSD へ書き込み................................................................................................................ 16
Windows 10 IoT Core の起動.............................................................................................. 19（1）microSD カードの挿入............................................................................................................................... 20（2）機器の接続......................................................................................................................................................... 20（3）Windows 10 IoT Core の初期化............................................................................................................. 21（4）起動画面.............................................................................................................................................................. 22

2.4

Windows 10 IoT Core の管理.............................................................................................. 24
Windows 10 IoT Core Dashboard から Windows Device Portal を開く................................... 24

2.5

サンプルを試す.......................................................................................................................... 26
Windows Device Portal から試す................................................................................................................... 30

第3章

Visual Studio のインストールとプログラムの実行 .................. 33

3.1

Visual Studio Community 2019 のインストール........................................................ 33

3.2

サンプルの Hello World を動作させる............................................................................ 38
サンプルプログラムのダウンロード............................................................................................................ 38
サンプルプログラムのライセンス................................................................................................................. 40
サンプルプログラムの実行................................................................................................................................ 41
Visual Studio のインストールが不十分....................................................................................................... 47

3.3

新規開発の HelloWorld.......................................................................................................... 49

ix

第4章
4.1

LED 点滅 ............................................................................ 57

サンプルプログラムの実行................................................................................................... 57
部品参考........................................................................................................................................................................ 60

4.2

新規開発....................................................................................................................................... 62

4.3

Raspberry Pi 2 と 3 のピン配置......................................................................................... 70

4.4

Headed モードと Headless モード.................................................................................... 72
Headed モードと Headless モードの切り替え....................................................................................... 73
Headed モードと Headless モードの切り替え....................................................................................... 77
headless モードデバイスを探す..................................................................................................................... 83

4.5

ボタンで LED 制御.................................................................................................................... 84

4.6

プログラム開発.......................................................................................................................... 86

部品参考........................................................................................................................................................................ 84

第5章
5.1

温度・湿度・加速度の測定 ..................................................... 91

温度センサーの利用................................................................................................................. 91
接続.................................................................................................................................................................................. 93
プログラム開発......................................................................................................................................................... 95

5.2

温度・湿度センサーの利用.................................................................................................101
接続............................................................................................................................................................................... 102
プログラム開発...................................................................................................................................................... 103
実行............................................................................................................................................................................... 110

5.3

2

I C の基礎..................................................................................................................................111
2

I C の特徴.................................................................................................................................................................. 111
2

I C の接続.................................................................................................................................................................. 112
2

I C の一般的な使用法......................................................................................................................................... 112

5.4

3 軸加速度センサー...............................................................................................................114
接続............................................................................................................................................................................... 116
特長............................................................................................................................................................................... 117
プログラム開発...................................................................................................................................................... 118
実行............................................................................................................................................................................... 119
2

I C................................................................................................................................................................................... 122
別のプロジェクト................................................................................................................................................. 124

x

目 次

第6章
6.1

UART............................................................................... 125

使用するデバイス...................................................................................................................125
NS-RS232 の特徴................................................................................................................................................... 126

6.2

接続..............................................................................................................................................127

6.3

動作..............................................................................................................................................130

6.4

半田ごてを使わない USB 直結...........................................................................................133
必要なもの................................................................................................................................................................ 133
RS232C-USB 変換ボード................................................................................................................................... 133

第7章
7.1

リレーモジュールの制御....................................................... 137

概要..............................................................................................................................................137
接続............................................................................................................................................................................... 141
動作チェック........................................................................................................................................................... 142

7.2

プログラム開発........................................................................................................................143
ローカルコンピューターで実行................................................................................................................... 149
Raspberry Pi で実行............................................................................................................................................. 150

第8章
8.1

AC 電源の制御................................................................... 153

概要..............................................................................................................................................153
使用するデバイス................................................................................................................................................. 155
部品の接続................................................................................................................................................................ 157

8.2

プログラム開発........................................................................................................................160
実行の準備................................................................................................................................................................ 166
プログラムの実行................................................................................................................................................. 168

第9章
9.1

ラジコン制御 ...................................................................... 169

概要..............................................................................................................................................169
使用するデバイス................................................................................................................................................. 171
接続............................................................................................................................................................................... 172

9.2

プログラム開発........................................................................................................................177
実行............................................................................................................................................................................... 181

xi

第 10 章ブラウザを使った制御 .......................................................... 185

10.1 LED 点滅.....................................................................................................................................185
BlinkyWebService プロジェクト.................................................................................................................. 186
HttpServer プロジェクト.................................................................................................................................. 187
動作の様子................................................................................................................................................................ 188
プログラムの説明................................................................................................................................................. 190
Windows Device Portal から実行................................................................................................................ 199

10.2 AC 電源の制御..........................................................................................................................203
プログラム................................................................................................................................................................ 203
動作の様子................................................................................................................................................................ 211

10.3 ラジコン制御............................................................................................................................212
プログラム................................................................................................................................................................ 212
BlinkyWebService プロジェクト.................................................................................................................. 213
HttpServer プロジェクト.................................................................................................................................. 218
動作の様子................................................................................................................................................................ 223........................................................................................ 227

付録
付録 A

ソリューションの再ターゲット...................................................................................227

リモートコンピューターを押したとき配置でエラー...................................................................... 227
ソリューション操作の再ターゲット......................................................................................................... 230

付録 BWindows IoT Extension SDK........................................................................................232

付録 C

Windows IoT Extensions for the UWP.....................................................................234

付録 D

リモートディスプレイ機能............................................................................................236

Windows IoT Remote Server 機能を有効にする................................................................................. 236
Windows IoT Remote Client の起動........................................................................................................... 239
Windows 10 IoT Core デバイスと Client を接続................................................................................. 239

索  引.........................................................................................................................................................241

xii

1

IoT と
Windows 10 IoT Core
第 1 章 IoT と Windows 10 IoT Core

Windows.10.IoT.Core の概要について解説します。

1.1 IoT とは
IoT（Internet.of.Things.=. モノのインターネット）とは、世の中に存在するさまざまな物体（モノ）にネットワーク機能を持たせ、それをインターネットに接続することです。単にイン
ターネットに接続するというだけであれば、いまさら IoT などといわなくても、そのような機器は IoT が提唱されるまえから存在しています。
「IoT」と、それまでの「インターネットにつながる機器」との大きな違いはどこにあるかといわれれば、それは、「クラウド側の機能」と「ワイヤレス」にあるといえるでしょう。IoT とは、単にモノがインターネットにつながるというだけでは不十分で、あらゆる場所からクラウドと連携して、さまざまな事象をリアルタイムに解析し、あるいは蓄積したデータを分析し、何が起きているか、何を行うべきかの情報を提供する環境を指すのではないかと考えます。これまでは単にインターネットにつながるモノだったのが、クラウド側のビッグデータなどと連携することによって、場所を選ばず、より価値のある情報を提供するようになります。
現実の世界には IoT 化できるモノが多数存在します。環境やハードウェアの進歩によって、

1

第1章

IoT と Windows 10 IoT Core

これまではインターネットへの接続が不可能だったモノも接続できるようになりました。特に近年のワイヤレス技術と省電力化と電池、そして小型化技術や AI の進歩が IoT を大きく推進することは疑いようもないことです。このようなハードウェアの技術革新は言うまでもありませんが、サーバー側でも大きな技術革新が起きています。クラウド側と連携し、IoT 機器が収集した膨大なデータを容易に蓄積できるようになりました。この膨大なデータ——ビッグデー
タと呼んで良いでしょう——を解析する超並列・高速サーバーの出現はもちろん、人工知能や機械学習などは急速に進化しています。これまでのインターネットにつながる機器と IoT の大きな違いは、単なるハードウェアの違いだけでなく、サーバー側（クラウド側）のデータ解析能力も大きな比重を占めます。IoT は、単にモノをインターネットにつなぐのではなく、集めたデータから新たな価値を生み出すでしょう。
現在の「モノとインターネットの接続」を考えてみましょう。HDD レコーダ、TV、スマー
トフォン、デジタルカメラ、メディアプレーヤ、プリンタといった情報家電などをインターネットに接続することは、すでに普通のことです。しかし、得られたデータは個々のアプリ
ケーションにとどまり、時系列に参照されるか、遠隔操作に利用されるだけに留まってい.
ます。

IoT では、これ以外のモノもネットワークに接続されるでしょう。例えば、温度計、給湯器、ゴミ箱、マグカップ、炊飯器、ガスコンロ、耳かき、めがね、鉛筆、ハサミ、自動車の速度計などなど、何でもインターネットへつながります。そして、これらのデータを IoT 機器がリアルタイムに分析したり、あるいはクラウドに蓄積されたビッグデータを利用して、新しい価値を生み出すものも現れるでしょう。このような環境では、今まで想像しなかった新しい価
値やサービスが現れる可能性があります。

IoT の出現は、いくつかの基礎技術がそれを可能とするレベルに達したのが大きいでしょう。どのような技術分野でもそうですが、ずいぶん前に構想が考えられていても、裾野の技術（インフラ）が構想に追いつかず満足な結果が得られない場合があります。
例えば、テレビ電話を考えてみましょう。今日では、数万円の PC やスマートフォンさえあれば、誰でもテレビ電話を使うことが可能となりました。しかし、テレビ電話が考え出されたのは大昔です。基本的な技術が机上で考え出されても、普及には多くの時間を必要とします。
つまり基本的なアイデアが存在しても、インフラが、そのアイデアを実装できるレベルに達していないと（技術だけでなく経済的にも）、アイデアはアイデアのままで終わります。

IoT でも同じことが言えるでしょう。これまでも、組み込み装置を個別にインターネットへ接続することは可能でした。しかし、最低でもセットトップボックス程度の物理的な大きさを

2

1.1

IoT とは要求しました。また、体積に見合った電源も要求されます。さらに、ワイヤレス機能も十分で1はありませんでした。いろいろなモノをインターネットへつなごうと考えた場合、ワイヤレス機能は必要不可欠です。今日では、ほとんどの場所から公衆無線を利用できます。このような2環境が整ったのは、つい最近のことです。さらに、「省電力の CPU や性能の良い電池、そして3

ワイヤレス技術が充実してきた」のも、「クラウドを気軽に使えるようになった」のも、つい最近のことです。このように、IoT を実現できる環境が、やっと出揃いました。それでもまだ4

まだ改善の余地があり、本格的に IoT を実装するにはまだ時間が必要でしょう。とはいえ、少なくとも最低限の環境は揃いました。そのような意味で、IoT 元年が到来したと考えて良いで

5

しょう。

6
IoT を実現するにあたり、デバイス側で何が起こったか簡単にまとめてみましょう。

7. ●. 高速 CPU の小型化

8. ●. 高速 CPU の省電力化

9. ●. 電池の性能向上. ●. ワイヤレス機能の大幅な向上

10. ●. これらが廉価に入手できるようになった
これまでも多くの「モノ」がインターネットへ接続する機能を備えていましたが、ある程度の電源能力や物理的な大きさを求められ、あらゆるモノをインターネットにつなぐのは容易ではありませんでした。しかし、近年はインターネット接続を行うハードウェアや環境、特にワイヤレス環境が一昔前に比較して大幅に変化しています。

IoT を実現するにあたり、クラウド側の変化もまとめてみましょう。
. ●. 高速ブロードバンドの普及. ●. ワイヤレス環境の普及. ●. 大量のデータ蓄積機能. ●. ビッグデータ解析能力の充実. ●. AI や Deep.Learning 機能の充実

3

第1章

IoT と Windows 10 IoT Core

少し前までは、モノをインターネットにつないだとしても、単にピア・ツー・ピアの使用法に留まっていました。ところがクラウドと連携できるようになり、応用の範囲が大きく広がりました。インターネットという共通のインターフェースを使用するため、ネットワークが限定された範囲から世界中に接続できるインターネットへ変わったのも大きいでしょう。
このようなデバイス側とクラウド側双方の進歩によって、単にモノをインターネットに接続するのではなく、収集した膨大なデータを分析し、さらにその結果をフィードバックできるよ
うになりました。単にモノをインターネットに接続するだけであれば、すでにユビキタスなどのネットワーク機能は過去に提唱されています。そして、単にネットワークにつながるハード
ウェアであれば、すでに組み込み装置が実現しています。
世の中に存在するさまざまな物体（モノ）がインターネット接続された後、何が起きるのか想像するのは面白いです。近未来は想像できますが、まったく想像しなかった利用法、サービス、そしてアプリケーションも現れるでしょう。インターネットが家庭に普及しはじめた当時を考えてみましょう。単に、パソコン通信の高速版のように捉える人もいました。しかし、どうでしょう、今では一般家庭で高速ネットワークを使えるのは普通のことになりました。利用法やサービスも、当時予想もしなかったものも現れています。IoT も完全に普及する頃には、想像もしなかったものが現れるでしょう。
コンセプトが同じであっても、量と質が変わると想像できなかった応用が現れます。きっとIoT が普通に使われるようになると、想像もしない世界が現れるでしょう。もしかしたら、数年後には「IoT」という言葉は消えているかもしれません。しかしそれは IoT という考えが消滅した結果ではなく、その考えがもはや特別なものではなくなるほど社会に浸透した結果であるに違いありません。

1.2 Windows 10 IoT Core とはWindows がデスクトップやサーバーの世界から、IoT の世界へ船出しました。Windows.
10.IoT.Core は、小さなディスプレイ、あるいはディスプレイなしの IoT デバイスへ最適化された Windows.10 オペレーティングシステム（OS）の仲間です。Windows.10.IoT.Core は、
いくつかの Prototype.Boards をサポートしています。例えば Raspberry.Pi.2 と 3B、Arrow.

DragonBoard.410c、MinnowBoard.Turbot/MAX、そして NXP.i.MX.6/7/8 などです。本書

4

1.2

Windows 10 IoT Core とはは Raspberry.Pi.3 をメインで使用しました、Raspberry.Pi.2 でも紹介したプログラムは動作1するでしょうが、Raspberry.Pi.2 ですべてのプログラムの確認は行っていません。この OS は、拡張性にすぐれた Universal.Windows.Platform.(UWP).API を利用します。本書を執筆時点で2は Raspberry.Pi.4 は正式にはサポートされていませんが、本書が読者の手元に届くころには

3

Raspberry.Pi.4 もサポート対象になっているのではないかと想像しています。
Windows.10.IoT.Core を簡単に表現すると、IoT デバイス対応の OS のことです。IoT デバ

4

イスと表現しましたが、要は、一般的に組み込み用途で使われる小型コンピューターのことです。組み込み装置（組み込み用デバイス）がネットワーク機能を装備していれば IoT デバ

5イスと呼んで良いでしょう。これまでは、組み込み用デバイスの OS には、RTOS（Real.Time.

6

Operating.System）や Real.Time.Linux などが使用されていました。これに加え、Windows.
10.IoT.Core という新しい OS が用意されました。つまり、Windows.10.IoT.Core は、組み込7み装置用の新しい OS と言い換えることもできます。

Windows.10.IoT は、Windows.10.IoT.Core 以外に、エンタープライズ管理性とセキュリ

8

ティを IoT ソリューションに提供する Windows.10 のフルバージョンの Windows.10.IoT.

9Enterprise が存在します。Windows.10.IoT も他の OS と同様に日々進歩していますので、参考資料の URL から最新の情報を取得してください。

10

Windows.10 という名前が付いていますが、デスクトップやモバイルデバイス向けのWindows.10 とは機能や使い方は大きく異なります。大きな特徴は、ユニバーサル Windows
アプリ（UWP）を直接実行できる OS という点です。従来の Visual.Studio を使用した開発やデバッグが行えるため、Visual.Studio に慣れた人には導入の敷居が低いでしょう。その代わり、組み込み Linux などと異なり、デバイス単体でのアプリケーションソフトウェア開発はできず、シェルのようなインターフェースもありません。そのため、Windows.10.IoT.Core
用のアプリケーションソフトウェアは、Windows.10.PC と組み合わせて開発する必要があり.
ます。

5

第1章

IoT と Windows 10 IoT Core

1.3 Windows 10 IoT Core の開発環境
Windows.10.IoT.Core が こ れ ま で の OS と 異 な る の は、Windows に 慣 れ 親 し ん だ 人 がVisual.Studio を使用し、容易に IoT デバイスを開発できるようになったことです。今まで組み込み装置に縁がなく、Windows アプリケーションを開発していた人が、容易に IoT デバイ
スを開発できます。
本書では、Windows.10.IoT.Core という新しい OS とデスクトップ版の Windows.10 とは何が違うのか、どのように開発するのか、何ができるのかを紹介します。実機に Windows.10.

IoT.Core をインストールして実際に使ってみながら、いくつかの機能を追加して IoT デバイスの開発にチャレンジします。以降に、開発環境の概念図を示します。
図1.1●開発環境の概念図

クラウド

Windows 10
Visual Studio
2019

UWP
アプリケーション

インターネット

Windows 10
IoT Core
ネットワーク

IoT

ネットワークIoT ボードセンサー
モーター

Raspberry Pi 2/3
Arrow DragonBoard 410c
MinnowBoard MAX
NXP i.MX 6/7/8 など

ロボット

1.4 開発に必要な機材
この節では、本書で行う開発に必要となる機材などについて説明します。簡単な IoT システ
ムなら Windows.10.PC と Raspberry.Pi だけで開発できます。しかし、センサーなどを使っ

6

1.4

開発に必要な機材

た IoT デバイス上でアプリケーションソフトウェアを動作させたいなら、いくつかの機材が必

1

要です。
次に示すのは、Windows.10.IoT.Core をインストールして起動するのに必要な機材の一覧

2

です。

3
ホスト PC 側の必要物一覧

4. ●. Windows.10.PC. ●. Windows.10.PC から microSD カードに書き込める環境

5

ターゲット側の必要物一覧

6. ●. Raspberry.Pi.2.Model.B または Raspberry.Pi.3.Model.B

7. . （Arrow.DragonBoard.410c、MinnowBoard.MAX、NXP.i.MX.6/7/8 など）. ●. 8 ギガバイト以上の microSD カード

8. ●. USB キーボード

9. ●. USB マウス. ●. LAN ケーブル（WiFi 接続の場合不要）

10. ●. HDMI ケーブル
. ●. HDMI の入力端子を持つ表示装置. ●. USB ケーブル（端子が microB タイプ）
図1.2●Raspberry Pi 2（左）とRaspberry Pi 3（右）

7

第1章

IoT と Windows 10 IoT Core

必要となる主要な機材について以降に説明します。

Windows 10 が動作する PC
Windows.PC を利用中の人は、すでに Windows.10 を使用していると思います。何らかの理由で、Windows.7 や 8.1 を使用中の人は、Windows.10 へアップグレードしてください。

8 ギガバイト程度の microSD カード
これは持っていなければ PC ショップや通販サイト購入してください。8 ギガバイトくらいであれば、過去に使っており、現在は未使用となったものなどを流用しても良いでしょう。新規に購入しても安いものなら 500 円程度です。ただ、Class.10 へ適合したものを推奨します。
通販サイトなどで調べると「microSDHC カード.16GB.Class10」で 800 円程度です。

Windows 10 PC で microSD カードに書き込める環境
PC で microSD カードへ書き込みを行う必要があります。最近の PC には SD カードなどへの書き込みを行うスロットを最初から装備しているものも少なくありません。そのような機種を使用している人は、microSD カードを購入するときに、SD カード変換アダプターが付属しているものを購入すると良いでしょう。たいていの microSD カードは、SD カード変換アダプ
ター付属で販売されています。microSD カードへの書き込み環境がない人は、microSD カー
ド対応のライターを購入してください。こちらも通販サイトなどを調べると 500 円程度で購入できます。

Raspberry Pi 2 Model B または、Raspberry Pi 3 Model B
Raspberry.Pi.2.Model.B や Raspberry.Pi.3.Model.B は 通 販 サ イ ト で 購 入 で き ま す。
Raspberry.Pi は、多数のサイトで販売されています。日常的に使っているサイトから購入するか、あるいは電子部品を扱っているサイトから購入すると良いでしょう。以降に、筆者がRaspberry.Pi.3.Model.B の価格を調査した時期の参考価格を示します。だいたい 5,000 円前
後で購入できるようです。金額は、時期やサイトによって変動しますので、あくまでも参考としてください。

8