IoTシステム技術基礎検定 #12　プロトタイピング大事

#はじめに
6章目です。
プロトタイピング（試作モデルの開発）について学びます。

#今回取り組む内容
・6-1～6-4 (テキストP166-176)
プロトタイピングの概要、流れ、適用に関して。

#6-1　プロトタイピング環境
####IoTにおけるモノづくりの実践
3Dプリンタ・スキャナ等を使った個人宅での制作、**パーソナル・ファブリケーション（Personal Fabrication）**が流行している。
これらの規模は、製造業の一端レベルまで拡大することがあり、**メイカームーブメント**と呼ばれる。

メイカームーブメントの原動力は、
「店にないものを自分で作る」
「自らデザインしたものをオンライン共有する」
「作ってから売らず、売れるものを作る」
といったものがあり、プロトタイピングはこの考え方にマッチしている。

IoT関連のアイテムは、素材や部品、開発・通信環境の入手価格が低下したので、個人でもプロトタイピングがしやすくなっている。
IoTのプロトタイピングをすることは、メイカームーブメントを実践することである。
ネット上のショップにも、こうしたモノづくりによる製品が流通するようになった。

####プロトタイピングサイクルと製品のリリースサイクル
プロトタイピング最大の特徴は**時間とコストの削減**である。
実際の製品製造と比べて、この点で優れていて、改良も手早く行えるところにある。

製品製造が実際にリリースし、販売して製品評価してもらうのに対し、
プロトタイピングはアイデアや品質をブラッシュアップし、基準を満たした後量産される。

いったん製品として出荷されてしまうと、ものによっては数年、10年以上継続して使用するものがあるので、設計でのミスは取り返しのつかないリスクになる。
プロトタイピングで問題点を洗い出すことで、失敗によるリスクを排除するのが重要。

従来　：リリース後修正困難、量産や営業のためのコスト大、失敗が許されない
プロト：修正しやすい、コスト小、失敗の影響小さい

####クラウドファンディング
**クラウドファンディング**：ある新ビジネスのアイデアの実現のため、インターネットで不特定多数の人から資金を集める方法。
資金調達の１つとして注目が集まる。
集めた資金を返済する義務はないので、資金提供をしてもらいやすくするため、完成品やお礼をリターンする設定が多い。
サービス、製品を満足するレベルで完成させなければならない。

米国のクラウドファンディング・プラットフォームである**Kickstarter**は、
プロトタイプやアイデアをWEBで公開して、資金提供者を募集する。
設定した期間で提供者が集まったら、プロジェクトが成立する。

####スキル創出
個人が持つアイデアやプロトタイピングのスキルを、
企業が発掘するための試みが、
テーマに対する開発を競い合う**ハッカソン**や
ビジネスモデルの構築で競う**アイデアソン**である。
優秀なアイデアには報酬が与えられ、事業化が促進される。

#6-2　マイコンとプログラミング環境
####入手しやすいマイコン
IoTデバイス、ゲートウェイの開発に向いた**マイコン**が販売されている。
手のひらサイズで数千円の**RaspberryPi（ラズベリーパイ）**や、
**Arduino（アルデュイーノ）**が有名。

英国発祥のRaspberryPiはLinuxなどのOSで動き、高性能で多くのアプリケーションが利用できる。PCとしても利用可能。
イタリア発祥のArduinoは、低コストなプロトタイピングを目的に開発。
**GPIO（General Purpose Input/Output）**というデジタル入出力の端子や、
**PWN（Pulse Width Modulation,パルス幅変調）**という、パルス電気信号の幅を信号に応じて変調させる変調方式、A/D変換など様々なインタフェースを備えていて、
オープンソースなハードウェアとして様々なメーカーが対応している。

####オープンラボ、ファブラボ
**オープンラボ**は、大学や研究機関のラボ（研究室）を公開し、
研究者同士の交流を促進することで、研究活動を活性化、
新たな発想を生み出すことを狙いとしている。

**ファブラボ（Fablab）**は、自由に使えるコンピュータや工具、3Dプリンタが揃っている環境を設けることで、アイデアの具現化を支援している。
Fabrication（ファブリケーション、モノづくり）、そしてFablous（素晴らしい）のFabと、labの造語。
世界中に400以上の拠点があり、日本にも拠点がある。

####使える言語・ツール
テキストP171の図参考、IoTデバイス、ゲートウェイ、サーバの階層ごとに開発環境が分かれ、多くの開発言語はオープンソースで無償利用できる。
IoTシステムは多くのソフトウェアと、それぞれの必要なプラットフォーム、得意が分かれる技術者から成り立つ。
自前で開発するための範囲を見定め、使うプラットフォームや言語を活用することが重要。
以下、各階層のプロトタイピングの概要。
①IoTデバイス
デバイスの性能が限られた中で、センサやアクチュエータを動かす場合は、
**C言語**が主流になる。
性能が求められる場合は、直接ハードウェアを制御する（組込みソフトウェア）。

②IoTゲートウェイ
間欠的な通信の監視を担うゲートウェイは、
**スクリプト言語**で簡潔に処理、動作を記述できる。
エッジコンピューティングのように、高度なプラットフォームが必要な場合も。

③IoTサーバ
サーバ上のアプリケーション開発は、大量のリソースによる高度なプラットフォームを利用して、ビッグデータの分析や、多数ユーザへのWeアプリの提供を行います。
サーバシステム構築には、1-5節にあった
I/P/B/S aasなどのクラウドサービスが利用できる。
クラウドではメニューに応じたプラットフォームが提供され、開発に集中できる。

複数のWebサービスを組み合わせて、新たにアクションに結び付けられる**IFTTT（IF This Then That,もしコレなら、アレをする）**などのツールがある。
Yahooの**MyThings**というアプリケーションは、WebサービスとIoTデバイスを連携させている。
例：家庭用ロボットに、サイトの気象情報を喋らせる
また、AmazonのAlexa（アレクサ）は、音声を通じてロボットを動作させる。

#6-3　プロトタイピングの基本構成
####目的の明確化
プロトタイピングは目的によってどうするか大きく変わるので、
目的を明確にすることが重要。
以下のような点を意識しよう。

**・機能実現のための技術検証か？**
**・品質や生の検証か？**
**・現場環境に耐えうるかの検証科？**

目的に合わせて、プロトタイピングの規模や期間は変わる。
センサやアクチュエータの単体動作の検証なら、むき出しのマイコンにセンサを繋げばあ十分。
測定データの集計時間を検証するなら、サーバに大量のテストデータを投入する。

####構成部品の選定
検証目的に応じた構成部品を選ぶのが大事。
以下のような検討ポイントがある。

ゲートウェイ：
デバイスの利用環境に応じて、通信方式を選ぶ。
移動体や山・海のような僻地では3G、WiiMAX、LTEなど、
屋内や街中ではWi-Fi、Bluetooth、Zigbeeといった近距離通信を使う。
**MVNO（Mobile Virtual Network Operator,仮想移動体通信事業者）**やLPWAも検討価値がある。

ハードウェア：
必要なセンサ・アクチュエータの選定。
3Dプリンタによう加工作業、基盤製造サービイスによる回路設計、センサをまとめて購入できるセンサキットなどの手法で効率化できる。

ソフトウェア：
データ収集メインのデバイスと、
データ処理やアプリケーション提供メインのサーバで開発環境が異なる。
IFTTTやmythingsなどのAPIを組み合わせた開発手法や、
**M2X**という、デバイスの管理制御も実施するIoT向けクラウドサービスのような新たな開発スタイルも登場している。

####検証
プロトモデルを動かして、動作を確認する。
情報共有できるグループがあれば、互いに情報共有することで効率化できる。
検証で発見された課題点を、次の改良に活かせば良い。
以下の確認ポイントを大事に。

ハードウェア：
・センサ・アクチュエータを制御できているか
・センサの制度や個体差の有無
・天候による耐久、精度の影響
・バッテリーの稼働時間や、安全性。

通信：
・コネクションの確立
・通信品質、遮蔽物の影響
・天候の影響、基地局配置の最適化

ソフトウェア：
・サンプルプログラムによる機能評価
・大量データ処理の性能検証
・ユーザビリティやβテスト

#6-4　プロトタイピングの適用例（水耕栽培）
####プロトタイピングの目的
収穫量の向上を目的としたプロトタイピング。
日照不足をLED光で補うという目的で、光の色で植物の成長に差が出るのかを考える。
テキストのシステムでは、育成に最適なRGB光を制御する。

####プロトタイピングシステムの構成
IoTサーバはコーディング負担の軽いクラウドサービスで、データの蓄積や分析を行う。
IoTゲートウェイはPCやRaspberryPiを利用、
センサデータの一次加工やクラウドに蓄積されたデータのグラフ表示などもゲートウェイで行われる。
デバイスは、I2C通信でRGB値の取得ができるArduinoを使う。
デバイスとゲート間はZigbeeを利用。

####検証、課題事項
測定データをアプリケーションで確認できれば成功。
育成状況を検出できれば、プロトタイプに組み込める。

#試験に出てきそうな内容
プロトタイピングが何故必要なのかを把握しておく。

####プロトタイピング
・**パーソナル・ファブリケーションと、メイカー・ムーブメントの概要**
・**【重要】プロトタイピングは何故行われるのか？**
→従来の製品開発、リリースとどこが違うか
・**クラウドファンディングとは何か、どういった仕組みか**
・ハッカソン、アイデアソンの概要、何故開催されるか

####プログラミング環境
・**RaspberryPi、Arduinoの特徴**
・**GPIO、PWOとは何か**
・オープンラボ、ファブラボとは何か
・**IoTデバイス、ゲートウェイ、サーバはどうやって開発されるか**

####アイデアを形に
・プロトタイピングで目的の明確化が必要なのはなぜか？
・ゲートウェイ、ハードウェア、ソフトウェア選定で意識することは？
・ハードウェア、通信、ソフトウェアでの確認事項は？