<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>IoTxWeb &#8211; HTML5Experts.jp</title>
	<atom:link href="/series/iot_web/feed/" rel="self" type="application/rss+xml" />
	<link>https://html5experts.jp</link>
	<description>日本に、もっとエキスパートを。</description>
	<lastBuildDate>Sat, 07 Jul 2018 03:14:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.19</generator>
	<item>
		<title>EspruinoではじめるWeb開発者のWoT</title>
		<link>/rockymanobi/13648/</link>
		<pubDate>Mon, 16 Mar 2015 00:00:06 +0000</pubDate>
		<dc:creator><![CDATA[興梠敬典]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[JS Board]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WoT]]></category>

		<guid isPermaLink="false">/?p=13648</guid>
		<description><![CDATA[連載： IoTxWeb (8)IoT/WoTという言葉があちこちから聞かれるようになって久しいですが、最近は言葉だけではなくなってきた気がします。新しいマイコンボードや、XXセンサーのデータをクラウドに溜めて○○する商品...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (8)</div><p>IoT/WoTという言葉があちこちから聞かれるようになって久しいですが、最近は言葉だけではなくなってきた気がします。新しいマイコンボードや、XXセンサーのデータをクラウドに溜めて○○する商品などが続々と発売され、IoT/WoTのバックエンド専用のサービスまで登場してきています。</p>

<p>これから出てくるサービスやツールは、画面の中からの情報だけでなく、画面の外からの情報を使うことができそうです。逆に画面の外に影響を及ぼすようなことも可能になるかもしれません。解決できる課題の幅がグンと広がってきそうな予感がします。</p>

<p>加えて、先日の<a href="https://html5experts.jp/bathtimefish/13109/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">村岡さんの記事</a>でも紹介されていたように、JavaScript等のWeb技術で開発できるマイコンボードも続々と登場し、IoT/WoTはWeb開発者にとっても身近なものになりつつあります。</p>

<p>今回はその中でもシンプルで扱いやすい、<strong>Espruino Board</strong>を使い、JavaScriptでIoT/WoTに挑戦したいと思います。</p>

<p>ボードを購入するところから、温度センサの値を読み取る方法、Wifiに接続する方法について、ステップバイステップで解説していきます。「IoT/WoT、やってみたいけど敷居が高くてできない！」というWeb開発者の皆様に、一歩を踏み出すお手伝いができれば幸いです。</p>

<h2>Espruino Boardとは</h2>

<p>冒頭で紹介したとおり、<a href="http://www.espruino.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espruino Board</a>は、JavaScriptを利用してハードウェア制御ができるマイコンボードです。ざっくり言ってしまえば、<a href="http://www.arduino.cc/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino</a>のJavaScript版のようなもので、まずはこの理解でいきましょう。</p>

<p>「とりあえずJSでハード制御してみる」を実現するには最も簡単で、かつ財布にも優しい選択肢とも言えるマイコンボードです。筆者もこれでIoT/WoTの第一歩を踏み出しました。</p>

<p><img src="http://www.espruino.com/img/ESPRUINOBOARD.jpg" width="200" alt="Espruino" class="alignnone" /></p>

<p>他の多くのマイコンボードと違い、<a href="https://github.com/espruino/Espruino" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">自前でJavaScriptの実行環境を実装</a>しているところも熱いポイントです。</p>

<p>また、Espruinoの今後の展開として注目されている、Espruino Picoについても触れておきます。Espruino Picoは、今回紹介するEspruino Boardよりもさらに小さい基盤(USBメモリサイズ)で、Espruino Board同様にJavaScriptでの制御が可能です。2015年春にプレオーダー分が出荷予定となっています。</p>

<p><img src="http://www.espruino.com/images/pico.jpg" width="600" height="267" alt="Espruino Pico" class="alignnone" /></p>

<h3>どうしてJavaScript?</h3>

<p>ただWeb開発者が知っている言語だから、というわけではなく、筆者はマイコン上でセンサー等のハードウェアを制御する言語として、JavaScriptは適した言語だと考えています。主な理由としては、イベントドリブンな記述がしやすいことと、setTimeoutやsetIntervalを使って、ループ処理を非同期に逃がすことができることが、挙げられます。</p>

<p>実際にマイコンボードを使ったサービスを運用してみると、マイコンボードにはやらなければならないことが意外とたくさんあることに気づきます。センサーの値を読みとってPOSTするだけでなく、センサー自体の死活監視のためのリクエストを投げるといった、運用のための処理や、Too Muchなリクエストの発生を避けるためにデータを間引いたりする処理がどうしても必要になります。</p>

<p>一例として、多くの言語がサポートする、無限ループを回しつつ、sleepで時間調整をする方法で、以下のような処理を実装することを考えてみましょう。</p>

<ul>
<li>5秒に１回センサーの値を読み込む</li>
<li>1分に１回はマイコン自体の死活監視用にPingリクエストを投げる</li>
</ul>

<p>普通に実装すると、5秒のスリープ処理の入った無限ループを作り、その中でセンサー値の読み取りを毎回実行します。Pingリクエストについてはカウンタ等を用意してIF分を切って実行有無を判定する、という実装になりそうです。やることが増えてくると、困りそうですね。</p>

<p>一方、JavaScriptでは2つのsetIntervalにそれぞれの処理を実装してしまえば事足ります。マイコンボードのようなpoorな環境でこれができるのは、Espruinoを始めとするJavaScriptで開発できるマイコンボードの強みであると筆者は考えています。</p>

<p>メインのテーマではないのでこの辺りで…</p>

<h2>Espruinoを使い始める</h2>

<p>では早速、Espruinoを使ってみましょう。
ボードを購入するところから、JavaScriptでLEDを光らせるところまでを、以下の流れで解説していきます。</p>

<ul>
<li>必要物品を調達する</li>
<li>Web IDEをインストールする</li>
<li>ファームウェアをアップデートする</li>
<li>JavaScriptコードを実行する</li>
</ul>

<h3>必要物品を調達する</h3>

<p>IoT/WoTの&#8221;T&#8221;はThings、つまりモノです。何をするにもまずは物理的にモノを購入する必要があります。お金もかかる上に届くまでに時間もかかります。新しいツールをタダでダウンロードして、すぐに試せる環境に慣れ親しんだソフトウェア開発者にとっては、最初のハードルかもしれません。</p>

<p>でも大丈夫です。すぐに慣れて、いろいろ買いあさるようになると思います。</p>

<h5>最低限必要になるのはコチラです。</h5>

<ul>
<li>Espruinoボード</li>
<li>マイクロUSBケーブル(Aタイプ オス/ マイクロBタイプ オス)</li>
</ul>

<h5>そしてWeb開発者であれば必ずWifiに繋ぎたくなるはずなので、以下も用意しておきます。</h5>

<ul>
<li>CC3000 Wifi モジュール</li>
</ul>

<p>Espruinoボードは国内販売されていないので、<a href="http://www.espruino.com/Order#distributors" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">公式サイト</a>にある販売サイトへのリンク一覧の中から何れかを選んで購入します。</p>

<p>オススメはEspruinoとCC3000の両方を取り扱っているAdfruitです。ここで一緒に買うことで、送料を節約することができます。</p>

<ul>
<li><a href="https://www.adafruit.com/products/1887" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espruino</a></li>
<li><a href="https://www.adafruit.com/products/1469" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CC3000 Wifi Module</a></li>
</ul>

<p>ちなみに筆者は<a href="http://www.seeedstudio.com/depot/Espruino-board-p-1715.html?cPath=6_12" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">seed studio</a>より購入しました(当時、AdfruitはEspruinoを取り扱っていませんでした）。送料に積む金額によって配送期間が変わるようです。無料だと2週間程度、30ドル払ったら4日で届きました。</p>

<p>補足 : 公式で推奨されているモジュールとは異なりますが、CC3000については国内販売されている<a href="http://strawberry-linux.com/catalog/items?code=18253" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">コチラのモデル</a>でも動作することを確認しています。筆者の手元での確認なので保証することはできませんが、国内で調達できるので、コチラを利用するのもアリです。</p>

<h3>Web IDEのインストール</h3>

<p>Espruinoの上で自分の書いたJavaScriptコードを実行するには、本家から提供されているWeb IDEを使用します。Espruinoとの接続や、ファームウェアのアップデート等もサポートしているので、まずはコレを導入します。Chrome Extensionとして提供されているので、<a href="https://chrome.google.com/webstore/detail/espruino-web-ide/bleoifhkdalbjfbobjackfdifdneehpo" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Chrome Webストア</a>からインストールしましょう。</p>

<h4>EspruinoとPCを接続</h4>

<p>EspruinoのマイクロUSB端子とPCのUSB端子を繋ぎ、WebIDEを立ち上げます。立ち上がったら、画面左上の接続ボタンをクリックします。</p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/f8c8e693-21a1-3f93-50c8-63df11dbd26c.png" alt="image" /></p>

<p>ダイアログが表示されるので、接続するシリアルポートを選択します。OSやマシンによって選択すべき項目が異なるため、下記を参考に選択します。</p>

<ul>
<li>Windowsの場合 :  COM# のうち、数字が一番大きいもの</li>
<li>Mac OSXの場合 :  /dev/tty.usbmodem1234 (1234はマシン依存)</li>
<li>Linuxの場合 :  ttyACM0/ttyUSB0</li>
</ul>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/0e6e19e3-9a03-d1d9-6912-6bd93343d233.png" alt="image" /></p>

<p>Web IDEの左側のコンソールにConnectedと表示され、Espruinoのアスキーアートが表示されれば成功です。</p>

<h4>ファームウェアのアップデート</h4>

<p>JavaScriptのコードを書く前に、まずはEspruinoのファームウェアをアップデートしておきます。出荷時期によってこの作業の要否は分かれますが、自前でJavaScriptの実行環境を実装している関係上、ファームウェアが古いと思わぬエラーが発生したりもするので、アップデートしておくことをおすすめします。</p>

<ul>
<li>WebIDEの右上の歯車アイコンをクリックして、設定画面を開きます。</li>
<li>設定メニューのFLUSHERを選択し、Flush Firmwareボタンをクリックします。ダイアログが表示されます。</li>
</ul>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/5942abcc-0474-8f93-d16a-4a659c61f6e3.png" alt="image" /></p>

<ul>
<li>ダイアログの指示通り、EspruinoのBTN1(USBコネクタから遠い方のボタン)を押しながら、RSTボタン(USBコネクタ寄りのボタン）を押します。</li>
<li>ボード上の青色のLEDがゆっくり点滅するはずです。
<img src="https://qiita-image-store.s3.amazonaws.com/0/51384/334aeaa8-6020-71e4-8749-d387b27aa552.png" alt="image" /></li>
<li>ダイアログのNEXTをクリックし、デバイスを選択します。</li>
<li>ファームウェアの更新が始まり、ボード上のLEDが激しく点滅を繰り返します。</li>
<li>完了後、ダイアログのNEXTボタンをクリックした後、ボードのRSTボタンを押します。</li>
<li>再びWebIDE左上の接続ボタンをクリックして、Espruinoと接続します。</li>
</ul>

<p>以上でファームウェアのアップデートは終了です。</p>

<h3>JavaScriptコードを実行する</h3>

<p>いよいよEspruino上でJavaScriptコードを実行します。
Espruinoボード上のLEDを光らせてみましょう。
WebIDEの左側のコンソールに、下記コードを打ち込んでEnterを押してみます。</p>

<p></p><pre class="crayon-plain-tag">LED1.write(true);</pre><p></p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/e5838ac4-837a-c373-b024-7d75660b9b17.png" alt="image" /></p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/2b94ae62-0248-9787-99e8-b8b9694710a3.png" alt="image" /></p>

<p>Espruinoボード上の赤いLEDが点灯しました。
続いて下記を入力してEnterを押します。</p>

<p></p><pre class="crayon-plain-tag">LED1.write(false);</pre><p></p>

<p>予想通り、LEDを消灯することができます。簡単ですね。</p>

<p>こんな風に対話的にプログラムを実行することができるのは、Espruinoの一つの特徴と言えると思います。Webインスペクタのコンソールのような感覚でコードを動かして試すことができるので、デバックや開発途中のお試し実行に重宝しています。</p>

<p>さて、ここでプログラムについても少し解説をしておきます。</p>

<p></p><pre class="crayon-plain-tag">LED1.write(true);</pre><p></p>

<p>Espruinoに備え付けられているLEDやGPIOのピンは、ビルトインのグローバルオブジェクトとして、あらかじめ登録されています。上記のコードで言うとLED1がそれにあたります。このオブジェクトに対して、書き込み(&#8216;write&#8217;)や読み込み(`read&#8217;)の命令を投げることで、LEDやピンの入出力をコントロールすることができる、という仕組みです。</p>

<h2>Espruinoで温度を計る</h2>

<p>前項までで、Espruinoの上でJavaScriptを実行する準備が整いました。ここからはセンサ等と組み合わせてEspruinoを使う方法について解説します。まずは温度センサ「DS18B20」を使い、Espruinoで温度を計ってみましょう。</p>

<p>なお、この段階からはハンダ付け等の電子工作的な作業が必要になります。筆者が以前に書いた記事になりますが、以下を参考に、Espruinoをセンサー等のモジュールに繋げる準備を行います。（ピンヘッダを取り付ける、と聞いてピンとくる方は読み飛ばしてもらって問題ありません）</p>

<ul>
<li><a href="http://rocky-manobi.com/blog/?p=224" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espruinoにセンサーとかをつなげるために必要な準備</a></li>
</ul>

<p>また、ブレッドボードやワイヤー等、電子工作の基礎的な事柄については、以下の記事にて非常に丁寧にまとめられています。</p>

<ul>
<li><a href="https://html5experts.jp/youtoy/12029/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">初心者でもわかる・できる！Arduinoを使った初めての電子工作実践</a></li>
</ul>

<h3>調達</h3>

<ul>
<li>温度センサ「DS18B20」: おなじみ<a href="http://akizukidenshi.com/catalog/g/gI-05276/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">秋月電子</a>さんより通販、店頭にて購入することができます</li>
<li>4.7kΩ抵抗 : 通販であればこちらも<a href="http://akizukidenshi.com/catalog/g/gR-25472/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">秋月電子</a>さんより購入することができます。ただし、100本単位の購入になってしまうので、そこが気になるという方は<a href="http://www.sengoku.co.jp/shop_01.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">千石電商秋葉原本店B1F</a>等のバラ売りをしているお店で購入しましょう。</li>
</ul>

<h3>結線</h3>

<p>温度センサ「DS18B20」には3つの端子がついています。それぞれの役割は、平らな面をこちらに向けて左から、GND、DATA、Vddとなります。GNDはグランドと結線するための端子、Vddは電源をとる端子です。温度のデータはDATA端子から読み取ることができます。</p>

<p>次のように結線してみましょう。</p>

<ol>
<li>温度センサのDATAとVddを4.7kΩの抵抗で繋ぐ。</li>
<li>下記表の通り、Espruinoと温度センサを繋ぐ。</li>
</ol>

<table>
<thead>
<tr>
  <th>Espruinoのピン</th>
  <th>温度センサの端子</th>
</tr>
</thead>
<tbody>
<tr>
  <td>GND</td>
  <td>GND</td>
</tr>
<tr>
  <td>A1</td>
  <td>DATA</td>
</tr>
<tr>
  <td>3.3v</td>
  <td>Vdd</td>
</tr>
</tbody>
</table>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/04801128-2618-ab2f-bfdf-3039e4b56850.png" alt="image" /></p>

<p>【写真だとこんな感じです】</p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/3366c7cf-f02f-9f81-34aa-6ae13171ec75.png" alt="image" /></p>

<h3>プログラム</h3>

<p>結線ができたら、次はプログラムです。先ほどはWeb IDEの左側のコンソールを使いましたが、今回は複数行のプログラムを実行する必要があるので、Web IDE右側のエディタを利用します。</p>

<p>以下のプログラムをWeb IEDの右側のエディタに記述してみましょう。温度センサから読み取った値を、1秒毎にコンソールに出力するプログラムです。</p>

<p></p><pre class="crayon-plain-tag">// センサーモジュールをセットアップ
var ow = new OneWire(A1);
var sensor = require("DS18B20").connect(ow);
// 1秒ごとに温度を表示
setInterval(function() {
  // getTemp メソッドで温度を取得
  console.log(sensor.getTemp());
}, 1000);</pre><p></p>

<p>記述したプログラムを実行するには、書き込みボタンをクリックします。</p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/7f65ff42-3a83-f2bd-aee3-3ee159c4837c.png" alt="image" /></p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/33ef5c82-e498-ad31-1eea-e608c8ba0178.png" alt="image" /></p>

<p>温度センサの値がコンソールに出力されました。センサー部分を指で摘んだり、コタツの中にセンサを入れたりすることで、温度の変化を確認することができます。</p>

<p>ここでプログラムについて解説します。</p>

<p>ポイントは3行目の<code>require("DS18B20")</code>と7行目の<code>sensor.getTemp()</code>です。
7行目の<code>sensor.getTemp()</code>の命令一つで温度センサの値[℃]が取得できていることに注目してください。
本来、温度センサを始めとする電子部品から読み取れるのは、電圧の値です。ここから意味のある値、つまり温度を取得するには、センサの仕様を元に、電圧値に対して何らかの計算をしてやらなければなりません。
上記プログラムでは、最初にrequireしたDS18B20モジュールがこの辺りの計算を全て隠蔽してくれているので、末端のプログラムでは<code>getTemp()</code>の命令一つで温度値を取り出すことができるようになっています。下図のようなイメージです。</p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/c789ed26-209f-aea8-5d9a-51a5145495b1.png" alt="image" /></p>

<p>Espruinoでは各種ハードウェアに対応するモジュールが多数提供されており、電圧値等の生データを意識せずに、センサーの値を取得することができるようになっています(<a href="http://www.espruino.com/Modules" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">モジュール一覧</a>)。</p>

<p>そしてこれらのモジュールはオープンソースとして<a href="https://github.com/espruino/EspruinoDocs" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">EspruinoDocs</a>というリポジトリで管理されています。ここにプルリクエストを送ることで、誰でもモジュールを開発/公開することができます。筆者も最近、IoT向けプロトコルといわれている<a href="http://www.espruino.com/MQTT" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MQTTのクライアントモジュール</a>に機能追加を行い、取り込んでもらいました。自分で自分の好きなプロダクトに手を加えられるのは、オープンソースの醍醐味ですね。</p>

<h3>Web IDEについてもう少し</h3>

<p>とりあえず温度センサの値を取得することに成功したので、ここでWeb IDEの使い方について、もう少し触れておきます。</p>

<h4>コンソールとエディタの併用</h4>

<p>例えば先ほどの温度センサのプログラム実行中に、コンソールにて下記プログラムを実行してみます。</p>

<p></p><pre class="crayon-plain-tag">clearInterval();</pre><p></p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/2efee643-ed4e-776e-aacb-77d154e9f6d2.png" alt="image" /></p>

<p>1秒毎に行われていた温度センサの値のコンソール出力が止まります。
続いて、温度を取得する命令を実行してみましょう。</p>

<p></p><pre class="crayon-plain-tag">sensor.getTemp();</pre><p></p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/243dc0ad-34d9-9715-e5a6-b9917471880d.png" alt="image" /></p>

<p>温度が表示されました。</p>

<p>エディタで書き込んだコードに対して、自分の好きなタイミングで任意のコードを実行することができます。まさに、Webインスペクタのコンソール的な使い方ですね。</p>

<h4>resetメソッド</h4>

<p>画面左側のコンソールにて<code>reset();</code>を実行することにより、書き込んだプログラムの内容をリセットすることができます。コンソールにていろいろやりすぎてわけが分からなくなってしまったときや、単純にEspruino上で実行中のプログラムの動作を止めたい場合に使用します。</p>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/ed971ec7-ff43-fa8b-eaab-f2cfc527bb3d.png" alt="image" /></p>

<h2>Wifiに接続する</h2>

<p>いよいよEspruinoをインターネットに繋げます。
冒頭の「Espruinoを使い始める&gt;必要物品を調達する」で紹介した、<a href="https://www.adafruit.com/products/1469" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CC3000 Wifi Module</a>を用意しましょう。こちらにもピンヘッダを付ける必要があります。</p>

<h3>結線</h3>

<p>ピンが多いですが、慌てずに落ち着いて結線しましょう。少なくとも、GNDとVBatだけは絶対に逆にしてはいけません（多分壊れます）。</p>

<table>
<thead>
<tr>
  <th>Espruinoのピン</th>
  <th>CC3000のピン</th>
</tr>
</thead>
<tbody>
<tr>
  <td>GND</td>
  <td>GND</td>
</tr>
<tr>
  <td>VBat</td>
  <td>VIN</td>
</tr>
<tr>
  <td>B3</td>
  <td>IRQ</td>
</tr>
<tr>
  <td>B4</td>
  <td>VBEN(CS)</td>
</tr>
<tr>
  <td>B5</td>
  <td>CS</td>
</tr>
<tr>
  <td>B6</td>
  <td>MOSI(DIN)</td>
</tr>
<tr>
  <td>B7</td>
  <td>MISO(DOUT)</td>
</tr>
<tr>
  <td>B8</td>
  <td>CLK(SCK)</td>
</tr>
</tbody>
</table>

<p><img src="https://qiita-image-store.s3.amazonaws.com/0/51384/10f6cb5e-a48c-96ca-4b13-18250e5963c3.png" alt="image" /></p>

<h3>プログラム</h3>

<p>下記プログラムをWeb IDEのエディタに貼付け、<code>wifiConfig</code>の<code>ssid</code>と<code>key</code>を、接続可能なWifiのSSIDとパスワードに編集します。</p>

<p></p><pre class="crayon-plain-tag">// wifi接続情報 ssidとパスワード
var wifiConfig = {
  ssid: "",
  key: ""
};

// コネクション確立時のコールバック
function onWifiConnect(s) {
  if (s=="dhcp") {
    // GETリクエストを投げる : 公式の Hello World! と返してくれるURL
    require("http").get("http://www.pur3.co.uk/hello.txt", function(res) {
      var data = "";
      res.on('data', function(chunk) {
        // 細切れのデータを変数に足し込む
        data += chunk;
      });
      res.on('close', function(){
        // レスポンスが全部返ってきたら溜め込んだデータをコンソールに出力
        console.log(data);
      });
    });
  }
}

// CC3000Wifiモジュールに繋ぐ
var wlan = require("CC3000").connect();
// wifiネットワークに繋いで、GetRequestを実行
wlan.connect( wifiConfig.ssid, wifiConfig.key, onWifiConnect);</pre><p></p>

<p>書き込みボタンを押して、プログラムを実行します。Wifiに接続しに行くので、少し実行に時間がかかります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/4a5e6bafc154f962f9ad5d061f17435e.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/4a5e6bafc154f962f9ad5d061f17435e.png" alt="スクリーンショット 2015-03-10 3.33.54" width="598" height="480" class="alignnone size-full wp-image-13659" srcset="/wp-content/uploads/2015/03/4a5e6bafc154f962f9ad5d061f17435e.png 598w, /wp-content/uploads/2015/03/4a5e6bafc154f962f9ad5d061f17435e-300x241.png 300w, /wp-content/uploads/2015/03/4a5e6bafc154f962f9ad5d061f17435e-207x166.png 207w" sizes="(max-width: 598px) 100vw, 598px" /></a></p>

<p>コンソールに&#8221;Hello World!&#8221;と表示されました。この文字列は、Espruino本家がGetリクエスト用に用意しているURLから取得したものです。</p>

<p>しばらくWifiに接続していると、多少熱くなりますが大丈夫です。ただ、配線を悪い感じで間違った場合は、触った瞬間に尋常ではない熱さを感じることができます。すぐに電源を抜きましょう。当然ですが誤配線は故障やケガの原因になりますので、慎重に、落ち着いて結線することが大事です。</p>

<p>では、プログラムについて解説します。</p>

<p>26行目と28行目にて、Wifi接続処理を行っています。connectメソッドが2つ出てきているのが少しややこしいですが、26行目の<code>require("CC3000").connect()</code>のconnectメソッドはCC3000Wifiモジュールとの接続を意味し、28行目の<code>wlan.connect()</code>のconnectメソッドはWifiネットワークへの接続を意味しています。</p>

<p>後者28行目のWifiネットワークへのconnectメソッドは、SSIDとパスワード、そして接続完了後に実行されるコールバックを引数に取ります。今回のプログラムでは、<code>onWifiConnect</code>が呼び出され、このコールバックの中でGETリクエストが実行されます。</p>

<p>10行目でGetリクエストを実行しています。インターフェイスは、node.jsのhttpモジュールのgetメソッドと同様です。http://www.pur3.co.uk/hello.txtに対してGetリクエストを実行し、レスポンスをコンソールに表示しています。</p>

<p>今回のサンプルはGETリクエストでしたが、もちろんPOSTリクエストを投げたり、EspruinoをWebサーバとして動かすことも可能です。</p>

<p><strong>参考</strong></p>

<ul>
<li><a href="http://qiita.com/rockymanobi/items/d50fcaf26cb59afb586b" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">POSTリクエストを投げる</a></li>
<li><a href="http://qiita.com/rockymanobi/items/e85a57408fa07da6b29c" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WEBサーバとして動かす</a></li>
</ul>

<h1>まとめ</h1>

<p>駆け足でしたが、Espruinoを購入し、温度センサで温度を測り、Wifiに繋ぐところまでたどり着きました。
センサーとインターネットに繋がれば、とりあえずセンサー情報をクラウドに上げて、それをブラウザで面白おかしく表示するようなサービスは作れます。これを機に、とりあえず何でもよいから作ってみるのはいかがでしょうか。</p>

<p>筆者も<strong>会社のトイレの空き状況をブラウザで見れるサービス</strong>を作ったり、<strong><a href="http://rocky-manobi.com/blog/?p=232" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">すだちの木に水を上げるとマスコットが喜ぶ玩具</a></strong>等々をEspruinoで作って運用しています。実際に作って運用してみると、本当にいろいろなことに気づきます。この手のサービスやシステムを設計するにあたっての勘所や注意すべきこと、開発当初は思いもよらなかったサービスの&#8221;効果&#8221;等、とにかくいろいろなことに気づかされます。もちろんハードウェアの専門家になることが目的ではないのですが、とても勉強になりますよ。</p>

<p>ちなみに、Espruinoは日本語ドキュメントが少ないことがネックです。なんとかできないものかと、去年ひっそりと<a href="http://qiita.com/advent-calendar/2014/espruino" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espruino Advent Calendar 2014</a>なるものを作りました。（ところどころ挫折していますが）これらを参考に、一緒に面白いものを作っていけたらと思います。</p>

<p>最後に、Web開発者がIoT/WoTに挑戦してみる理由について、筆者の思うところを少しだけ。</p>

<p>これからはIoTだ！WoTだ！大きなビジネスチャンスだ！乗り遅れるな！……と、そういった現実的なものもよいとは思いますが、筆者個人としては、Web開発者がIoT/WoTに挑戦してみる理由は、「その方が面白いものが作れそうだから」で十分なのではと思っています（記事の冒頭ではえらそうなこと言っていますが）。</p>

<p>これまでのWebサービスは、人間にインプットしてもらった情報を収集して、それを便利で面白い形にしてアウトプットするものが多かったように思えます。紙でやっていたことをシステムに落としたようなものです。でも、たくさんのインプットがなければ面白くも便利にもならないし、面白くも便利でもなければ誰も情報をインプットをしてくれません。様々なサービス、システムがこんな鶏と卵のような悩みと戦ってきたのだと思います。</p>

<p>でも、インプットをするのが人だけでなく、モノが自ら語ってくれたら、少なくとも有益なインプットを作り出すことはできますよね。情報さえそろえば後はそれをどう見せるか、それは我々Web開発者の土俵です。面白いものが作りやすくなるのではないかと思っています。</p>

<p>で、面白いことをやっていたら、結果儲かっていた。となったら、ラッキーだなと。
エンジニアが勉強する理由なんてそんなものでよいのでは、と最近考えています。
(あ、でもこの辺の市場が拡大することは間違いないと思いますよw。実際、この手のサービスのお仕事のお話をいただく機会が増えてきています^^）</p>

<p>というわけでIoT/WoT。言葉自体は流行っていますが、取り組んでいる人はまだまだそう多くはありません。
これを機に、まずはEspruinoで、面白いモノを作っていきましょう。</p>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
		<item>
		<title>Web制作者にもチャレンジできるIoT入門～Tesselの基礎～</title>
		<link>/n0bisuke/13562/</link>
		<pubDate>Thu, 12 Mar 2015 04:00:51 +0000</pubDate>
		<dc:creator><![CDATA[菅原のびすけ]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>

		<guid isPermaLink="false">/?p=13562</guid>
		<description><![CDATA[連載： IoTxWeb (7)2015年はIoT元年と言われるくらい、IoTやWoTという単語がバズワード化してきました。2014年頃からArduinoやRaspberryPi、Galileo、Edisonといったマイコ...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (7)</div><p>2015年はIoT元年と言われるくらい、IoTやWoTという単語がバズワード化してきました。2014年頃から<a href="http://www.arduino.cc/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino</a>や<a href="http://www.raspberrypi.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RaspberryPi</a>、<a href="http://www.intel.co.jp/content/www/jp/ja/do-it-yourself/galileo-maker-quark-board.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Galileo</a>、<a href="http://www.intel.co.jp/content/www/jp/ja/do-it-yourself/edison.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Edison</a>といったマイコンボードが急激に人気になってきましたね。Web開発者がハードウェア領域に進出しやすくなりました。ただ、センサーの利用など応用的なことをしようとすると、<a href="http://ja.wikipedia.org/wiki/GPIO" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GPIO</a>や電流などの知識をある程度は知っておく必要があります。</p>

<p>今回は、Webの知識だけでほぼ操作でき、初心者向けのTesselというマイコンボードを紹介します。具体的には、Tesselの開発環境整備から環境センサを扱うところまでを紹介したいと思います。Webエンジニア向けに説明を書きましたが、Webデザイナーやディレクターなど、非エンジニアの方でもチャレンジしていただけたら幸いです。</p>

<h2>Web制作者向けマイコンボードTesselとは</h2>

<p><img src="http://i.gyazo.com/39898dc789e7424e98da46f17692b0e0.png" alt="" /></p>

<ul>
<li>参考リンク <a href="http://gigazine.net/news/20130821-tessel-javascript-hardware/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">次世代マイコン「Tessel」はJavaScriptとNode.jsをサポートし、Wi-Fiからアップデート可能</a></li>
<li>参考リンク <a href="http://tips.hecomi.com/entry/2014/07/06/235056" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">JavaScript（Node.js）で色々なハードウェアモジュールが動くマイコンボードTesselを手に入れたので詳しく調べてみた</a></li>
</ul>

<p>&gt;「Tessel は、Node.jsベースのJavaScript環境を利用してハードウェア制御可能なマイコンボードです。 スタンドアロンで WiFi接続可能で、USBによる電源供給のみで動作します。 本体にはモジュール拡張用に4つのポートがついており、ここにSDカード読み込みモジュールやオーディオ入出力モジュール、加速度や温度・照度などのセンサモジュールなどの様々なモジュールを差し込むことで拡張が可能です。</p>

<p>そしてこの一つひとつのハードウェアモジュールを操作するためのNodeモジュールがnpmで公開されており、バグ修正も含めて Node.js のプラットフォームの上に乗っかっている形でトキメキます」</p>

<p><small>※この説明は<a href="https://twitter.com/hecomi" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">hecomiさん</a>のサイトより抜粋です。</small></p>

<h3>JavaScript(Node.js)で開発可能</h3>

<p><a href="https://tessel.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Tessel</a>はJavaScript(Node.js)で操作可能なプログラムを書けるマイコンボードです。<strong>JavaScriptで記述できる</strong>ので、Web制作者でも比較的とっつきやすい仕様となっています。Webエンジニアやデザイナーにとっては慣れ親しんでいる言語を使って開発ができるので、数分でセンサーを扱うことができるようになります。</p>

<h3>センサーの使いやすさも抜群</h3>

<p>またセンサーを使った拡張も簡単で、専用モジュールを購入し、パズルのように組み立てるだけでセンサーを扱うことができます。GPIOや電流は全く意識しなくていいので、<strong>初めてマイコンボードを使ってセンサーを扱う人にはオススメ</strong>です。</p>

<p><img src="http://i.gyazo.com/084a27f05655824df551b30ec2abeb4d.gif" alt="" /></p>

<ul>
<li>公式サイト <a href="https://tessel.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://tessel.io/</a></li>
<li>公式チュートリアル <a href="http://start.tessel.io/install]" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">http://start.tessel.io/install</a></li>
<li>公式チュートリアル日本語 <a href="http://start.tessel.io/ja/install" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">http://start.tessel.io/ja/install</a></li>
</ul>

<h2>Tesselの購入</h2>

<p>Tesselは<a href="https://www.switch-science.com/pressrelease/20141204_tessel/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">スイッチサイエンスのサイト</a>から購入できます。<br />
今回は本体と一緒に環境センサの購入もしました。ArduinoやRaspberryPiと比べると比較的値段は高めですが、迷わずに作業できるため時間はかからないと思います。入門にはぴったりです。</p>

<ul>
<li><a href="https://www.switch-science.com/catalog/1942/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Tessel メインボード</a> 9,720円(2015年3月時点)…Tesselの本体です。</li>
<li><a href="https://www.switch-science.com/catalog/1944/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Tessel 環境センサ</a> 3,240円(2015年3月時点)…明るさや音の大きさを感知します。</li>
</ul>

<p>注文してから2~3日で届きました。
本体、USBケーブル、Tesselのシールが1セットです。今回は環境センサも注文したので別の袋に入って環境センサが届きました。
<img src="http://i.gyazo.com/a6de5d26361da3f9767b08e5f1d06f4a.png" alt="" /></p>

<p>本体は結構小さいです。名刺の2/3〜3/4くらいの大きさです。</p>

<p><img src="http://i.gyazo.com/378dff42b2d10a565317954051f775b7.png" alt="" /></p>

<p>環境センサはさらに小さいです。
<img src="http://i.gyazo.com/6042a787a89bd42f7b40e5ecd5ee48b0.png" alt="" /></p>

<h2>開発環境準備</h2>

<p>今回はMac(Yosemite)での開発をしていきます。MacとTesselをUSBケーブルで接続して、Macで書いたプログラムをTesselで実行することができます。まずは、開発環境を整えましょう。</p>

<h3>バージョン</h3>

<ul>
<li>Mac OS X 10.10 Yosemite</li>
<li>Node.js 0.12</li>
<li>Tessel CLI v0.3.21</li>
</ul>

<h3>Node.jsのインストール</h3>

<p><small>すでにNode.jsが利用できる環境の方は、読み飛ばしてください。</small></p>

<p>Node.jsのインストールはこちらの記事を参考にしましょう。
<a href="http://liginc.co.jp/web/programming/node-js/85318" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">いまアツいJavaScript！ゼロから始めるNode.js入門〜5分で環境構築編〜</a></p>

<p>NVMが利用可能になったら</p>

<p></p><pre class="crayon-plain-tag">$ nvm install v0.12</pre><p></p>

<p>とするとNode.jsの0.12をインストールできます。</p>

<p></p><pre class="crayon-plain-tag">$ node -v
v0.12.0</pre><p></p>

<p>Node.jsのバージョンが、最新の0.12になっていることを確認できました。</p>

<h3>Tessel CLI(コマンドラインインターフェイス)のインストール</h3>

<p>Node.jsをインストールすると、NPM (Node Package Manager)コマンドが使えるようになります。 NPMはNode.jsのいろいろなモジュールの依存関係を解決して、簡単に利用できるようにしてくれるNode.jsのパッケージマネージャーです。</p>

<p>Tesselの開発環境であるTessel CLIは、NPMでインストールすることができます。</p>

<p>上記の手順でNode.jsをインストールした時点で、NPMは利用可能になっているはずです。以下のコマンドを実行しましょう。</p>

<p></p><pre class="crayon-plain-tag">$ npm install -g tessel</pre><p></p>

<p>特にエラーがなければ、<code>tessel</code>コマンドが使えるようになります。<code>tessel</code>と入力するとコマンド一覧を見ることができます。</p>

<p></p><pre class="crayon-plain-tag">$ tessel

Tessel CLI
Usage:
   tessel list
   tessel logs
   tessel run  [args...]
          run a script temporarily without writing it to flash
          -s push the specified file only (rather than associated files and modules)
   tessel push  [options]
          see 'tessel push --help' for options list
   tessel erase
          erases saved usercode (JavaScript) on Tessel
   tessel repl
          interactive JavaScript shell
   tessel wifi -n  -p  -s 
   tessel wifi -n 
          connects to a wifi network without a password
   tessel wifi -l
          see current wifi status
   tessel stop
          stop the current script
   tessel check 
          dumps the tessel binary code
   tessel blink
          uploads test blinky script
   tessel update [--list]
          updates tessel to the newest released firmware. Optionally can list all builds/revert to older builds.
   tessel debug [script]
          runs through debug script and uploads logs
   tessel version [--board]
          show version of tessel cli. If --board is specified, shows version of the connected Tessel</pre><p></p>

<p>例えば、Tessel CLIのバージョン確認をするときは<code>tessel version</code>となります。</p>

<p></p><pre class="crayon-plain-tag">$ tessel version
INFO v0.3.21</pre><p></p>

<h3>Tesselのファームウェアアップデート</h3>

<p>これもコマンド一つで実行できます。<code>tessel update</code>コマンドでTesselのファームウェアを更新しましょう。ファームウェアの更新がMac経由で簡単に行えるのはいいですね。</p>

<p><strong>ここからTesselとMacをUSBケーブルで接続しての作業になります。</strong></p>

<p></p><pre class="crayon-plain-tag">$ tessel update

TESSEL! Connected to TM-00-04-f000da30-006a434c-328965c2.
INFO Checking for latest firmware...
INFO Wifi version is also outdated.
INFO Downloading remote file https://builds.tessel.io/wifi/1.28.bin
INFO Wifi patch uploaded... waiting for it to apply (10s)
INFO ...
INFO ...
INFO ...
INFO ...
INFO ...
INFO ...
INFO
INFO Downloading remote file https://builds.tessel.io/firmware/tessel-firmware-current.bin
INFO Updating firmware... please wait. Tessel will reset itself after the update
INFO Complete  1175988 /1175988</pre><p></p>

<h2>何はともあれ、Hello World(Lチカ)</h2>

<p>プログラミングの最初は、<a href="http://ja.wikipedia.org/wiki/Hello_world" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Hello World</a>ですね。
電子工作界隈だとHello WorldにあたるのがLチカ(LEDをチカチカさせること)です。</p>

<p>まずは<a href="http://start.tessel.io/ja/blinky" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">公式サイトの手順</a>を実行してみましょう。</p>

<p>まずプロジェクトフォルダを作成します。</p>

<p></p><pre class="crayon-plain-tag">$ mkdir tessel-code
$ cd tessel-code</pre><p></p>

<p>package.jsonを作成します。いろいろと質問が出てきますが、とりあえず今回は全てEnterで大丈夫です。</p>

<p></p><pre class="crayon-plain-tag">$ npm init</pre><p></p>

<p></p><pre class="crayon-plain-tag">$  cat package.json

{
  "name": "tessel-code",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" &amp;&amp; exit 1"
  },
  "author": "",
  "license": "ISC"
}</pre><p></p>

<p>では実際にblinky.jsを描いてみたいと思います。エディタは慣れ親しんだものを使いましょう。
JavaScriptのコードなので、大抵のエディタがシンタックスハイライトしてくれるはずです。
ちなみに、私は最近Atomで書いています。</p>

<p></p><pre class="crayon-plain-tag">$ atom blinky.js</pre><p></p>

<p>以下のコードをコピペして、blinky.jsを作成しましょう。</p>

<p></p><pre class="crayon-plain-tag">// Import the interface to Tessel hardware
var tessel = require('tessel');

// Set the led pins as outputs with initial states
// Truthy initial state sets the pin high
// Falsy sets it low.
var led1 = tessel.led[0].output(1);
var led2 = tessel.led[1].output(0);

setInterval(function () {
    console.log("I'm blinking! (Press CTRL + C to stop)");
    // Toggle the led states
    led1.toggle();
    led2.toggle();
}, 100);</pre><p></p>

<p><img src="http://i.gyazo.com/f80165e29b5a7e9d5374d7249a2c9e87.gif" alt="" /></p>

<h3>実行</h3>

<p>↑のjsファイルを作成したら、同じフォルダ内で以下のコマンドを実行しましょう。</p>

<p></p><pre class="crayon-plain-tag">$ tessel run blinky.js</pre><p></p>

<p>MacからTesselにプログラムが送られて、Tessel内で実行されます。成功するとLEDがチカチカ光ります。</p>

<p>ちなみにLEDはTesselのモジュールの中でもハードウェアモジュールに位置付けられていて、ドキュメントが他のモジュールとは別のページになっているので注意しましょう。
 <a href="https://tessel.io/docs/hardwareAPI#tessel" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://tessel.io/docs/hardwareAPI#tessel</a></p>

<h3>エラーが出ても焦らずに対応しましょう。その１</h3>

<p>筆者が開発中に遭遇したエラーを簡単にまとめてみます。</p>

<h4>ファームウェアアップデートをしていない状態で実行</h4>

<p>ちなみに、私は<code>tessel update</code>を行わずに実行しようとしたら、以下のエラーが出ました。</p>

<p></p><pre class="crayon-plain-tag">$ tessel run blinky.js

TESSEL! Connected to TM-00-04-f000da30-006a434c-328965c2.
WARN There is a newer version of firmware available. You should run "tessel update".
INFO Bundling directory /Users/sugawara_nobisuke/n0bisuke/lab/tessel-code
INFO Deploying bundle (4.50 KB)...
INFO Running script...
/app/blinky.js:9: attempt to index field '?' (a nil value)</pre><p></p>

<p><code>tessel update</code>コマンドを実行したら解消されましたが、参考までに載せておきます。</p>

<h2>環境センサー(Ambient)で音と光を取得</h2>

<p>Lチカが終わったら、次はいよいよセンサーを使ってみたいと思います。今回は汎用的に使えていろいろと応用が効きそうな環境センサー(Ambient)を使います。</p>

<p>環境センサーを使うことで音の大きさと明るさの値を取得することができます。
環境センサーの使い方は <a href="http://start.tessel.io/ja/modules/ambient" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちらのページ</a>に書いてあります。また、Tesselのセンサーモジュールは別売りになっているので注意しましょう。</p>

<p>開発にあたりモジュールを追加します。</p>

<p></p><pre class="crayon-plain-tag">$ npm install --save ambient-attx4</pre><p></p>

<p>環境センサーをポートに差し込みましょう。</p>

<p>画像の向きにTesselを置いた時の左下が、ポートAになります。ポートはA,B,C,Dがあり、どのポートに差し込んでも動作しますが、プログラムでポートを指定する際は適宜接続しているポート名に変更して下さい。
<img src="https://s3.amazonaws.com/technicalmachine-assets/fre+assets/tessel-ports.jpg" alt="" /></p>

<p>以下の写真は、ポートAに環境センサーをポートBに<a href="http://start.tessel.io/ja/modules/audio" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">オーディオモジュール</a>(別売り)を接続した例です。
<img src="http://i.gyazo.com/59f6689c45877c979bd37fd062e9efab.png" alt="" /></p>

<p>blinky.jsの時と同様に、以下のコードをコピペしてambient.jsを作成しましょう。</p>

<p></p><pre class="crayon-plain-tag">var tessel = require('tessel');
var ambientlib = require('ambient-attx4’); //ドキュメントのコードから書き換え

var ambient = ambientlib.use(tessel.port['A']); //ポートBにセンサーを取り付ける場合はBを指定

ambient.on('ready', function () {
  // Get points of light and sound data.
  setInterval( function () {
    ambient.getLightLevel( function(err, ldata) {
      ambient.getSoundLevel( function(err, sdata) {
        console.log("Light level:", ldata.toFixed(8), " ", "Sound Level:", sdata.toFixed(8));
      });
    })
  }, 500); // The readings will happen every .5 seconds unless the trigger is hit

  ambient.setLightTrigger(0.5);

  // Set a light level trigger
  // The trigger is a float between 0 and 1
  ambient.on('light-trigger', function(data) {
    console.log("Our light trigger was hit:", data);

    // Clear the trigger so it stops firing
    ambient.clearLightTrigger();
    //After 1.5 seconds reset light trigger
    setTimeout(function () {
      ambient.setLightTrigger(0.5);
    },1500);
  });

  // Set a sound level trigger
  // The trigger is a float between 0 and 1
  ambient.setSoundTrigger(0.1);

  ambient.on('sound-trigger', function(data) {
    console.log("Something happened with sound: ", data);
    // Clear it
    ambient.clearSoundTrigger();
    //After 1.5 seconds reset sound trigger
    setTimeout(function () {
      ambient.setSoundTrigger(0.1);
    },1500);
  });
});

ambient.on('error', function (err) {
  console.log(err)
});</pre><p></p>

<p>実行してみます。</p>

<p></p><pre class="crayon-plain-tag">$ tessel run ambient.js

TESSEL! Connected to TM-00-04-f000da30-006a434c-328965c2.
INFO Bundling directory /Users/sugawara_nobisuke/n0bisuke/lab/tessel-code
INFO Deploying bundle (439.50 KB)...
INFO Running script...
Old module firmware detected. Updating...
Uploading new firmware...
Update finished!
Light level: 0.08105469   Sound Level: 0.02148438
Light level: 0.08105469   Sound Level: 0.01660156
・
・
・</pre><p></p>

<p>センサーが取得した明るさと、音の大きさがコンソールに表示されます。試しに、センサの上に手をかざして暗くしてみたり、指ぱっちんなどで音を立ててみて、値が変化するのを確認してみましょう。
<img src="http://i.gyazo.com/f2867ffc4d7d34c4b47591933e4e12d8.gif" alt="" /></p>

<p>Ambientの詳細なメソッドは<a href="https://github.com/tessel/ambient-attx4" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>になります。</p>

<p>先ほどのLEDと組み合わせれば、<strong>夜になって暗くなったらLEDを自動的に光らせる</strong>といったことも簡単にできそうですね。</p>

<h3>エラーが出ても焦らずに対応しましょう。その2</h3>

<p>この時点で、筆者が開発中に遭遇したエラーを簡単にまとめてみます。</p>

<h4>実行はnodeコマンドではなくtessel run</h4>

<p><strong>いつものくせでnodeコマンドで実行しようとするとこうなります</strong></p>

<p>これはNode.jsでの開発を普段行っている人にありがちな現象かもしれません。通常Node.jsでは<code>nodeコマンド</code>でプログラムを実行しますが、Tesselでは<code>tessel runコマンド</code>を使います。
間違えると、以下のようなエラーに遭遇しますので注意しましょう。</p>

<p></p><pre class="crayon-plain-tag">$ node ambient.js

module.js:338
    throw err;
          ^
Error: Cannot find module 'tessel'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object. (/Users/sugawara_nobisuke/n0bisuke/lab/tessel-code/ambient.js:10:14)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)</pre><p></p>

<h4>モジュールの接続が不安定な時もあります。</h4>

<p>特に問題なくコードを書いていても、実行時にこんなエラーが起きることがあります。</p>

<p></p><pre class="crayon-plain-tag">$ tessel run ambient.js

Error: Improperly specified Tessel port.
...es/ambient-attx4/node_modules/attiny-common/lib/index.js:24: attempt to index local 'hardware' (a nil value)</pre><p></p>

<p>これはどうやらモジュールが上手く接続できてなかったみたいです。
センサモジュールを繋ぎ直して再実行したら、うまくいきました。</p>

<h2>Tessel 2</h2>

<p>この記事執筆途中でTessel 2がアナウンスされました。
<img src="http://i.gyazo.com/d6cd8628bd9188e4850d5e4953c6c4d8.png" alt="" />
Tessel 2ではNode.jsだけではなく、PythonやRustでも処理を記述できるようになったみたいです。USBポートやEthernetポートが新設されたり、Wifiやその他モジュールも一新されているみたいです。現時点でプレオーダーできるみたいなので、興味のある方は注文してみてはいかがでしょうか？</p>

<h2>まとめ</h2>

<p>いかがでしたでしょうか？
想像以上に簡単にセンサーを扱うことができたのではないかと思います。</p>

<p>TesselはWeb開発者にとってIoTの入り口になってくれるデバイスなので、Web開発者でハードウェア知識はないけどIoT領域に触れてみたいと考えている方々にはぴったりなのではないでしょうか。</p>

<p>今回はIoTと言いつつも、I(Internet)の部分には全く触れませんでした。次回はTesselをWifiネットワークに接続してWebサービスと連携して応用的なものを作ってみようと考えています。</p>

<p>興味を持った方は、ぜひTesselを使った開発にチャレンジしてみましょう！</p>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
		<item>
		<title>WoTはここからはじめる！？JavaScriptで開発できる3つのJS Boardデバイス</title>
		<link>/bathtimefish/13109/</link>
		<pubDate>Mon, 02 Mar 2015 00:00:16 +0000</pubDate>
		<dc:creator><![CDATA[村岡 正和]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[JS Board]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WoT]]></category>

		<guid isPermaLink="false">/?p=13109</guid>
		<description><![CDATA[連載： IoTxWeb (6)JavaScriptではじめる組み込み系プログラミング さまざまなデバイスがWebを介してつながるWeb of Things（WoT）。WoTの普及によってさまざまな分野からWeb上に新しい...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (6)</div><h2>JavaScriptではじめる組み込み系プログラミング</h2>

<p>さまざまなデバイスがWebを介してつながるWeb of Things（WoT）。WoTの普及によってさまざまな分野からWeb上に新しいサービスがローンチされ、Webを利用するユーザーに新しい体験が提供されるタイミングが、すぐそこまできている感じがします。</p>

<p>一方で、WoTの普及はWebクリエイターにとっても、新しいビジネスチャンスかもしれません。ひと昔前まで、Web技術は、PCのWebブラウザ上でしか使われないものでした。しかし現在では、Firefox OSのようにモバイル・ネイティブで動作するようになりました。さらに最近では、マイコンなどの組み込み機器でも、直接JavaScriptなどのWeb技術が動作するものが出てきました。</p>

<p>ここ最近、海外でリリースされているデバイスの中には、JavaScriptなどのWeb技術を強くキャッチアップしている製品が増えてきています。今回はそれらJS Boardの中から、筆者がよく使っているのものを3つ紹介したいと思います。</p>

<h2>Espruino</h2>

<p><a href="https://tessel.io/espruino.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">espruino.com</a></p>

<p>2013年に<a href="https://www.kickstarter.com/projects/gfw/espruino-javascript-for-things" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Kickstarterで資金調達が開始</a>され、目標額を大きく超える調達額を獲得し開発されたデバイスです。リファレンスボードであるEspruino Boardは、72MhzのCortex-M3でJavaScriptプログラムがコンパイルされ、動作する小さなマイコンです。</p>

<p><img src="http://www.espruino.com/img/ESPRUINOBOARD.jpg" alt="Espruino Board" width="280" height="440"></p>

<p>JavaScriptコードは、専用の<a href="https://chrome.google.com/webstore/detail/espruino-web-ide/bleoifhkdalbjfbobjackfdifdneehpo" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espruino IDE</a>で編集し、EspruinoをPCとUSB接続すれば、IDEからEspruinoへ直接プログラムが転送できるようになっています。ArduinoのようにIDEが用意されているので、気軽に開発できるのがよいですね。</p>

<p>例えば、Espruinoに人感センサーをつないで人の動きを検知するサンプルコードは、このようになります。</p>

<p></p><pre class="crayon-plain-tag">setWatch(function() {
        LED2.write(1);
        setTimeout(function() {
        LED2.write(0);
    }, 3000);
}, A1, {repeat:true, edge:"rising"});</pre><p></p>

<p>EspruinoのJavaScriptには、ハードウェアを制御するための専用APIが、搭載されています。上記のコードでは <a href="http://www.espruino.com/Reference#l__global_setWatch" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">setWatch</a> というsetIntervalに似た関数で、センサーの状態を取得するループ処理を行っています。</p>

<p><img src="/wp-content/uploads/2015/02/IMG_20150222_153543-640x480.jpg" alt="Espruinoで人感センサーが動作しているようす" width="640" height="480" class="alignnone size-large wp-image-13116" srcset="/wp-content/uploads/2015/02/IMG_20150222_153543.jpg 640w, /wp-content/uploads/2015/02/IMG_20150222_153543-300x225.jpg 300w, /wp-content/uploads/2015/02/IMG_20150222_153543-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>筆者はこのプログラムをもうちょっと作りこんで、ウチの猫のトイレに設置しています。猫ちゃんがトイレに入ったり出たりするのを検知して、クラウドにデータを送信し、スマートフォンにプッシュ通知するような仕組みをつくりました。猫のトイレがすぐに掃除できるようになったので、猫ちゃんのストレスが減りました（減ったにちがいないｗ）。この事例は<a href="http://special.nikkeibp.co.jp/ts/article/ad0h/172223/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">日経テクノロジーオンライン</a>で取り上げていただきました。</p>

<p><img src="/wp-content/uploads/2015/02/IMG_20140612_183305-480x640.jpg" alt="Espruino猫トイレセンサーを猫トイレに設置している" width="359" height="500" class="alignnone size-large wp-image-13117" /></p>

<p>Espruinoに関する日本語の情報はあまり多くないですが、いまのところ<a href="http://qiita.com/advent-calendar/2014/espruino" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espruino Advent Calendar 2014</a>がよくまとまっていると思います。個人的にはJS Boardの中で一番気に入っているデバイスなので日本でももっとユーザーが増えてほしいところですね。</p>

<p>これからEspruinoを買おうと思っている方には、上記のEspruino Boardもいいんですが、現在開発中の<a href="https://www.kickstarter.com/projects/gfw/espruino-pico-javascript-on-a-usb-stick" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espruino Pico</a>もオススメです。Espruino PicoはEspruino Boardよりもさらに小さいUSBメモリサイズの基盤です。とても小さな基盤なのでいろいろなケースに活用できるのではないでしょうか。Espruino Picoのプレオーダー分は、2015年春ごろに発送される予定のようです。</p>

<h2>Tessel</h2>

<p><a href="https://tessel.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">tessle.io</a></p>

<p><a href="https://www.dragoninnovation.com/projects/22-tessel" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">DragonInnovationで資金調達された</a>プロジェクトで、Espruinoよりも少し大きなマイコンです。Wifiチップを搭載しているので、単独でWebにアクセスする機能を持っています。</p>

<p><img src="https://s3.amazonaws.com/technicalmachine-assets/technical-io/tessel-red-usb.jpg" alt="Tessel main board" width="280" height="440"></p>

<p>Tesselの特長は、多くの専用モジュールが販売されていることです。加速度センサ、GPS、BLE、サーボコントローラー、NFCなど多くのモジュールが別売りで販売されていて、Tesselのポートに差し込むだけで利用できます。Espruinoに市販のセンサーを接続する場合は電子回路の知識が必要ですが、Tesselの場合は専用ポートに差し込むだけなので回路の知識は不要です。</p>

<p>TesselのJavaScript APIはnode.js互換な仕様になっています。例えば、加速度センサーモジュールを接続してデータを取得するサンプルコードは以下です。</p>

<p></p><pre class="crayon-plain-tag">var tessel = require('tessel');
var accel = require('accel-mma84').use(tessel.port['A']);

accel.on('ready', function () {
    accel.on('data', function (xyz) {
        console.log('x:', xyz[0].toFixed(2), 'y:', xyz[1].toFixed(2), 'z:', xyz[2].toFixed(2));
    });
});

accel.on('error', function(err){ console.log('Error:', err); });</pre><p></p>

<p>JavaScriptらしいイベントドリブンな記述で、加速度センサーのデータがリアルタイムに受信できます。このコードでrequireしているtessel, accel-mma84といったnode.jsのモジュールライブラリはnpmでインストールできます。</p>

<p><img src="/wp-content/uploads/2015/02/IMG_20150222_133033-640x480.jpg" alt="Tesselで加速度センサーのデータを取得している。デバイスを傾けると、値が変化する" width="640" height="480" class="alignnone size-large wp-image-13118" srcset="/wp-content/uploads/2015/02/IMG_20150222_133033.jpg 640w, /wp-content/uploads/2015/02/IMG_20150222_133033-300x225.jpg 300w, /wp-content/uploads/2015/02/IMG_20150222_133033-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>Tesselは基本的に、4つのモジュール専用ポートに専用モジュールを接続して利用するスタイルですが、専用モジュール以外が利用できないかというと、そうではありません。Tesselには汎用的なGPIOポートも搭載されているので、<a href="http://akizukidenshi.com/catalog/top.aspx" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">秋月電子</a>あたりで買ってきたセンサーをつなげることもできます。下図はTesselのGPIOポートでLEDを点滅させてみたところです。</p>

<p><img src="/wp-content/uploads/2015/02/IMG_20150222_132105-640x4801.jpg" alt="TesselのGPIOポートにLEDを接続してLEDを点滅させている" width="640" height="423" class="size-full wp-image-13146" srcset="/wp-content/uploads/2015/02/IMG_20150222_132105-640x4801.jpg 640w, /wp-content/uploads/2015/02/IMG_20150222_132105-640x4801-300x198.jpg 300w, /wp-content/uploads/2015/02/IMG_20150222_132105-640x4801-207x137.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" />　▲TesselのGPIOポートにLEDを接続してLEDを点滅させている</p>

<p></p><pre class="crayon-plain-tag">/*
* TesselのGPIOでLチカ
* LEDのアノードをTesselの TX/G1
* LEDのカソードをTesselの GND
* に接続する
*/
 
var tessel = require('tessel');
var gpio = tessel.port['GPIO'];
 
gpio.digital[0].write(0); // TX/G1
 
flag = true;

setInterval(function() {
  if(flag == true) {
    flag = false;
  } else {
    flag = true;
  }
  console.log(flag);
  if(flag) gpio.digital[0].write(1);
  if(!flag) gpio.digital[0].write(0);
}, 1000);</pre><p></p>

<p>Tesselは今回紹介するデバイスで唯一国内販売されているデバイスです。<a href="https://www.switch-science.com/catalog/list/563/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">スイッチサイエンス</a>で購入できます。国内で買える、電子回路の知識が不要、node.js互換など、ハードウェアのない方でも入門しやすいデバイス、といえるのではないでしょうか。</p>

<h2>Spark</h2>

<p><a href="https://www.spark.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">spark.io</a></p>

<p>Sparkはマイコンというよりは、サーバーサイドを含めたオープンなIoTプラットフォームとして開発されています。<a href="http://makezine.jp/blog/2014/07/spark-lands-4-9-million-in-funding-launches-new-cloud-based-operating-system.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">昨年、Lion Wells Capital、O’Reilly AlphaTech Venturesなどから出資を受けて話題</a>となりました。</p>

<p>Sparkから発売されている小型マイコンボード Spark Coreは、72 Mhz Cortex M3とCC3000 Wifi moduleを組み合わせた「マイコン付きWifiモジュール」と呼べるようなもので、Arduino互換な言語でプログラムを記述します。</p>

<p><img src="https://store.spark.io/assets/core-a6fcc2b47e235d529ab58fe0a1124588.png" alt="Spark Core" width="280" height="440"></p>

<p>EspruinoやTesselと違って、JavaScript使わへんやんけと思われるかもしれませんが、Spark Coreから取得したデータはすべてWeb APIで取得できるようになっており、Web APIをラップしたJavaScript SDKがnode.js、Webブラウザで利用できるよう提供されています。</p>

<p>Spark Coreへプログラムを転送する場合は、Espruino、Tesselと違って、PCとUSB接続をする必要がありません。クラウド上のIDE <a href="https://www.spark.io/build" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Spark Build</a>で編集したコードをFlashすると、ネットワークに接続されているSpark Coreにリモート転送され、実行される仕組みになっています。</p>

<p>下のコード例では、Spark Coreと人感センサーをつないでセンサーの値を detected 変数にバインドしています。（一部抜粋）</p>

<p></p><pre class="crayon-plain-tag">Spark.variable("detected", &amp;detected, INT);
...
detected = motionDetect();</pre><p></p>

<p>上記のようにバインドされた値は以下のようにアクセスすることで、クラウドからセンサーの値を同期的に取得することができます。</p>

<p></p><pre class="crayon-plain-tag">curl -G https://api.spark.io/v1/devices/[Device ID]/detected \
  -d access_token=[Access Token]</pre><p></p>

<p>これをSparkのJavaScript SDKを利用して記述すると以下のようになります。</p>

<p></p><pre class="crayon-plain-tag">var spark = require('spark');
var ret = spark.login({"accessToken": "[Device Token]"});
device.getVariable('detected', function(err, data) {
  if (err) {
    console.log('An error occurred while getting attrs:', err);
  } else {
    console.log('Core attr retrieved successfully:', data);
  }
});</pre><p></p>

<p>SparkはSDKの他にサーバー、デバイス間の通信プロトコルが、node.jsモジュールで実装されています。それを利用するモックアップサーバーもnode.jsコードで公開されているので、結構JS成分が多いです。SparkのプロトコルはCoAP+SSLで設計されていて、このあたりはWoTというよりはIoTなんですが、かなり興味深い実装です。</p>

<p>筆者がSpark Coreを使ってみた感覚では、長時間にわたる動作についてはTessel、Espruinoに比べて安定していると感じました。Tessel、Espruinoは実験や製品の試作レベルでカジュアルに利用できるデバイスですが、Sparkは、それらよりも一歩製品レベルに踏み込んでいるような印象があります。</p>

<p>現在販売されているデバイス Spark Core は39ドルで販売されていますが、次世代のSparkデバイスである PhotonとそのコアモジュールP0が2015年5月に発売予定となっており、現在プレオーダーが受け付けられています。価格はPhotonが19ドル、P0が10個で100ドル（1個あたり10ドル）となっており、IoT製品の量産に利用できるような価格帯となっています。</p>

<h2>まとめ</h2>

<p>個人的な話ですが、最近<a href="http://morning.moae.jp/lineup/362" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ハルロック</a>の影響で電子工作にはまってます。仕事が終わってからハンダ付けをしたり、ブレッドボードで配線したりしてる今日この頃なんですが、マイコンのプログラミングはC++とかJavaとかでやるのはなんか負けた気がするので、JavaScriptでプログラミングできるものにこだわっています。</p>

<p>そういったWeb技術、特にJavaScriptを中心的に利用している組み込み機器を個人的に”JS Board”と呼んでいて、<a href="https://atnd.org/events/57672" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">勉強会</a>を開催したりしています。先日のHTML5 Conference 2015でも出展させていただきました。今後も勉強会などをやって、情報共有などをしていこうと思っています。</p>

<p><img src="/wp-content/uploads/2015/02/IMG_20150125_155111-640x4801.jpg" alt="" width="640" height="441" class="alignnone size-full wp-image-13150" srcset="/wp-content/uploads/2015/02/IMG_20150125_155111-640x4801.jpg 640w, /wp-content/uploads/2015/02/IMG_20150125_155111-640x4801-300x207.jpg 300w, /wp-content/uploads/2015/02/IMG_20150125_155111-640x4801-207x143.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" />　▲HTML5 Conference 2015にJS Board勉強会が出展。さまざまなJS Boardデバイスが展示されている。</p>

<p>これからまだまだJavaScriptを活用するデバイスが続々と登場してきそうです。
JS Boardに興味を持った方々、ぜひ一緒に勉強していきましょう！</p>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
		<item>
		<title>【IoT時代のWebとモノづくり】WebクリエイターもMakeしようぜ！ぶっちゃけ対談60分</title>
		<link>/miyuki-baba/13039/</link>
		<pubDate>Wed, 25 Feb 2015 01:00:47 +0000</pubDate>
		<dc:creator><![CDATA[馬場 美由紀]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[WoT]]></category>

		<guid isPermaLink="false">/?p=13039</guid>
		<description><![CDATA[連載： IoTxWeb (5)ArduinoやRaspberry piをはじめとした低価格のマイコンが登場し、ハードウェアの知識がなくても、手軽に電子工作が楽しめるようになってきました。HTML5 Experts.jp読...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (5)</div><p>ArduinoやRaspberry piをはじめとした低価格のマイコンが登場し、ハードウェアの知識がなくても、手軽に電子工作が楽しめるようになってきました。HTML5 Experts.jp読者の皆さんも、こうしたIoTやWoTに関心を持ち始めた方も多いのではないでしょうか。</p>

<p>WebクリエイターがMakeするにあたって、Webで培った技術は役に立つのか・立たないのか、これから活躍の場はあるのか。白石俊平編集長を聞き手に、すでにモノづくりの世界に足を踏み入れ始めたエキスパート<a href="https://html5experts.jp/bathtimefish/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">村岡正和さん</a>、<a href="https://html5experts.jp/dsuket/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">高岡大介さん</a>、もうバリバリのハードウェアの人として活躍している<a href="http://y-okajima.com/post/62798714861" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">岡島康憲さん</a>にぶっちゃけトークを展開してもらいました。</p>

<p><img src="/wp-content/uploads/2015/02/iot-1.jpg" alt="" width="640" height="373" class="alignnone size-full wp-image-13061" srcset="/wp-content/uploads/2015/02/iot-1.jpg 640w, /wp-content/uploads/2015/02/iot-1-300x174.jpg 300w, /wp-content/uploads/2015/02/iot-1-207x120.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 80%;">　▲左から、白石俊平編集長、岡島康憲さん、高岡大介さん、村岡正和さん</span></p>

<h2>IoTやハードウェアの世界に踏み込んだきっかけは？</h2>

<p><br>
<strong>白石：</strong>まずは、皆さんのIoTに対する取り組みを、教えてください。
<br><br>
<strong>村岡：</strong>僕はJavaScriptが得意なバリバリのWeb系エンジニアなんですが、最近IoTやWoTがIT業界で重要視されてきたので、ハードウェアの勉強を始めたところです。
<br><br>
でも、いまさら組込みの世界でJavaとかC++を始めてもかなわないし、そもそも自分はWebのエンジニアなんで、そっちに行ったら負けかなとも思ってるんです。僕のIoTへのこだわりは、ハードのアプリケーションやデバイスが動くWeb技術を取り入れていきたいってことなんですよね。</p>

<p><img src="/wp-content/uploads/2015/02/muraoka_1.jpg" alt="" width="550" height="371" class="alignnone size-full wp-image-13053" srcset="/wp-content/uploads/2015/02/muraoka_1.jpg 550w, /wp-content/uploads/2015/02/muraoka_1-300x202.jpg 300w, /wp-content/uploads/2015/02/muraoka_1-207x139.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /><br><span style="font-size: 80%;">　▲村岡 正和さん（※今回はリモートで参戦）<br>神戸でシステム開発を行っているフリーランスのエンジニア。コミュニティ活動では、html5jのスタッフやマークアップ部部長、HTML5-WEST.jpの代表として関西でHTML5を中心としたWeb技術の普及に努めている。<a href="https://atnd.org/events/57672" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">JS board勉強会</a>や、「<a href="http://w-ug.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">日本ウェアラブルデバイスユーザー会</a>」を運営している。</span>
<br><br>
JavaScriptで組込み機器を動かすというソリューションに注目していて、その技術を追っかけるために、「<a href="https://atnd.org/events/57672" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">JS board勉強会</a>」を立ち上げました。自分の家にも、JavaScriptを使った組込みボードで、猫の監視センサーを作ったりしています。</p>

<p><img src="/wp-content/uploads/2015/02/muraoka_2.jpg" alt="" width="550" height="399" class="alignnone size-full wp-image-13057" srcset="/wp-content/uploads/2015/02/muraoka_2.jpg 550w, /wp-content/uploads/2015/02/muraoka_2-300x217.jpg 300w, /wp-content/uploads/2015/02/muraoka_2-207x150.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /><br><span style="font-size: 80%;">　▲猫の監視センサー　※詳しくは<a href="http://www.slideshare.net/bathtimefish/espruino" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちらの資料</a>参照</span>
<br><br>
<a href="http://www.espruino.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espruino</a>というマイコンボードをネコのトイレに設置して、猫が出たり入ったりすると検知して、僕のスマホに送ってくれるんですよ。焦電センサーを使って、マイコンとWifiのモジュールとつないでいるんです。僕が外出していても猫がトイレに行ったことがわかるし、家にいると、すぐトイレが掃除できるのは便利なんです。なんかスマートハウスぽいでしょ？(笑)。これはJavaScriptで操作します。Arduinoのようにセンサーをつけて、JavaScriptで動かせるので、僕みたいなWebエンジニアでも普通に使えます。
<br><br>
あと1つ、<a href="https://tessel.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Tessel</a>もJavaScriptで操作できるものもあります。Espruinoよりももっと簡単に操作できる端末。Wifiが内蔵されているので、Intel Edisonに近いかんじです。Tesselの場合は、センサー類が別売りされている。簡単に装着することができるので、電子工作の知識がなくても使えます。スーパー簡単です。Espruinoはいろんな機能が使えるけど、電子工作の知識が必要ですね。
<br><br>
<strong>高岡：</strong>私は「<a href="http://aitc.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">先端IT活用推進コンソーシアム</a>」で活動しているのですが、IT企業がIoTに対してどう取り組んでいくかを考えるために、2014年11月から月1回、一から勉強するIoT勉強会やハッカソンなどを主催しています。</p>

<p><img src="/wp-content/uploads/2015/02/takaoka.jpg" alt="" width="550" height="404" class="alignnone size-full wp-image-13065" srcset="/wp-content/uploads/2015/02/takaoka.jpg 550w, /wp-content/uploads/2015/02/takaoka-300x220.jpg 300w, /wp-content/uploads/2015/02/takaoka-207x152.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /><br><span style="font-size: 80%;">　▲高岡 大介さん<br>外資系SIerでエンタープライズシステムの開発を経験した後、独法研究所にて形式手法やセマンティックWeb関連の研究に従事。ベンチャー企業などを経て現在はフリーランスとして、技術支援、開発、執筆、講演など様々な仕事に携わる。<a href="http://www.buildinsider.net/column/takaoka-daisuke" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Build Insider</a>でオピニオンコラムを執筆中。Senchaユーザーグループや<a href="http://aitc.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">先端IT活用推進コンソーシアム</a>で活動している。</span>
<br><br>
例えばこの<a href="http://jp.littlebits.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">littleBits（リトルビッツ）</a>を使って、勉強会でデモをやったりしてます。Arduinoも試してみたんですが、Wifiシールドを付けないとインターネットにつながらないので、<a href="http://www.intel.co.jp/content/www/jp/ja/do-it-yourself/edison.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Intel Edison</a>を買ってつないだりします。
<br><br>
<a href="http://www.seeedstudio.com/wiki/GROVE_System" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GROVE System</a>とか、さっきのTesselとか組み合わせれば簡単にできるというのは、最近の流行ですね。littleBitsは磁石でつながるし、ショートしないようになっているから子供でも使える。間にセンサーにはさんだり、シンプルなボタンにラッチというモジュールを挟むだけでトグルスイッチにもなります。あとはcloudBit（クラウドビッツ）はインターネットにつながる秘密兵器なので、注目しています。IFTTTに対応したBitモジュールが便利なんですが、まだ日本では正式発売されていないんです。
<br><br>
こんなかんじでデバイスやセンサーのことは勉強してますが、自分はあくまでもアプリケーションレイヤーの部分で頑張りたいと思っています。だからデバイスはお手軽に組み合わせて、使えるものを選んで試しているかんじです。
<br><br>
<strong>岡島：</strong>私は、もともとはWebサービスの企画屋だったんです。2009年くらいから友人たちとハードウェアをいじり始めて、2011年に岩淵技術商事を起業。<a href="http://tokyodevices.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">東京デバイセズ</a>研究開発用製品を製造販売するメーカーを展開しています。それ以外にも<a href="http://abbalab.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ABBALab</a>でいうハードウェアスタートアップアクセラレータへのサポートを通じて、ハードウェアのスタートアップ支援や、アクセラレーションのプログラム提供などを行っているので、IoTに関わる機会は多いですね。</p>

<p><img src="/wp-content/uploads/2015/02/okajima.jpg" alt="" width="550" height="383" class="alignnone size-full wp-image-13067" srcset="/wp-content/uploads/2015/02/okajima.jpg 550w, /wp-content/uploads/2015/02/okajima-300x208.jpg 300w, /wp-content/uploads/2015/02/okajima-207x144.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /><br><span style="font-size: 80%;">　▲岡島 康憲さん<br>岩淵技術商事株式会社 執行役員。インターネット関連企業・NECビッグローブにて、Webサービスの企画立案・運用やインターネット接続型ハードウェアの企画立案に6年間従事する。2011年7月、エネルギー関連ハードウェアや、Webサービスの企画開発を主業務とする岩淵技術商事株式会社を創業。研究開発用電子製品を開発・販売する「<a href="http://tokyodevices.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">東京デバイセズ</a>」を運営している。</span>
<br><br>
友人たちと作った代表的なもの1つは、2009年にTwitterと脈拍のセンサーをつないで「<a href="http://www.engadget.com/2009/06/28/device-judges-your-pulse-and-shares-the-results-with-your-mom-an/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">死んだらツイートするデバイス」こと「秋月パルス」</a>。毛細血管の赤外線吸収量から、血流の変化を検出し、Twitterに生命活動を投稿する自作デバイスです。Twitter APIを活用したハードウェアなんですが、同じように個人が開発したWebサービスと絡めたハードウェアで、PCなしで装置単体でネットもつながるのは当時はほとんどなかったと思います。海外のTechCrunchやEngadgetで取り上げられて、日本で話題になりましたね。
<br><br>
<strong>白石：</strong>へえ、すごいですね。ところで、ハードをいじり始めたきっかけは何だったんですか？
<br><br>
<strong>岡島：</strong>起業する前は、NECビッグローブで動画配信サービスなどWebサービスの企画運営をやってたんです。多くのWeb系企業が展開していたサービスの大半がPCや携帯電話向け中心だった状況に限界を感じて、上司と研究開発部を作って、今で言うChromecastのようなハードウェアプロトタイプをはじめ、いくつかのハードウェアの企画や試作をしました。また、Kickstarterのようなクラウドファンディングが普及し始めた時期に、個人間送金のようなかたちで投げ銭ができるサービスをリリースしたりしていました。
<br><br>
<strong>白石：</strong>東京デバイスセズは、販売代理店をやってるんですか？
<br><br>
<strong>岡島：</strong>いえ、全体の半分以上は自社製品です。複数人で製品開発を行う場合もありますが、大半のものは弊社の代表自身が開発しています。利用シーンやユーザーニーズををうまくとらえることで、少人数であっても魅力ある製品を作れるのではないかと考えています。</p>

<h2>WebクリエイターがMakeする必要って、あるの？</h2>

<p><br>
<strong>白石：</strong>ではそろそろ本題に。そもそもWebクリエイターがMakeする必要性って、あると思いますか？
<br><br>
<strong>村岡：</strong>絶対やらないといけないということはない。jQueryと同じで使いたい人だけやればいいんじゃないかと。ただし、やったら絶対面白いと思いますね。これまでなかった新しいビジネスのチャンスにもなるし、勉強すればハードウェア業界に打って出れるチャンスでもある。
<br><br>
別にフリーランスだから新しい仕事を取りにいこうとか、自分で製品を作って売ろうとかも、今のところ考えてない。じゃあ、なんでかと言えば、答えはハードウェアの人と組んで仕事をするためには、最低限の知識が必要だと思っているから。これからはWebクリエイターもある程度のハードの知識は必要だと思うし、ハードウェア側の人も勉強しているはず。
<br><br>
お互いに共通言語で話せるくらいにならないと、いいものは作れないと思うんです。これからは絶対Makersみたいな仕事が増えていくし、ハードウェア屋さんの発想や知識だけではできないことを作りたいんですよね。Webクリエイターにしかできない新しいソリューションを生み出していきたい。ハード屋と仲良くなりたいから勉強しているし、自分のスキルアップや新たな分野にシフトチェンジするチャンスだと思ってます。
<br><br>
<strong>白石：</strong>なるほど。今の村岡さんの話には「IoTの仕事が増えていく」、「その中にWebクリエイターの仕事がある」という2つの仮説がありましたね。岡島さんは、どう思われますか？</p>

<p><img src="/wp-content/uploads/2015/02/okajima3.jpg" alt="" width="550" height="353" class="alignnone size-full wp-image-13073" srcset="/wp-content/uploads/2015/02/okajima3.jpg 550w, /wp-content/uploads/2015/02/okajima3-300x192.jpg 300w, /wp-content/uploads/2015/02/okajima3-207x132.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
<strong>岡島：</strong>IoTの仕事は実際、今も増えています。ここ2～3年は、「ネットとセンサーをつなげてこんなことができませんか？」といった問い合わせも多いですね。CES（Consumer Electronics Sh.ow）でもIoT系のデバイスやプロダクトも増えて、盛り上がっていた。大手メーカーやハードウェアベンチャーからこれまでインターネットと関係なかったデバイス屋さんからの相談も増えてます。
<br><br>
Webクリエイターの仕事チャンスはあると思います。僕自身もハードとソフトの中間の立場なので、バリバリのハードウェア業界の方々にはWebサービス界隈の人の顔をする。
「IFTTT（イフト）っていうのはなあ…」なんて話を偉そうにするし、逆にWebサービス業界の方々にはハードウェア界隈の人の顔をして「お前は知らないかも知らないけど、ハードウェアって超大変なんだぞ」って！
<br><br>
ハードウェア業界の方々の中には、Webサービスの可能性や実装に必要な技術を把握しきれていない人もいる。例えば、福島で放射能のセンサーを作ろうとしたときに、GPSとネットをデバイスにつなぐにはどうしたらいいの？って相談されたとします。通信は3Gならいけるな、Webサーバーを立てて、管理画面作らなきゃとか、Googleアカウント立ててみようかとか…。Web系のエンジニアが必要とされるところはたくさんあります。特にセンサー、デバイス周りの認証回りは、相性がいいと思いますね。
<br><br>
Web的な発想で企画提案する人や、管理画面が必要なのであれば、UIデザイナーも必要とされてくるはず。だから、その仮説は正しいんじゃないかと。</p>

<h2>ハードウェアエンジニアとWebクリエイターの違い</h2>

<p><br>
<strong>村岡：</strong>さっきの話すごくわかりますね。最近、ハードウェア屋さんと話をすることが多くなって気づいたんですけど、彼らはソフトウェアやインターネットの知識が意外と少ない。ハードウェアは業務が高度に専門化しているから、設計者だけでは製造できないし、設計も業種が細かく細分化されている。何でもふんわり全部やるWeb業界の文化とは全然違うんですよね。でも、文化の違いを理解するだけでもずいぶん歩み寄れる。まずは業界・風土や仕事の理解ができてから、彼らと話がスムーズにできるというのがスタート地点。
<br><br>
そうなるとWebクリエイターはここからどういうソフトを作ったらいいか、サービスまで広げて考える。ソフトからサービスまで考えることがハード屋さんにはないから、新鮮に映るみたいです。デバイスを作る理由をサービスを作ることまでつなげてあげると驚かれるんです。これはやってみてわかったこと。ハード屋さんには刺激を与えられているし、面白いと言ってもらえる。本質的な新しいジャンルとのマッシュアップだと思っている。まだまだ可能性があるし、新しくて楽しい仕事が増えていくので、みんなも早くやったほうがいいと言いたい。
<br><br>
<strong>白石：</strong>僕は自分がハードを知らなさすぎるせいか、ハード屋さんがソフト屋さんになるほうが簡単じゃないのって思ったりします。ソフトウェア作りって、そんなに難しい気がしないっていうか…。
<br><br>
<strong>村岡：</strong>むこうも同じこと思ってますよ(笑)。電気回路を覚えるほうが、ソフトウェアやWebサービス考えるより簡単じゃないかって。</p>

<p><img src="/wp-content/uploads/2015/02/okajima2.jpg" alt="okajima2" width="550" height="367" class="alignnone size-full wp-image-13075" srcset="/wp-content/uploads/2015/02/okajima2.jpg 550w, /wp-content/uploads/2015/02/okajima2-300x200.jpg 300w, /wp-content/uploads/2015/02/okajima2-207x138.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
<strong>岡島：</strong>どういうレイヤーで作るかにもよりますけど、例えば銀行のシステムを作るのって個人レベルじゃ厳しいじゃないですか。PHPでちょいちょいとWebサイト作るのとは全然違う。
<br><br>
それと同じで、東京デバイセズは何千万の製品を完全なものを安定的に供給するのは無理だけど、ハッカブルな製品を毎月数台出すくらいなら問題ない。十分売り上げが立つんです。やること次第だし、比べることはあまり意味がない。
<br><br>
IoTの意味って、サービスのモノ化だと思っています。IoTはソフトのハード化なんだと。サービスを作るためにスマートフォンだけじゃ足りないからモノに手を出しているんだと。それが本質なんですね。僕がハードをいじりはじめた理由なんです。興味があったわけじゃないし、PCとガラケーでできることに限界を感じていたから。</p>

<p>大手メーカーが扱っていないモノを作ろうと思ったときに、画面の外に出たくてハードに手を出した。やりたいことに限界を感じたからハードを作り出したんです。ハード屋さんハードがあるからこそ、いわゆる従来型のハードウェアの企画開発フォーカスしてしまって、Webサービスによってハードウェア製品の価値を伸ばすことに検討の余地を残してしまっていると思います。</p>

<h2>今後のIoTビジネスはどうなる？</h2>

<p><br>
<strong>村岡：</strong>サービスというのは「モノを売ってなんぼ」だけじゃない。ハード屋さんはモノを作って売る対価のやりかたに慣れすぎて、それに気づかないんです。クラウドを使うとか、ソフトばらまいて広告を売るとか、Webのマネタイズの話をすると、ハード屋さんに「思いもつきませんでした」と驚かれます。
<br><br>
<strong>高岡：</strong>今後のIoTビジネスの話は興味深いですね。IoT勉強会をやっていると大きく二つの流れがあるような気がします。Makersやデジタルファブリケーションの文脈のIoTと、IBMやインテル、シスコなどの大きいビジネスやスマートグリッドなどの文脈。これが両方が融合していない気がするんですよね。分断されてるというか。Webエンジニアがどっちの文脈でいくのがいいか悩みますね。
<br><br>
先日ガートナーは、ハードウェアスタートアップベンチャーはあと2～3年後で限界がくると指摘していましたね。スタートアップが大企業にとって食われて、やれることがなくなってくるというものでした。</p>

<p><img src="/wp-content/uploads/2015/02/iot-4.jpg" alt="" width="550" height="367" class="alignnone size-full wp-image-13077" srcset="/wp-content/uploads/2015/02/iot-4.jpg 550w, /wp-content/uploads/2015/02/iot-4-300x200.jpg 300w, /wp-content/uploads/2015/02/iot-4-207x138.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
<strong>白石：</strong>メイカームーブメントが終わるということ？
<br><br>
<strong>岡島：</strong>今の話で2つ面白いと思ったことがあります。1つはシスコやインテルのIoTと、スタートアップのIoTに乖離があるという点。シスコやインテルは、ネットに繋がるハードウェアをどういうプロトコルでつなぐといいかという点にフォーカスしている。そもそも考えている土俵が違うから、ずれがあるんですよね。理由はレイヤーが違うから。
<br><br>
ハードウェアスタートアップ限界説については、ハードウェアスタートアップがハードウェアを作るのはものすごく大変なので、実際今も起きている問題です。イニシャルコストが大きい、設計や試作も大変、サポートも大変と、ハードウェアはお金がかかるビジネスだから。
<br><br>
<strong>村岡：</strong>Kickstarterはバブルみたいなものだって、言われてますもんね。
<br><br>
<strong>岡島：</strong>僕は、ハードウェアを作るコストが下がってくれば、その構造が変わっていくと思っています。ガートナーの発表は製品を設計・製造・販売する環境が今と変わらない前提でのものだけど、製造コスト、サポートのハードルが下がれば、それぞれの枠組みが変わって、さらに多くハードウェアスタートアップが入ってくる。そうなると必然的に、ブレイクスルーが起きてくる。
<br><br>
それは、インターネット業界のスタートアップと仕組みは同じなんですよね。サーバーにはお金がかかるし、新しい技術の伝搬コストや情報共有するコミュニケーションコストもかかるから、大手しかできないと思われてたことが、今はサーバーも安くなったし、GitHubが出てきてベンチャーでも遜色なく作ることができる。
<br><br>
<strong>高岡：</strong>そこでまさに、私たちWebクリエイターの力が役立つ可能性が高いわけですよね。
<br><br>
<strong>岡島：</strong>インターネット業界では、例えばUberのように、物理的な不動産や動産に対してブレイクスルーを起こしてきた。それと同じことが起こればいいだけ。
<br><br>
<strong>白石：</strong>ハードウェアの製造コストが今は高いと思われているけど、ブレイクして、コストが下がれば、スタートアップは引き続き盛り上がるということですね。
<br><br>
<strong>岡島：</strong>もしハードウェアスタートアップのこの盛り上がりが落ち着くとしたら、潜在的な燃料がありそうなバイオ領域に関心が移ることじゃないかって思っています。大手の伸びに押されて尻つぼみになるシナリオはあんまりピンとこないですね。
<br><br>
<strong>村岡：</strong>ああ、確かにそれはありますね。</p>

<h2>IoTの時代、Webクリエイターの仕事はどう変わる？</h2>

<p><br>
<strong>白石：</strong>IoTの時代が来るとして、僕らの仕事ってどう変わっていくのか意見を聞かせてください。
<br><br>
<strong>岡島：</strong>まず、Webのビジネスにどう関わっているかが、1つ大事な判断材料ですね。Webサービスの企画立案している人にとっては、企画の幅を広げるのにいいブーム。アタマのかたすみに考えておいたほうがいいと思います。サーバーサイドをやっている人は、IoTはセキュリティやプライバシーの問題とかで、ツッコミどころが多いから需要が増えると思います。
<br><br>
<strong>白石：</strong>TechCrunchでも、IoTのセキュリティとプライバシー問題は取り上げられてましたね。　
<br><br>
<strong>高岡：</strong>求められる人材としては、ハードウェアの知識もWebの知識もある人だけど、今はまだそうそういないですよね。私たちがハードウェアを理解したり、ハードウェアエンジニアがソフトを理解する必要がある。</p>

<p><img src="/wp-content/uploads/2015/02/iot-3.jpg" alt="" width="550" height="367" class="alignnone size-full wp-image-13071" srcset="/wp-content/uploads/2015/02/iot-3.jpg 550w, /wp-content/uploads/2015/02/iot-3-300x200.jpg 300w, /wp-content/uploads/2015/02/iot-3-207x138.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
<strong>白石：</strong>今は売り手市場だけど、ハードウェアエンジニアのニーズってどうなんですか？
<br><br>
<strong>岡島：</strong>ハード系のエンジニアも、めちゃくちゃ足りないって言われてますね。ハード系はフリーエンジニアはほとんどいないんです。大手メーカーがつぶれたら、数万人のエンジニアがが野に放たれる。エンジニアを解放してほしいって思ってます(笑)。
<br><br>
「DMM.make AKIBA」の施設運営やハードスタートアップ支援プログラムを小笠原という人間と一緒にやっているんですけど、いろいろなビジネスを通じた売上も重要である一方で、職業の枠をどれだけ増やすか、ハードウェアエンジニアの仕事をどれだけ楽しくできるかをよく話したりします。 
<br><br>
ハードウェアビジネスに関わるためには大手メーカーに入るしか道がない、その状況を変えたい。これからは、想像もしないような職業が、新たなハードウェアニーズの隙間から出てくるはずなんです。そのためにもハードウェアのフリーエンジニアをどうやって増やすかを考えています。
<br><br>
<strong>白石：</strong>IT業界はゼネコン構造が多いですが、ハードウェア業界はどうなんですか？
<br><br>
<strong>岡島：</strong>見方によっては、今のハードウェア業界は20年前のインターネット業界に似ていると言われています。だが、大手しかできなかったことがより低コストでできるようになって、つまり「ハードウェアビジネスの民主化」が進むことで、個人でもビジネスでできるようになった。これからはもっと盛り上がっていくんじゃないでしょうか。
<br><br>
<strong>高岡：</strong>我々Webエンジニアがハードウェアビジネスに飛び込んで、成功する確率はあるのでしょうか？ IoTを勉強すれば、仕事の幅は広がるけど、ガチに参入したらどのくらい成功できるものなのか気になります。</p>

<p><img src="/wp-content/uploads/2015/02/iot-5.jpg" alt="" width="550" height="367" class="alignnone size-full wp-image-13078" srcset="/wp-content/uploads/2015/02/iot-5.jpg 550w, /wp-content/uploads/2015/02/iot-5-300x200.jpg 300w, /wp-content/uploads/2015/02/iot-5-207x138.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
<strong>岡島：</strong>インターネットのサービスの成功確率とほぼ変わらないと思います。0.00001％とか(笑)。Webのサービスも、生き残る確率は限りなくゼロに近いですよね。
<br><br>
<strong>白石：</strong>大半がつぶれるってことですか？
<br><br>
<strong>岡島：</strong>生まれてつぶれていくのが認識できないくらいですね(笑)。今はまだ母集団が少ないから、目立っているけど。ただ認識しないといけないのは、きちんとバリューが提供できるサービスなのかどうか、お客さんに価値を与えることができるのかどうか、自分達でないとできないサービスなのかということ。ハードもソフトも、そこを設計してサービスを考えられる人は生存確率が高い。
<br><br>
生粋のハードウェア屋よりも、そういう意味ではWebクリエイターの方が成功できるはず。みんな、はてブの「成功するための○○の法則」とか大好きじゃないですか。そいう思想に慣れているのが、Web系エンジニアの強みですよね。</p>

<h2>だから、WebクリエイターもMakeしよう！</h2>

<p><br>
<strong>白石：</strong>では、最後にWebクリエイターとしてのメッセージを一言！
<br><br>
<strong>村岡：</strong>Webクリエイターもハードウェア知識も身に付けるべき、ということですね。ソフトとハードエンジニアの垣根がなくなってきたし、フルスタックエンジニアもハードの設計ができることが求められるようになると思います。
<br><br>
5年くらい前にHTML5の時代がくるって言われたけど、実際にHTML5が勧告されてから勉強し始めてたんでは、すでに遅い。たぶんそれと同じことが起こるんじゃないかと。「Arduinoとかできますよね？」って聞かれて、普通に「はい、やれます」と答えるような人が給料もらえるようになるんじゃないでしょうか。
<br><br>
<strong>高岡：</strong>なんだかんだ言っても、現実のものが動くのは楽しい。スクリーンを出て「現実をハックしよう！」ってことです。
<br><br>
<strong>岡島：</strong>画面の中だけに満足できなければ、ハードをやればいい。ただし、自分が興味があるものをやればいいし、世間にまどわされなくていい。受け身じゃなくて、好奇心をもってやるべき。時代の先端にいた人たちは、今に満足できなくて、踏み出した人たちなだけなんですから。</p>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
		<item>
		<title>Webエンジニアが、量産品のハードウェアを作るようになるまで─Cerevoの中の人に聞いてみた！</title>
		<link>/shumpei-shiraishi/12913/</link>
		<pubDate>Tue, 24 Feb 2015 00:00:30 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[システム開発]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Cerevo]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[SmartTrigger]]></category>
		<category><![CDATA[ハードウェア]]></category>

		<guid isPermaLink="false">/?p=12913</guid>
		<description><![CDATA[連載： IoTxWeb (4)Arduinoなどのマイコンのおかげで、ハードウェア開発、特にプロトタイプづくりに関するハードルはだいぶ下がりました。自分（白石）のような人間でも、LEDをチカチカさせるくらいのことはやって...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (4)</div><p>Arduinoなどのマイコンのおかげで、ハードウェア開発、特にプロトタイプづくりに関するハードルはだいぶ下がりました。自分（白石）のような人間でも、LEDをチカチカさせるくらいのことはやってみたことがあり、「こんなに簡単にハードを制御できるなんて！」と感動したのを覚えています。ただ、プロトタイプを一度作ってみると、更なる大きな疑問がわいてきます…<em>身の回りにあるハードと、自分の作ったプロトタイプの落差に驚愕する</em>のです。</p>

<p><em>自作したプロトタイプを、カッコいい量産ハードウェアに持っていくためには、どんな作業が必要なの？</em>
今回はそんな素朴な疑問に答えてもらうべく、Cerevoさんにお邪魔してプロダクトマネージャーの國舛さんにお話を聞いてきました。</p>

<p>Cerevoといえば「LiveShell」などのハードウェア制作で有名なハードウェアスタートアップ。先日のCESでは「Top Tech of CES」を受賞されたりと、その快進撃は止まりません。今回インタビューに答えていただいた國舛さんは、現在はCerevoのプロダクトマネージャーを務めていらっしゃいます。が、「<a href="http://smart-trigger.cerevo.com/ja/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SmartTrigger</a>」という製品を手がける前までは、ハードウェア開発の経験を持たないWebエンジニアでした（僕らと一緒ですね！）。</p>

<p><img src="/wp-content/uploads/2015/02/cerebo2.jpg" alt="" width="550" height="399" class="alignnone size-full wp-image-13083" srcset="/wp-content/uploads/2015/02/cerebo2.jpg 550w, /wp-content/uploads/2015/02/cerebo2-300x217.jpg 300w, /wp-content/uploads/2015/02/cerebo2-207x150.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /><br><span style="font-size: 80%;">　▲株式会社Cerevo プロダクトマネージャー　國舛等志さん</span></p>

<p>そんな國舛さんに、「量産ハードウェアの作り方」をわかりやすく語っていただきました。では、お楽しみください！</p>

<h2>SmartTriggerの説明</h2>

<p><br>
<b>白石:</b> 今回は、國舛さんがはじめて中心となって手がけられた量産型ハードウェア、「SmartTrigger」を題材に、ハードウェア開発の実際についていろいろ伺いたいと思っています。どうぞ、よろしくお願いします。
<br><br>
<b>國舛:</b> よろしくお願いします。ではまず、SmartTriggerとはどんな製品かを簡単に説明したあと、開発のお話をしましょうか。</p>

<p><img src="/wp-content/uploads/2015/02/cerebo3.jpg" alt="" width="550" height="331" class="alignnone size-full wp-image-13084" srcset="/wp-content/uploads/2015/02/cerebo3.jpg 550w, /wp-content/uploads/2015/02/cerebo3-300x180.jpg 300w, /wp-content/uploads/2015/02/cerebo3-207x124.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
こちらがSmartTriggerです。簡単に言うと、カメラとこのデバイスをつないでおくことで、スマホからリモートでカメラを操作できる、という製品ですね。
シャッターを押すのはもちろん、連写やタイマー撮影もできます。</p>

<p><img src="/wp-content/uploads/2015/02/cerebo5.jpg" alt="" width="550" height="364" class="alignnone size-full wp-image-13086" srcset="/wp-content/uploads/2015/02/cerebo5.jpg 550w, /wp-content/uploads/2015/02/cerebo5-300x198.jpg 300w, /wp-content/uploads/2015/02/cerebo5-207x136.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /><br><span style="font-size: 80%;">　▲聞き手：HTML5 Experts.jp編集長　白石俊平</span>
<br><br>
<b>白石:</b> おもしろいですねー。SmartTriggerが、スマホから送られてくる命令に従って、カメラを操作するという感じなんですね。
<br><br>
<b>國舛:</b> そのとおりです。タイムラプス動画（時間をかけて連続撮影した写真を動画のように高速再生するテクニック。時間を圧縮したような感覚の動画を得られる）も、間隔や秒数などのパラメータをセットしたら、あとはSmartTriggerが勝手にやってくれます。その間、スマホでは別の操作をしていても全然構いません。
<br><br>
<b>白石:</b> カメラとSmartTrigger、スマホはどういう風に通信するんですか？
<br><br>
<b>國舛:</b> SmartTriggerとスマホの間はBluetoothで無線通信します。SmartTriggerとカメラはケーブルで有線接続。メーカーの違いはケーブルで吸収していますので、国内メーカーのカメラはほとんどサポートできています。
<br><br>
<b>白石:</b> なるほど、手持ちのカメラに合うケーブルも同時に購入する、というかんじなんですね。<br />
では本日は、この「SmartTrigger」を制作するにあたってのいろいろなお話を伺いつつ、「Webエンジニアが量産品のハードウェアを作るまで」をお聞きしたいと思います。</p>

<h2>元々はWebエンジニアが趣味で始めたプロジェクト</h2>

<p><br>
<b>白石:</b> 國舛さんは以前はWebエンジニアだったとお聞きしていますが、そんな國舛さんがSmartTriggerを作るようになった経緯と製作過程を教えて下さい。
<br><br>
<b>國舛:</b> はい、元々私はJavaで業務系のアプリを作っているエンジニアだったのですが、数年前にCerevoに転職しました。この会社では、最初はPythonでサーバサイドのプログラミングを担当していて、そこからiOSのアプリエンジニアにシフトしていきました。<br />
<br>
SmartTriggerについては、最初は趣味でやっていたんです。テレビを見ていたら「タイムラプス」という表現方法があることを知り、それをキレイに撮れるようなデバイスはないかと探していました。
<br><br>
でもその当時の製品は割と高くてかっこよくなかったんです。買おうかどうか迷って、ネットで情報を収集しているうちに、「どうやら自分でもプロトタイプなら作れるんじゃないか」と思うようになりまして。同じようなものを作っている方の情報を参考にしながら、同じようにやったらとりあえずできた。
<br><br>
でもそこで自己満足してしまって、その後はしばらくほっといてたんですよ。その後会社でアイデアを出す場があったので、そこでこのアイデアを提案したことが、仕事になったきっかけですね。
<br><br>
<b>白石:</b> なるほど、会社の仕事とも関係なく、純粋に個人的なプロジェクトとして始められたんですね。
<br><br>
<b>國舛:</b> そうなんです。全然仕事にするつもりはなかった。
<br><br>
<b>白石:</b> ちなみに結論を先取りしてしまうと、結局これが量産ハードウェアづくりにつながるわけですが、その時点で量産ハードウェア開発の知識とかはあったんですか？
<br><br>
<b>國舛:</b> いえいえ、それが全然…。周りに助けられながら、なんとかやり遂げた感じです。
<br><br>
<b>白石:</b> それはソフトウェアしか触ったことのないぼくのようなエンジニアからすると、朗報です。いい仲間さえいれば、なんとかなるもんなんですね！</p>

<h2>まずはプロトタイピング</h2>

<p><br>
<b>白石:</b> では、SmartTrigger開発がどのように進んだのかをお聞かせください。最初のプロトタイプってどんな感じだったんですか？
<br><br>
<b>國舛:</b> 最初はAndroidとArduino、あとカメラを全部有線でつないだようなものでしたね。ネットの情報を見ながら、「Androidで操作したらカメラのシャッターが切れる」というところまで作りました。
プロトタイプは3つくらい作りましたね。
<br><br>
まず最初のプロトタイプは、そもそものコンセプトが実現できるかどうかを、形や大きさを気にせず試してみました。</p>

<p><div id="attachment_12920" style="width: 234px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/02/prototype1-224x300.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/02/prototype1-224x300.jpg" alt="SmartTrigger最初のプロトタイプ" width="224" height="300" class="size-full wp-image-12920" srcset="/wp-content/uploads/2015/02/prototype1-224x300.jpg 224w, /wp-content/uploads/2015/02/prototype1-224x300-154x207.jpg 154w" sizes="(max-width: 224px) 100vw, 224px" /></a><p class="wp-caption-text">SmartTrigger最初のプロトタイプ</p></div>
<br>
2回目のプロトタイプは、個人的な興味もあって<a href="https://mbed.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">mbed</a>という基板を使ってみたりと、ちょっと寄り道したりもしましたが、基本的にはどんどんサイズを小さくしていくのが目標でした。</p>

<p><div id="attachment_12921" style="width: 310px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/02/proto2.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/02/proto2.jpg" alt="SmartTrigger2番目のプロトタイプ" width="300" height="200" class="size-full wp-image-12921" srcset="/wp-content/uploads/2015/02/proto2.jpg 300w, /wp-content/uploads/2015/02/proto2-207x138.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">SmartTrigger2番目のプロトタイプ</p></div>
<br>
3回目のプロトタイプでは、BLE (Blootooth Low Energy) を使って動作させてみることが目標でした。BLEを触った経験がなかったもので、BLEのモジュールを取り寄せるところから始めて、手探り状態でしたね。</p>

<p><div id="attachment_12922" style="width: 310px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/02/proto3.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/02/proto3.jpg" alt="SmartTrigger3番目のプロトタイプ" width="300" height="200" class="size-full wp-image-12922" srcset="/wp-content/uploads/2015/02/proto3.jpg 300w, /wp-content/uploads/2015/02/proto3-207x138.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">SmartTrigger3番目のプロトタイプ</p></div>
<br>
<b>國舛:</b> SmartTriggerはクラウドファンディングを前提としていたので、プロトタイプの段階でできるだけホンモノをイメージできるものを作るようにしました。その後クラウドファンディングで無事成立し、製品化が決定。そこからは最終製品づくりに向かいました。</p>

<h2>量産に至る過程</h2>

<p><br>
<b>白石:</b> ちょっとそこ、詳しくお聞きしてもいいですか？Arduinoとかを使ったプロトタイピングまではまだイメージできるんですが、そこから最終製品を量産するというところまでのイメージがさっぱりわかなくて…
<br><br>
<b>國舛:</b> ぼくの場合はまず、リリース時期を決めてしまいます。例えばクリスマス商戦に間に合わせるぞ、とかですね。そこから逆算して、各工程にかけられる時間を見積もります。
<br><br>
そうして今度は、量産を前提とした試作を行っていきます。試作は毎回、明確な目標を定めて行うようにします。
<br><br>
まず必要なのは基板の設計と製品のデザインですね。それぞれ専門の方に担当していただき、まずは荒くてもいいから動くものを作ります。で、ここでトラブルがたくさん起きる。
<br><br>
それを受けて次の試作では、1度目の試作で出たトラブルに対処しつつ、信頼性の検証を行いました。
例えば静電気が発生しても壊れないとか、ボタンを何回押しても壊れないとか。
<br><br>
こんな感じで、次に何をやるかをイメージしながら、どんどん試作を改良していくイメージです。
<br><br>
<b>白石:</b> デザインはどんどん変化していくんですか？
<br><br>
<b>國舛:</b> いえ、<em>デザインは最初のほうでしっかり固めなくてはなりません</em>。ハードウェアは、デザイン修正のコストが大きいので。そこがWebとは大きく違うところですね。
でも最近は3Dプリンタで簡単に出力できるのがありがたいです。基板が入るかどうかとか、ボタンが押せるかどうかとか、そういったことを確認するためには3Dプリンタで作った試作品がとても役に立ちます。
<br><br>
<b>白石:</b> なるほど。そして、何度か試作を行って完成度を高めたら、いよいよ量産に向けて動き始めるんですよね。
<br><br>
<b>國舛:</b> はい、そうですね。<em>量産するにあたっては、部品を購入したり、工場を決めたりということが必要になってきます</em>。<br>
部品も、物によっては中々入手できなかったりするので、どこからどうやって調達するかを考えなくてはなりません。ぼくらは中国の工場を使ったのですが、部品を現地で調達したほうがいいのか、こちら（日本）で入手したり作ったりしてから送ったほうがいいのかとか、いろいろとトレードオフがあります。<br><br>
また工場を決定するにあたっては、実際に現地の工場に足を運んで、設備や品質管理のレベルを確認します。スタッフの熟練度は非常に重要で、実際にサンプルを作ってもらって、クオリティを確認する必要があります。
そうして選んだ基板工場や金型工場、組み立て工場に3Dデータや回路図を渡し、量産を依頼するわけです。
<br><br>
<b>白石:</b> 工場に量産をお願いしたら、あとはスムーズに製品ができ上がるんですか？
<br><br>
<b>國舛:</b> それが理想なんですが、実際にはよくトラブルが起きてしまうんですよね。
あらかじめテスト項目を用意しておくんですが、テストにパスしないものが多く出てくると「不良率が高い」ということになって、なかなか出荷したい台数に届かないということになります。
<br><br>
量産するにあたっては、「量産試作」という工程があって、実際の工員さんを使って量産ラインを流してみます。
例えばそこで100台とか、多めの数を流して検証してみて、組立方法を変更して時間を短縮したり、製品に不具合がないかどうかを検証して調整します。
そうして問題が出なくなったら、あとはどばっと流すかんじですね。</p>

<h2>ハードウェア開発の体制と工程</h2>

<p><br>
<b>白石:</b> 量産に至るまでの流れが、少しイメージできるようになりました。これも聞きたいんですが、ハードウェアを作るとなると、実際にはどういうスキルを持った人が必要になるんでしょうか？
<br><br>
<b>國舛:</b> 大きく分けると4つくらいの職種が共同で作業に当たる感じですね。
<br><br>
まずは<em>電気設計</em>。基板づくりを担当します。
<br><br>
<em>デザイナー</em>。製品の見た目はもちろん、ボタンの押し心地などの機構も考えます。他にはパッケージや製品アクセサリのデザインもするし、場合によってはWebサイトのデザインも行ったりします。
<br><br>
<em>組み込みエンジニア</em>。ハードウェアに搭載する組み込みのソフトウェアを担当します。
<br><br>
そして一般的な<em>アプリエンジニア</em>です。
<br><br>
他にもサーバインフラのエンジニアやプロジェクトマネージャーなどもいたりしますが、基本的には先程申し上げた4つの職種がメインになります。
<br><br>
<b>白石:</b> あと、工程や期間についても、少し具体的に教えていただけますか？
<br><br>
<b>國舛:</b> 原理試作、EVT、DVT、そして量産と言った流れですね。</p>

<p><div id="attachment_12963" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28.png" alt="量産型ハードウェア開発プロセス（一例）" width="640" height="299" class="size-full wp-image-12963" srcset="/wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28.png 640w, /wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28-300x140.png 300w, /wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28-207x96.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">量産型ハードウェア開発プロセス（一例）</p></div>
<br>
Cerevoでいう原理試作というのは、どんな大きさでもいいから、やりたいことが出来るかを検証します。この過程でArduinoとかが使われますね。
<br><br>
EVTはEngineering Verification Testの略で、Cerevoでは社内で（作業が）完結する試作のことを指します。デザインを3Dプリンタで出力してみて、基板や部品が中にきちんと収まるかどうかを検証するのが主な目的です。ソフトウェアもちょっと書いたりしますね。EVTは1〜3回行い、1回のフェーズでだいたい1ヶ月から1ヶ月半かかります。
<br><br>
EVTを進めて行く中で、そろそろ工場にお願いしてもいいかな、という段階になったら、1〜3ヶ月くらいかけて工場の選定を行います。新しい工場を使うなら、契約とかも必要になりますね。
<br><br>
決定したら、DVTを行います。DVTはDesign Verification Testの略で、工場側がきちんと設計通り製造できるかのチェックが目的の試作になります。ここで問題がなければ、量産を行います。
<br><br>
最後に量産ですが、そもそも最初に電子基板作るのに3〜4週間かかりますね。<br>
その上で、1,000台とか3,000台作るとなると、2〜3週間かかるかな。部品が全部揃っているという前提ですけどね。量産にかかる時間は、製品によってかなりまちまちです。あとは販売ルートとかマニュアルの整備とか、そういう実務も必要になってきます。</p>

<h2>「とにかく作ってみる！」それが大事！</h2>

<p><br>
<b>白石:</b> ではそろそろインタビューを終えたいと思いますが、これまでソフトウェア開発しかしたことがないエンジニアに向けて、一言いただけますでしょうか？</p>

<p><img src="/wp-content/uploads/2015/02/cerebo4.jpg" alt="" width="550" height="352" class="alignnone size-full wp-image-13088" srcset="/wp-content/uploads/2015/02/cerebo4.jpg 550w, /wp-content/uploads/2015/02/cerebo4-300x192.jpg 300w, /wp-content/uploads/2015/02/cerebo4-207x132.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
<b>國舛:</b> 「とにかく作ってみる」それが重要ですね。最近は3Dプリンタもあるし、マイコンも流行っているので、ハードウェアを触るのもずいぶん敷居が下がりました。エンジニアは、どうしても「小さく」「カッコよく」を目指してしまいがちなんですが、最初はそんなのどうでもいい。とにかくやってみることが重要です。あとは、最近はイベントとかもよくやっているので、そういうのにも参加してみてはいかがでしょうか。
<br><br>
<b>白石:</b> 本日は、実際にハードウェア製品をリリースするまでの過程を詳しくお話いただき、ありがとうございました！とてもためになりました。</p>

<p>ちなみに、國舛さんが<strong>「ハードウェアスタートアップでアプリエンジニアは何をしているか」</strong>というテーマでブログを書かれています。こちらも合わせてお読みいただくと、より理解が深まると思います！</p>

<ul>
<li><a href="http://tech-blog.cerevo.com/archives/753/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ハードウェアスタートアップでアプリエンジニアは何をしているか</a> | Cerevo TechBlog</li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
		<item>
		<title>【Webデザイナー必読】IoT時代のデザイン思考を探る─久下玄×秋葉秀樹 デザイナー対談</title>
		<link>/shumpei-shiraishi/12370/</link>
		<pubDate>Mon, 09 Feb 2015 00:00:16 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[デザイン]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">/?p=12370</guid>
		<description><![CDATA[連載： IoTxWeb (3)IoTの時代、それはモノのデザインとWebのデザインが交錯する時代と言えます。 そんな時代に必要とされるデザイン思考とはなんでしょう？モノのデザインとWebのデザイン、そこにある違いは、そし...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (3)</div><p>IoTの時代、それはモノのデザインとWebのデザインが交錯する時代と言えます。
そんな時代に必要とされるデザイン思考とはなんでしょう？モノのデザインとWebのデザイン、そこにある違いは、そして共通するものは何でしょう？</p>

<p>この記事ではそんな疑問の答えを探るべく、この記事では、プロダクトデザインとWebデザインのプロフェッショナル2人を引き会わせて、デザインについて、デザイナーについて、UXについて、Webについて、IoTについて、気になることを全部語っていただきました。</p>

<p>プロダクトデザインとWebデザイン、その境界線から見える景色を、それぞれの分野のエキスパートが語ります。</p>

<p><small></p>

<h4>〜登場人物紹介〜</h4>

<p><br>
<b>久下玄（くげはじめ）:</b> デザイナー／エンジニア／ストラテジスト。東京造形大学卒業。家電メーカーのプロダクトデザイナーを経て、2009年にtsug,LLC創業。事業戦略、技術開発、製品デザインまで手がける。統合型デザインで、国内外の企業のイノベーションプロジェクトに携わる。並行して2012年<a href="http://coiney.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Coiney,inc</a>創業に参加し、以後プロダクト開発を担う。2010~2013年まで慶応大学SFC研究所にて、研究員として通信とデザインの研究および教育に携わる。近作に脳波ヘッドフォンmico（neurowear）やスマホ決済サービスCoiney（コイニー）など。受賞多数。近著は「リアルアノニマスデザイン」（学芸出版社・2013年・共著）。
<br><br>
<b>秋葉秀樹（あきばひでき）:</b> 株式会社<a href="http://tuqulore.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ツクロア</a>（tuqulore）代表取締役／デザイナー。<a href="https://html5experts.jp/hidetaro7/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Experts.jp公認エキスパートNo.16</a>。
本業はデザイナー。DTP・グラフィックデザイン・Webフロントエンド全般・Flashゲーム開発・3DCGと幅広く携わる。主な作品は海遊館やサンシャイン水族館とコラボしたAndroid／iPhoneアプリ「<a href="http://tuqulore.com/blog/activity/ikesu-adobe-appbox-awards-2014/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Ikesu</a>」。NFC技術を世界で初めて水族館で利用して魚をスマートフォン内に持ち帰られる体験を提供し、2ヶ月足らずで一万人が利用、人の集まる場所に私たちのデザインがどうビジネスに貢献するかをテーマに仕事をしている。近著に『Firefox OSアプリ開発ガイド』（リックテレコム）。その他、共著として『10倍ラクするIllustrator仕事術』（技術評論社）や『すべての人に知っておいてほしい HTML5+CSS3の基本原則』（MdN）など多数。2013年4月に株式会社ツクロアを設立。
<br><br>
<b>聞き手: 白石俊平（しらいししゅんぺい）: </b>HTML5 Experts.jp編集長
</small></p>

<h2>Webデザイナーの制約、そしてアドバンテージ</h2>

<p><br>
<b>白石:</b> まずは、簡単な自己紹介からお願いできますか？
<br><br>
<b>久下:</b> Coineyではプロダクトの統括を担当しています。Web、モバイル、ハードウェアなど様々な分野のデザイナー、エンジニアたちをまとめているという立場ですね。</p>

<p><div id="attachment_12387" style="width: 1034px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08212.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08212-1024x680.jpg" alt="久下玄さん" width="1024" height="680" class="size-large wp-image-12387" srcset="/wp-content/uploads/2015/01/DSC08212-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08212-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08212-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08212.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">久下玄さん</p></div>
<br>
ハードウェアやソフトウェア、Webやモバイル・アプリケーションといったものは、Coineyという会社のサービスにとっては欠かすことのできないものではありますが、あくまで「部分」です。それらを組み合わせてサービス全体ができ上がっている。その全体を「プロダクト」と言い表していて、僕はそこを統括しているという形です。
<br><br>
ところで、秋葉さんが手がけられた<a href="http://tuqulore.com/blog/activity/ikesu-adobe-appbox-awards-2014/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Ikesu</a>、見ましたよ。とても面白い。
<br><br>
<b>秋葉:</b> ありがとうございます。あれは「ゲーム」と見なされることも多いのですが、もともとは「（水族館に）集客する」という目的に沿ったものを作りたかったんです。</p>

<p><div id="attachment_12384" style="width: 1034px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08157.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08157-1024x680.jpg" alt="秋葉秀樹さん" width="1024" height="680" class="size-large wp-image-12384" srcset="/wp-content/uploads/2015/01/DSC08157-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08157-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08157-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08157.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">秋葉秀樹さん</p></div>
<br>
Webサイトを立ち上げて、ただ「来てください」と連呼したところで、効果はたかが知れている。なので、お客さんが自分から訪れたいと思えるような仕掛けを、デザイン主導で作りたい…というのがIkesuにおけるチャレンジでした。たまたまNFCという技術も話題になっていた頃だったし、新しい技術の「実証実験」的なこともやりたかったという思いがあったんですけどね。</p>

<iframe width="560" height="315" src="//www.youtube.com/embed/_B9ClymH3rI" frameborder="0" allowfullscreen></iframe>

<p><br>
<b>久下:</b> なるほど。最近は秋葉さんのように、「Webサイトを作るだけ」っていう取り組み方にフラストレーションを貯めているWebデザイナーも多そうですよね。<strong>今までWebデザイナーって、「スクリーンの中だけ」というかなりきつい制約の中だけで戦ってきてる</strong>わけじゃないですか。
<br><br>
<b>秋葉:</b> そうなんですよね。ぼくもWebデザイナーという職種からは一歩踏み出してしまったな、と感じているところです。
<br><br>
<b>久下:</b> とは言え、<strong>Webデザイナーという職種にはすごいアドバンテージもある</strong>な、とは思います。というのは、「目の前にお客さんがいない状況で、その行動を推測する」ということに長けているわけですからね。
<br><br>
「もの」のデザインっていうのは、人がその「もの」を使っているところをこの眼で確かめることができる。一方Webは、お客さんがほとんど見えないんですよね。それを、推測だけでグロース（サービスを成長）させていくってことを、これまでもずっとやってきているわけじゃないですか。
<br><br>
もちろん今は、トラッキングツールも増えてきていますけど、根本的にはスクリーンに対する反応しか確かめられない。ユーザーの操作を追うことはできますが、そのときユーザーがどんな感情だったか、どんな表情をしているかといったところは結局わかりません。
<br><br>
そういうところを類推しながら作っていくというのが、Webの人たち独特のカルチャーでありスキルだな、とは思いますね。プロダクトやモノの世界には、そういうことはほとんどありませんね。利用シーンを目にするのは簡単なので、そんなことをしてたら怒られますからね。「お前、客のところいけよ」と(笑)。
<br><br>
<b>秋葉:</b> 確かにそういうところはありますね。それがアドバンテージであるというのは、言われてみるまで気づきませんでした。</p>

<h2>デザインの根拠、目的、成果物</h2>

<p><br>
<b>秋葉:</b> ただ、<strong>「推測」に頼る度合いが大きい分、デザインに対する根拠が薄弱であるというところはあるかもしれません</strong>。デザインを何案か提出して、お客さんがその中から一つ選ぶ。でも、それを選んだ根拠は何なんだ、と(笑) 。そもそもそのデザインが正解かどうかなんて、納品の時点では絶対にわからないはずなんです。
<br><br>
<b>久下:</b> そもそも新しく何かを作るときに正解なんてわかるわけないですよね(笑)。特にWebサービスとかって「ローンチしてみないとわからない」ってのがホントのところじゃないですか？対象となるお客さんも多いし、多様だし。
<br><br>
<b>秋葉:</b> そうなんですよ。なので、最初に全てをデザインしようとするというのはなんか違うな、と思うようになって。
<br><br>
<b>久下:</b> 最初からそんなに大きなコストを払っても、リリースしてみないと当たるかどうかわからない。というか、ほぼ外れるじゃないですか(笑)。大きな賭けですよね。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08091.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08091-1024x680.jpg" alt="DSC08091" width="1024" height="680" class="aligncenter size-large wp-image-12378" srcset="/wp-content/uploads/2015/01/DSC08091-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08091-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08091-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08091.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a>
<br>
<b>久下:</b> 僕がやっている別のデザイン会社の方でも、「納品物体がある前提」をやめてもらえるようにしたんです。目的ベースで考える。例えば、「このサービスのお客さんを増やしたい」とかそういう目的。そのために、リソースを何ヶ月使えます…という仕事のかたちにしたんですね。
<br><br>
なんでそういうふうにしたかというと、通常の納期ありきの仕事だと、「納期に間に合わせること」が目的になってしまうんです。「納期が残り3週間しかない、じゃあ、3週間の中でできることをやろう」というふうに、目的が変わってしまうんですよね。
<br><br>
<b>秋葉:</b> ミッションが変わってしまうんですよね。
<br><br>
<b>久下:</b> コンペとかについても同じようなことが言えます。僕が仲良くしていただいてる、尊敬するデザイナーで<a href="http://www.8brandingdesign.com/profile/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">西澤明洋</a>さんという方がいて、<a href="http://www.8brandingdesign.com/works/coedo/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">コエドビール</a>とかのデザインを手がけられた方なんですが、彼が言うには「コンペは誰も幸せにならない」と。
<br><br>
なぜかと言うと、クライアントはいろんなものを見たいという目的でコンペを主催するのですが、それを受ける側は「コンペに通るため」のアイデアを出そうとしちゃうんですよね。そもそも持っている課題に対するアイデアは出てこない。
<br><br>
「A社はこうくるだろう、B社はこうくるかな、じゃあうちはこういこう…」ってな感じで、そもそものお客さんが関係なくなっちゃうんですよね。だから、コンペに参加するのは一切やめたと言っていました。
<br><br>
<b>秋葉:</b> 僕もコンペは参加しないことに決めてます。っていうのはですね、最後にコンペに参加した時に他のチームの人が「とりあえずプレゼンの時だけいいものを作って、実際に制作する段階で無理が判明したら言い訳すればいい」ってことを言っていて、それがショックで。僕は「コンペで印象深いものを作る」ということを目的にはしたくなかったので、やめちゃいました。
<br><br>
<b>久下:</b> でも、そういう問題って至るところにあるんですよね。自社でプロダクトを作っているCoineyでも、似たようなことはありました。十分な検討がなされずに納期だけが先に決まっちゃってて、そこまでに作らなくてはならない…みたいな状況ですね。ビジネス側からの無理な要求が開発に負荷をかけてしまうようなことが往々にしてあって、そうなるとクオリティが上がらなかったり、あとでサポートとかバグフィックスとかにコストがかかってしまったりして。</p>

<p><div id="attachment_12376" style="width: 1034px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08026.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08026-1024x680.jpg" alt="今回のインタビューはCoiney社に伺いました。" width="1024" height="680" class="size-large wp-image-12376" srcset="/wp-content/uploads/2015/01/DSC08026-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08026-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08026-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08026.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">今回のインタビューはCoiney社に伺いました。</p></div>
<br>
<b>秋葉:</b> コストを投下する側の考え方としては、「お金を出したからにはそれに見合うモノを得たい」という気持ちなんでしょうね。
<br><br>
<b>久下:</b> その気持ち自体は、ある意味しょうがない。とは言え、その「モノ」のクオリティと本質が問題です。サービスやプロダクトという言葉が、そもそも今の時代オブジェクト（具体的な「もの」）を指す言葉じゃなくなってきている。インターネット以前の工業製品オンリーの時代では、プロダクト＝オブジェクトだったかもしれません。
<br><br>
でも今は、プロダクトの本質が「オブジェクト＋情報」の場合もあれば、「体験そのもの」であってモノもカタチもない、ということだってありうるわけです。商取引における「プロダクト」の概念や本質はずいぶん変わってしまったのに、いまだに「プロダクト＝オブジェクト」という古い感覚が残っているのが問題。
<br><br>
<b>秋葉:</b> そうですよね。モノがなければ成果物とは見なされない、という時代はもう終わりに近づいていると思います。なので最近では、「納品」という行為についても考え直しているところです。多様なユーザーがいる中、最初から正解となるデザインにはたどり着けない。だから最近は、お客さんと一緒にサービスを作り上げていくというスタイルに変えていきたいな、と思っています。</p>

<h2>IoT時代のデザイン思考</h2>

<p><br>
<b>秋葉:</b> ただ、そういうスタイルに変えていくのは一筋縄でいかないのが、最近悩みの種でもあります。従来の一括納品というかたちではなく、デザインもエンジニアリングもお客さんと一体になって、サービスを少しずつ成長させていく。そういう関係にしていきたいのですが、どうすればそこに辿り着けるのか、と。
<br><br>
<b>久下:</b> 作る側だけじゃなく、お客さんにも学んでいただく必要があるかもしれませんね。幸い今は、そういう考え方での成功事例がたくさんありますし。デザインとエンジニアリング、プランニングといった言葉がすごく近いというか、ほぼ一緒になってきているような事例が増えてきていますよね。アップルがその典型的な成功例だと思いますが。
<br><br>
<b>秋葉:</b> そういう事例が増えていく中、「デザインそのものに対する考え方を見直そう」と考える人たちもやはりすごく多くなってきている感覚があります。仕事の進め方もそうですし、IoTの時代と言われている中で、PCやスマートフォンのスクリーンの中だけで終わらせようとすることも見直されつつある。「果たしてそれでいいのか」と考える人が増えています。
<br><br>
<b>久下:</b> 僕も、そういう意識の変化には賛成です。スクリーンの外のものも、すべて統合して考えるべきだと思います。そういう点で言うと、<strong>「UXデザイン」ってぼくはすごくいい言葉だと思う</strong>んですよね。だって、いろんなことをUXデザインって言葉で表すことが可能じゃないですか。「世の中に対して、体験そのものをどう作るか」っていうところから、全体を統合して考えようとする姿勢をよく表せる言葉だと思います。
<br><br>
で、体験を作るにあたっては、結局のところ「<strong>人の気持ちがわかる</strong>」っていうのが勘所になってくる。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08149.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08149-1024x680.jpg" alt="秋葉秀樹＆白石俊平" width="1024" height="680" class="aligncenter size-large wp-image-12379" srcset="/wp-content/uploads/2015/01/DSC08149-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08149-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08149-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08149.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a>
<br>
<b>秋葉:</b> わかります。いろんなデザインがあるけど、必ずその先に人がいて、その人の生活や感情がある。
<br><br>
<b>久下:</b> <strong>そういう勘所が分かる人っていうのは、デザインという領域の中においても、だいたい何をやらせてもうまい</strong>んですよね。スキルの分野とは関係なく。
<br><br>
例えば工業デザインだったら、モノを作るために加工法や素材への精通、3DCADや量産設計等のいろんなスキルが必要になります。Webだったらフロントエンドの知識から、サーバサイドどうするかなどの知識やスキルが必要になる。ただ、そういうスキルって後からいくらでも習得可能なものじゃないですか。特に最近は、スキルを身に付けるスピードがみんなすごく早い。それはなぜかというと、スキルって当たり前ですけど人のために作られているので、ちゃんとした材料とフローさえ踏めば、だれでも割と学べちゃうんです。
<br><br>
それよりも、そういうスキルを使って何を作るか、どういう体験を作るかという点が重要です。みんなここを簡単だと思っているけども、実はここが一番難しい。逆にここの勘所を掴んだ人は、あとからスキルはいくらでも身につけていける。だからWebだとかモバイルアプリだとか、そういう区切り方自体もはやナンセンスで、必要に応じて学んでいけばいいものだと思っています。
<br><br>
<b>秋葉:</b> ハードウェアとソフトウェアとかで区切るのも、もはやナンセンス、ということですね。
<br><br>
<b>久下:</b> そうです。例えば、僕がすごく尊敬するインタラクションデザイナーで<a href="http://ja.wikipedia.org/wiki/%E4%B8%AD%E6%9D%91%E5%8B%87%E5%90%BE" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">中村勇吾</a>さんという方がいるんですけど、東大建築科を卒業した後に橋梁設計の仕事をやりつつ、Webもはじめた…というおもしろいキャリアをお持ちなんです。その後Flashで、2Dのビットマップ画像でアニメーションさせるのが全盛だったような時代に、アルゴリズムと無機質な描画だけで不思議な気持ちよさを出すというカルチャーを作り、それがインタラクションデザインの分野に多大な影響をもたらしました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08324.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08324-1024x680.jpg" alt="" width="1024" height="680" class="aligncenter size-large wp-image-12400" srcset="/wp-content/uploads/2015/01/DSC08324-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08324-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08324-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08324.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a>
<br>
中村さんは、「構造」とか「気持ちよさ」っていうものに対するフェチなんだそうです。あの「気持ちよさ」って概念は、今のユーザインタフェースデザインにおける基礎の基礎だと思う。でも彼は元々Webの人でもなんでもない。気持ちよければメディアなんて何でもいいじゃん、と。まさに今の時代に求められる典型的な先輩みたいな人だと思うのですが、ああいう人が今後もっともっと増えていくんだろうなあ、と思っています。
<br><br>
近いところで言えば、Webの人がモバイルアプリケーション作るなんてのも、もう珍しくないじゃないですか。それくらいのスキルコンバートは今や普通だし、WebディレクターとかWebデザイナーとかWebエンジニアとか全部やってるよ、なんて人も普通にいたりする。今は電子工作がブームになっているので、これまでソフトウェアしか作ったことない人が、ハードウェアをプロトタイプレベルで作るというのも増えてきている。たぶん10年も経ったら、「肩書きを書きたくても書けない」って人がほとんどじゃないでしょうか。
<br><br>
<b>秋葉:</b> 僕も、「UIデザイナー」とか肩書きに付けたくないなあ…って気持ち、正直言うとありますね。
<br><br>
<b>久下:</b> 肩書きのせいで、勝手に狭く解釈されちゃいますよね。</p>

<h2>Webデザイナー／エンジニアの仕事は変わる？なくなる？</h2>

<p><br>
<b>秋葉:</b> 最近ぼくも、電子工作にチャレンジしているんです。例えば最近、猫の自動餌やり機を作ってみたんです。そしたら、猫がその機械を攻撃するわけですよ。「ここから餌が出てくる」と学習しちゃって、餌欲しさに機械を壊そうとするんです。なんでそんな当たり前のことを、先に気づかなかったんだろう…って。
新しいことにチャレンジすると、「やってみなければわからない」ということだらけなのを実感しますね。
<br><br>
<b>久下:</b> チャレンジ、重要ですよね。一方でチャレンジ自体を否定する人たちもいます。何事も最初からうまくいくわけないのに、失敗を恐れてチャレンジしなかったり、人がチャレンジした成果をバカにしたりするのはカッコ悪いと思う。
<br><br>
今、ハードウェアスタートアップと呼ばれる企業が増えていますが、今はまともなものを作っている会社だって、昔はショボいものしか出せてなかったんです。でも、そうやってチャレンジすることで学びがあり、仲間ができ、だんだんいいものを作れるようになってくる。最初にクソプロダクト(笑)を出す、というステップを踏まないとそうはなれないわけで。
<br><br>
<b>秋葉:</b> チャレンジを否定することは、自分の可能性も閉ざしちゃうことにも繋がりますよね。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08246.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08246-1024x680.jpg" alt="" width="1024" height="680" class="aligncenter size-large wp-image-12399" srcset="/wp-content/uploads/2015/01/DSC08246-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08246-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08246-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08246.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a>
<br>
<b>久下:</b> だから、思い切って踏み出してみるというのは、とても大事ですよね。
<br><br>
僕はハードもソフトも扱うサービスをやっているおかげで、両方のカルチャーを行き来する立場なのですが、最近のIoTブームが面白い現象を引き起こしているな、と思っています。
<br><br>
というのは、ハードの人もソフトの人も「自分の仕事がなくなっちゃうんじゃないか」と危惧してるんですよ(笑)。ハードの人たちは「ソフトの人たちがハードを扱うようになる」、ソフトの人たちは「ハードの人たちがソフトを扱うようになる」って。
<br><br>
僕から見ると、Webの人たちは「情報」を扱うのがすごく得意ですが、モノを扱う人たちはそれが苦手だったりするので、お互いの得意不得意を補い合う関係になるだろうと思っています。
<br><br>
残念ながら、<strong>単発の技術的スキルで面白いものを作れる時代は終わってしまいました</strong>。でも僕は、「そういう時代がやっときた」という気持ちです。みんなで手を取り合って面白いものを作れるぞ、と。</p>

<h2>プロダクトデザイナーという仕事</h2>

<p><br>
<b>白石:</b> 最後にお聞きしたいのですが「プロダクトデザイン」という仕事は、具体的にはどんなことをされているのでしょうか？
<br><br>
<b>久下:</b> 「プロダクトデザイン」という言葉は、実際にはとても広い意味を持つ言葉です。ただ一般的に言われている「プロダクトデザイン」というのは、多分「インダストリアル（工業、産業）デザイン」のことを指していると思うので、そういう前提でお話しますね。
<br><br>
とは言え、インダストリアルデザイナーの仕事もどんどん変わってきているんです。<br />
90年代くらいまでは、基本的にはハードウェアエンジニアが作ったものを「スタイリングする」「お化粧する」という仕事が中心でした。そういう仕事は、依然として重要な仕事として存在してはいますけどね。
<br><br>
その次に、「その道具がどうあるべきか」「道具の内部構造がどうあるべきか」を考えるという時代が来て、エンジニアリングの領域もカバーするようになりました。今、大きなメーカーのデザイナーとかはこのフェーズにいると思います。<br />
<br><br>
そして最近は、「そもそもデザインやエンジニアリングがどう使われるか」という統合的なストーリーを考えて、そのストーリーを実現までプロデューサーのように走らせるのが、今の若い世代のインダストリアルデザイナーの仕事です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08277.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08277-1024x680.jpg" alt="" width="1024" height="680" class="aligncenter size-large wp-image-12403" srcset="/wp-content/uploads/2015/01/DSC08277-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08277-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08277-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08277.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a>
<br>
<b>久下:</b> 昔…90年代後半とかは、ストーリーを考えてスケッチを描き、モノとして成り立つかを確かめるためにモデルを作ったり…といった、「動かないもの」でデザインを説明するのが工業デザインの仕事でした。<br />
最近はそもそも動くハードウェア &#8211; ホットモックと言ったりするのですけど &#8211; を用意して、それを組み替えたりしながら小さくしていくことで、エンジニアリングと一体になりながら「モノの形はどうあるべきか」を探っていくというやり方になっています。<br />
<br>
中身と形を分けずに、そもそもひとつの体験としてどうあるべきかを探る。例えば素材を考えるといったところから、どうやったら理想的な形に加工できるかという「製法」を考えたり、どこで作ってもらうべきか、値段はコミットできるのか…といったところを総合的に考えながら、物質的な人とのインターフェースを考えていくのが、今の工業デザイナーの仕事なのかなと思います。
<br><br>
<b>白石:</b> 例えばCoineyでいうと、どんな仕事をされているイメージですか？
<br><br>
<b>久下:</b> まずCoineyは、定期的にモノがはけていくビジネスモデルです。カードリーダーを無料で配布するので、ユーザーが増えれば増えるほど部材を調達しなくてはなりません。<br />
ただ、部品の調達ってかなり時間が必要で、平気で数ヶ月かかったりするんですね。だから、全体のリードタイムをきちんと見るということはやってますね。<br />
僕らのサービスはリーダーが常に適切な量で生産されないと、顧客を獲得するという活動にも影響が出てしまう。なので、ユーザーの増加ペースに合わせて、工場の生産ラインを調整しています。</p>

<div id="attachment_12372" style="width: 1034px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08379.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08379-1024x680.jpg" alt="Coiney (コイニー)" width="1024" height="680" class="size-large wp-image-12372" srcset="/wp-content/uploads/2015/01/DSC08379-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08379-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08379-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08379.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Coiney (コイニー)はモバイル決済サービス。専用リーダーをモバイルデバイスのイヤホンジャックに指すと、デバイスがカード決済端末に早変わりする</p></div>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08370.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08370-1024x680.jpg" alt="DSC08370" width="1024" height="680" class="aligncenter size-large wp-image-12373" srcset="/wp-content/uploads/2015/01/DSC08370-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08370-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08370-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08370.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a>
<br>
<b>白石:</b> 管理するという作業が主ですか？例えばCADでモデリングしたり…という作業はもう手がけられていない？
<br><br>
<b>久下:</b> いや、やってます。狭い意味でのデザインも、基本的には全部手がけていますよ。Webやモバイルのデザインについても、UXプロトタイプレベルまではぼくとデザイナーチームの方で作ります。ハードだけじゃなくて、ソフトも一丸になってやってかないとクオリティ高いものにならないので。僕の仕事は、Coineyというプロダクトにおけるユーザ体験のデザイン全体を引き上げることなんです。
<br><br>
<b>白石:</b> 実に広いですね。すごい。
<br><br>
<b>久下:</b> やはり物理的なオブジェクトを扱うサービスのデザイナーなので、オブジェクトに関わるデザインとエンジニアリングは基本全部手がける、って感じですね。会社のオフィスもデザインしましたよ。今いるこの会議室も、僕とFLOOATという仲良くしていただいてるデザイン会社でデザインしたんです。</p>

<div id="attachment_12375" style="width: 1034px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/01/DSC08030.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/DSC08030-1024x680.jpg" alt="久下さんがデザインされた会議室" width="1024" height="680" class="size-large wp-image-12375" srcset="/wp-content/uploads/2015/01/DSC08030-1024x680.jpg 1024w, /wp-content/uploads/2015/01/DSC08030-300x199.jpg 300w, /wp-content/uploads/2015/01/DSC08030-207x137.jpg 207w, /wp-content/uploads/2015/01/DSC08030.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">久下さんがデザインされた会議室。「外国人がイメージする和室」をテーマにしたとのこと。黒く見える床も実は畳敷き。</p></div>

<h2>おわりに</h2>

<p><br>
<b>白石:</b> では最後に、「IoT時代のデザイン思考」という記事の締めくくりとして、読者の皆様に対してお二人からメッセージをいただけますでしょうか？
<br><br>
<b>久下:</b> IoTの時代は、ハードウェアもソフトウェアも一緒くたになった、みんなが力を合わせて製品づくりをしていく時代です。個人的には、「やっとそういう時代が来たか」という感慨もひとしおです。せっかく、「いろんなジャンルの人が手を取り合って作る」というのが違和感のない時代になったのだから、みんな一緒になってどんどんモノづくりしていきましょう！
<br><br>
<b>秋葉:</b> これから、Webデザイナーも新しいことにどんどんチャレンジしていかなくてはなりませんね。そういう過程では、失敗事例もどんどん出てくると思いますが、みんながチャレンジしてみんなが失敗するのだから、それも許されるというのがIoTの時代だと思います。Just Do It!ですね。</p>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
		<item>
		<title>初心者でもわかる・できる！Arduinoを使った初めての電子工作実践</title>
		<link>/youtoy/12029/</link>
		<pubDate>Thu, 05 Feb 2015 01:34:12 +0000</pubDate>
		<dc:creator><![CDATA[豊田陽介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[電子工作]]></category>

		<guid isPermaLink="false">/?p=12029</guid>
		<description><![CDATA[連載： IoTxWeb (2)この記事では、「IoT」という言葉には少し関心があるけど、ハードウェアを作るなんてハードルが高そう…と感じていらっしゃる方々（特にWebデザイナー／エンジニア）に向けて、低価格で簡単にハード...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (2)</div><p>この記事では、「IoT」という言葉には少し関心があるけど、ハードウェアを作るなんてハードルが高そう…と感じていらっしゃる方々（特にWebデザイナー／エンジニア）に向けて、低価格で簡単にハードウェア制御を学べる「Arduino」（アルデュイーノ）という電子工作キットの使い方をお伝えします。</p>

<h2>電子工作でできること</h2>

<p>ではそもそも「電子工作」とは何でしょうか？<br>
インターネットで検索すると「電子部品を使った工作のこと」、「様々な部品で電子回路を作ること」などとでてきます。でも、「電子部品って何？」「電子回路？」と疑問が増えていきます。<a href="http://ja.wikipedia.org/wiki/%E9%9B%BB%E5%AD%90%E9%83%A8%E5%93%81" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Wikipediaで電子部品の項目</a>を見てみると「電子部品とは、電気製品に使用される部品のことである」と書いてあり、難しそうな部品の名前が書かれています。</p>

<p>はじめから詳細に踏み込むと難しそうなので、まずは、電子部品を使うとどのようなことが実現できるかを、具体例で見てみましょう。</p>

<h3>センサーライトなどの機能の例</h3>

<p>自分でスイッチのON／OFFを行わなくても、人の出入りに合わせて点灯／消灯するライトがあります。ライトが必要なときのみにONになり、省エネにも効果的です。<br />
この仕組みを実現するためには「センサーで人が近づいたことを検知する」、「ライトのON／OFFを制御する」という機能が必要です。この「人を検知するセンサー部品」や「ライトを制御するプログラムを処理する」といった部分が、電子部品を組み合わせることによって実現されています。</p>

<p>他に、「部屋の温度を自動的に設定温度どおりに維持する」というエアコンの機能を考えてみましょう。センサーライトの例のセンサーや制御の部分が、「センサーで温度を測る」、「エアコンの冷風／温風の温度を制御する」と置き換わると実現できそうです。</p>

<h2>Arduinoでできること</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_LED_blink.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_LED_blink-300x229.jpg" alt="ArduinoでLチカの実行" width="300" height="229" class="alignnone size-medium wp-image-12158" srcset="/wp-content/uploads/2015/01/Arduino_LED_blink-300x229.jpg 300w, /wp-content/uploads/2015/01/Arduino_LED_blink-207x158.jpg 207w, /wp-content/uploads/2015/01/Arduino_LED_blink.jpg 627w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>先ほどの例と似たようなことを、一から自分で試してみようとすると大変です。センサーなどの部品をつなげるだけでなく、「センサーで検知した内容に合わせて、何か制御を行う」という、プログラムを処理する部分や、プログラムを書き込む方法の用意などノウハウが必要です。</p>

<p>このように気軽には試せなかった「電子部品を使った工作」を、より身近にしてくれるものが「Arduino」です。Arduino には「センサーなどの部品をつなげる部分」や、「プログラムを開発し、部品へ書き込むための開発用ソフトウェア」などが用意されています。PCとArduino、そして、ちょっとした部品があれば電子工作を試すことができ、工作を始める際の敷居が大幅に下がります。</p>

<p>ところで、Arduinoを使うとどんなものを作ることができるのか、工作例を見てみましょう。</p>

<ul>
  <li>Arduinoの工作例（Youtube・Vimeo の動画へのリンク）
    <ul>
      <li><a href="https://www.youtube.com/watch?v=Po0uQPXmztU" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">郵便受けに手紙が届いたら携帯電話へお知らせ</a></li>
      <li><a href="http://vimeo.com/38796545" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ゼリーを触って演奏するユニークな楽器</a></li>
      <li><a href="http://vimeo.com/16797925" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Twitterで特定のつぶやきがあったらお知らせ：サルのぬいぐるみ</a></li>
       </ul>
  </li>
</ul>

<p>これらは、先ほどの例にあった「センサーによる検知、検知した内容にあわせた制御」を、Arduinoと部品を使って実現しています。Arduinoでは、例えば下記のような機能を実現できます。</p>

<ul>
  <li>光や温度、音、物との距離など周囲の状態を知る</li>
  <li>光や音をだす、モーターなどの部品や他の機械を動かす、他の機械に情報を送る</li>
</ul>

<h2>最初の一歩：Lチカ</h2>

<p>部品を組み合わせるといろいろなことができるArduinoですが、まずは基本的な内容を試すことにしましょう。Arduinoを試す最初の一歩に「Lチカ（LEDを点滅させるプログラム）」があります。この Lチカに必要な部品、部品のつなぎ方、LEDの制御方法などを説明していきます。</p>

<h3>手軽に部品を揃える</h3>

<p>Lチカに必要な部品がいくつかありますが、自分で個別に揃えるのは大変です。部品の種類が複数あり「どれを組み合わせれば良いかが分からない」ということがおこりえます。</br>
そのため、最初は、基本的な部品がセットになった「キット」を利用することをオススメします。インターネットで「Arduino　キット」とキーワード検索するといくつかでてきますが、4000円程度のものを一例として挙げておきます。</p>

<ul>
  <li>キットの例（2015年1月現在）
  <ul>
    <li>Arduinoエントリーキット（<a href="http://store.techshare.jp/shopdetail/005004000001" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">⇒テックシェアの販売ページ</a>）</li>
    <li>Arduinoをはじめようキット（<a href="https://www.switch-science.com/catalog/181/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">⇒スイッチサイエンスの販売ページ</a>）</li>
  </ul>
  </li>
</ul>

<p>　※ <a href="http://www.amazon.co.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Amazon.co.jp</a>でも購入が可能です</p>

<p>また、キットには説明書が付属されていないため、部品のつなぎ方は自分で調べる必要があります。インターネットで調べてもよいですが、調べるのが大変という方は書籍を購入することで手間を省けます。前述の2つのキットに関しては、販売ページの商品説明に、オススメの書籍の例がそれぞれ記載されています。</p>

<h3>Lチカのための部品</h3>

<p>部品をつないでみる前に、Lチカでに必要になるもの一式を紹介します。各部品の説明は後述していきます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/parts_r2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/parts_r2.png" alt="Lチカ用の部品一式" width="605" height="432" class="alignnone size-full wp-image-12112" srcset="/wp-content/uploads/2015/01/parts_r2.png 640w, /wp-content/uploads/2015/01/parts_r2-300x214.png 300w, /wp-content/uploads/2015/01/parts_r2-207x147.png 207w" sizes="(max-width: 605px) 100vw, 605px" /></a></p>

<p><a href="http://arduino.cc/en/Main/Products" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduinoボードはいくつか種類があります</a>が、この記事では、前述のキットでも同梱されている「<a href="http://arduino.cc/en/Main/ArduinoBoardUno" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino Uno R3</a>」を利用します。</br>
抵抗もいくつか種類がありますが、今回は利用するLEDに合わせて330Ω（オーム）のものを使います。抵抗の種類については、後で補足します。
なお、キットを購入すると、よく利用する複数の種類の抵抗が付属されています。そして、キットに対応する書籍を購入していると、組み合わせるべき部品と抵抗の種類の情報が記載されているため、 Lチカやそれ以外の工作を楽に進めることができます。</p>

<p><strong>【USBケーブルに関する補足】</strong></p>

<p>PCとArduinoボードをつなぐ USBケーブルですが、ケーブルの種類が「USBケーブル A-Bタイプ」などと呼ばれるものになります。接続部分の形が下の写真のようなものになります。スマートフォンの充電に使うケーブルなどとは異なりますので注意しましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/USB_A_B.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/USB_A_B.png" alt="USBコネクタのA・Bタイプ" width="414" height="288" class="alignnone size-full wp-image-12121" srcset="/wp-content/uploads/2015/01/USB_A_B.png 640w, /wp-content/uploads/2015/01/USB_A_B-300x208.png 300w, /wp-content/uploads/2015/01/USB_A_B-207x143.png 207w" sizes="(max-width: 414px) 100vw, 414px" /></a></p>

<p><strong>【Arduinoボードに関する補足】</strong></p>

<p>Arduinoボード上の接続部などについて、一部補足します。
今回のLチカでは、下の写真の上部にある接続部を使います。今の時点では、接続部の横に0〜13番までの番号や GND と記載があることを確認しておいてください。
下側にある接続部は上部にある接続部と異なる役割を持っていますが、詳細は割愛します。
また、写真で示したLEDを見ることで、Arduinoボードに電源供給がされているかを確認できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_exp.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_exp.png" alt="Arduinoボードの接続部などの補足" width="449" height="240" class="alignnone size-full wp-image-12219" srcset="/wp-content/uploads/2015/01/Arduino_exp.png 640w, /wp-content/uploads/2015/01/Arduino_exp-300x160.png 300w, /wp-content/uploads/2015/01/Arduino_exp-207x110.png 207w" sizes="(max-width: 449px) 100vw, 449px" /></a></p>

<h3>部品をつなぐ</h3>

<p>それでは、Lチカ用の部品をつないでみましょう。</p>

<p><strong>手順1）ブレッドボードにLEDと抵抗を差し込む</strong></p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3-300x215.jpg" alt="Lチカ用回路のブレッドボード部分" width="300" height="215" class="alignnone size-medium wp-image-12154" srcset="/wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3-300x215.jpg 300w, /wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3-207x148.jpg 207w, /wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>上の写真の赤矢印で示した部分のように、LEDと抵抗を、ブレッドボードに差し込んでいきます。</br>
ブレッドボードとは、部品を差し込むための穴がたくさん空いた板状のものです。LEDやセンサーなどの部品のつなぎ替えを、簡単に行うことができるようになり、試行錯誤をする段階では非常に便利です。</p>

<p>まずは、以下の手順でブレッドボードにLEDと抵抗を差し込んでみましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/LED_R_r2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/LED_R_r2.png" alt="LEDと抵抗をブレッドボードに差し込む手順" width="629" height="336" class="alignnone size-full wp-image-12111" srcset="/wp-content/uploads/2015/01/LED_R_r2.png 640w, /wp-content/uploads/2015/01/LED_R_r2-300x160.png 300w, /wp-content/uploads/2015/01/LED_R_r2-207x110.png 207w" sizes="(max-width: 629px) 100vw, 629px" /></a></p>

<p>LEDは電気が流れる方向が決まっています。写真にあるように、方向は足の長さの違いで区別します。つなぐ方向を逆にしないように注意しましょう。なお、抵抗はつなぐ際の方向は関係ありません。</p>

<p><strong>【ブレッドボードに関する補足】</strong></p>

<p>ブレッドボードにLEDと抵抗を差し込みましたが、部品はどのようにつながっているのでしょうか？それを理解するために、ブレッドボードの中身について補足します。</br>
ブレッドボードのそれぞれの穴は、一部が中でつながっています。下の写真で、緑の線を描いた部分が、内部でつながっている穴になります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/borad_line_r2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/borad_line_r2-300x202.png" alt="ブレッドボードの内部でつながっている部分" width="300" height="202" class="alignnone size-medium wp-image-12108" srcset="/wp-content/uploads/2015/01/borad_line_r2-300x202.png 300w, /wp-content/uploads/2015/01/borad_line_r2-207x139.png 207w, /wp-content/uploads/2015/01/borad_line_r2.png 594w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>このため、先ほどつないだ部品は、LEDのマイナス側と抵抗の片側とが接続された状態になっています。</p>

<p><strong>【抵抗に関する補足】</strong></p>

<p>LEDなどの部品には流してもよい電流の大きさが決められており、過剰に電流を流すと部品が壊れてしまします。それを防ぐために使うのが抵抗です。抵抗を組み込むことで、部品に流れる電流を抑えられます。ここで、抵抗の種類などについて少し補足します。</p>

<p>今回、330Ωの抵抗を使いましたが、抵抗には種類があります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/R.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/R-300x174.png" alt="抵抗値と見た目の違い" width="300" height="174" class="alignnone size-medium wp-image-12162" srcset="/wp-content/uploads/2015/01/R-300x174.png 300w, /wp-content/uploads/2015/01/R-207x120.png 207w, /wp-content/uploads/2015/01/R.png 617w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>上の写真にあるように、抵抗についている色の並びが、抵抗の大きさを示しています。計算方法はここでは割愛しますが、最初のうちはよく利用するものはある程度限られます。そのため主なものの「抵抗値と色の並び」をメモしておくとよいでしょう。</p>

<p>抵抗にはいくつか種類があることを説明しましたが、どの抵抗を使えばよいのでしょうか？
それには、オームの法則を使って計算します。学校の授業で習った覚えがあったりするのではないでしょうか？
計算には、部品がどのようにつながっているかも考慮する必要があります。そのため、最初は書籍やインターネットで情報を調べるなどして、自分が試したい内容に関して「どの種類の部品と抵抗を、どのようにつなげばよいか」を参照したほうが楽に行えます。</p>

<p>それでは、今回の Lチカのつなぎ方の場合で、使う抵抗の大きさを計算してみます。計算式は</br>
　<strong>（「電源の電圧」 &#8211; 「LEDの順電圧」）÷ 「LEDに流す電流」 </strong></br>
となります。
LEDの順電圧というのは LEDによって決まっているものです。赤色のLEDの場合 2 V（ボルト）前後であることが多いようです。また、電源の電圧というのは、この場合は Arduinoボードの電圧になりますが、0～13番の接続部でかかる電圧は5Vです。LEDに流す電流は、LEDの順電圧と同様に LEDに決められた流してよい電流の最大値でひとまず計算します。これが10mA（ミリアンペア）の場合、抵抗値の計算は下記になります。</br>
　(5 &#8211; 2) ÷ 0.01 = 300</br>
この場合、利用する抵抗の大きさは300Ω（オーム）となりましたが、同じ大きさの抵抗があるとは限りません。その場合は、計算結果より大きく数字が近いものを選びます。そうすると、流れる電流が少し小さめになり、LEDに流してよい電流の最大値を超えることはありません。</p>

<p><strong>手順2）Arduinoボードとつなぐ</strong></p>

<p>先ほどの部品とArduinoボードをつなぎます。Arduinoボードを使う際、ボードの裏側は金属部分がそのままでているため、金属などの電気を通す素材の上に置くのは避けてください。</br>
では、下の写真にあるように、Arduinoボードとブレッドボードの間を、ジャンバーワイヤーでつないでみましょう。LEDのプラス側のほうが11番の接続部に、マイナス側のほうが抵抗を通じて GNDの接続部につながれる形になります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb.png" alt="Arduinoボードとブレッドボードの接続" width="633" height="480" class="alignnone size-full wp-image-12160" srcset="/wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb.png 633w, /wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb-300x227.png 300w, /wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb-207x156.png 207w" sizes="(max-width: 633px) 100vw, 633px" /></a></p>

<p>ジャンパーワイヤーは、Arduinoボードやブレッドボードへつなぐためのピンが、導線でつながれたものです。抵抗と同じで、つなぐ方向は特に関係ありません。</p>

<h3>プログラム（スケッチ）を書き込む準備</h3>

<p>部品の準備は整いました。次に、PCからArduinoボードへプログラムを書き込むための準備を進めていきましょう。Arduinoでは、プログラムのことを「スケッチ」と言いますが、本記事では「プログラム」と記載しています。</br>
今回は、LEDを点滅させるためのプログラムを書き込みます。</p>

<p><strong>手順3）PCで開発環境「Arduino IDE」を準備する</strong></p>

<p>「<a href="http://arduino.cc/en/main/software#toc1" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino用プログラムを扱う専用ソフトウェアの Arduino IDE</a>」を準備します。お使いのPCに合わせて、最新のWindows用／Mac用などのファイルを「<a href="http://arduino.cc/en/main/software#toc1" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino IDEのページ</a>」からダウンロードしてください（※2015年1月3日時点では、最新バージョンは1.0.6）。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/IDE_Download.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/IDE_Download-300x135.jpg" alt="Arduino IDEのダウンロードページ" width="300" height="135" class="alignnone size-medium wp-image-12067" srcset="/wp-content/uploads/2015/01/IDE_Download-300x135.jpg 300w, /wp-content/uploads/2015/01/IDE_Download-207x93.jpg 207w, /wp-content/uploads/2015/01/IDE_Download.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Windowsの場合はドライバのインストールも必要ですが、インストーラを使えば、Arduino IDE と一緒にドライバもインストールされます。Macの場合は、ZIPファイルを解凍するとArduino.appが展開されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_app.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_app-300x160.png" alt="Arduino IDE アイコン" width="150" height="80" class="alignnone size-medium wp-image-12061" srcset="/wp-content/uploads/2015/01/Arduino_app-300x160.png 300w, /wp-content/uploads/2015/01/Arduino_app-207x110.png 207w, /wp-content/uploads/2015/01/Arduino_app.png 399w" sizes="(max-width: 150px) 100vw, 150px" /></a></p>

<p>これで開発環境の準備ができました。</p>

<p><strong>手順4）PCとArduinoボードをつなぐ</strong></p>

<p>ArduinoボードをPCにUSBケーブルでつないでみましょう。
USBケーブルをつなぐと、PCからArduinoボードに電気が供給されるため、Arduinoボード上の小さなLEDが点灯します。Arduinoボードには電源スイッチがないため、動作を止めたい場合は USBケーブルを抜いて電気の供給を止めることになります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_Circuit_r3.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_Circuit_r3-300x215.jpg" alt="ArduinoのLチカ用回路" width="300" height="215" class="alignnone size-medium wp-image-12152" srcset="/wp-content/uploads/2015/01/Arduino_Circuit_r3-300x215.jpg 300w, /wp-content/uploads/2015/01/Arduino_Circuit_r3-207x148.jpg 207w, /wp-content/uploads/2015/01/Arduino_Circuit_r3.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>そして、手順3）で準備したArduino IDEを起動してください。そうすると、下の写真のようなウィンドウが表示されると思います（※以下、基本的にはMac版の画面で説明を進めます）。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/IDE_mac.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/IDE_mac-257x300.jpg" alt="Mac用の Arduino IDE" width="257" height="300" class="alignnone size-medium wp-image-12064" srcset="/wp-content/uploads/2015/01/IDE_mac-257x300.jpg 257w, /wp-content/uploads/2015/01/IDE_mac-177x207.jpg 177w, /wp-content/uploads/2015/01/IDE_mac.jpg 533w" sizes="(max-width: 257px) 100vw, 257px" /></a></p>

<p>ここで、つないだArduinoボードの設定と、シリアルポートの設定を行います。シリアルポートの詳細の説明は、今の時点では割愛します。ひとまず、ArduinoボードをPCに認識させるために必要な設定、と覚えておきましょう。</p>

<p>メニューの「ツール」⇒「マイコンボード」の中の「Arduino Uno」を選択します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a-300x157.jpg" alt="Arduinoボードの種類の選択" width="300" height="157" class="alignnone size-medium wp-image-12070" srcset="/wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a-300x157.jpg 300w, /wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a-207x108.jpg 207w, /wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a.jpg 504w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>次にシリアルポートの設定です。Macに関しては、メニューの「ツール」⇒「シリアルポート」の中の「/dev/tty.usbmodemという名前が含まれる項目」を選択すればOKです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/IDE_mac_serial_port.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/IDE_mac_serial_port-300x184.jpg" alt="Arduino IDEでのシリアルポートの選択" width="300" height="184" class="alignnone size-medium wp-image-12072" srcset="/wp-content/uploads/2015/01/IDE_mac_serial_port-300x184.jpg 300w, /wp-content/uploads/2015/01/IDE_mac_serial_port-207x127.jpg 207w, /wp-content/uploads/2015/01/IDE_mac_serial_port.jpg 506w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Windowsの場合、「COMという名前が含まれる項目」を選択するのですが、それが複数表示されている場合があります。そのため、Arduinoボードに該当するものを確認する方法を記載します。</br>
「スタートメニュー」から、「コントロールパネル」⇒「ハードウェアとサウンド」⇒「デバイスマネージャー」とたどります。そして、デバイスマネージャーの中の「ポート（COMとLTP）」をクリックし、その中で「Arduino Uno を名前に含む項目」を見ます。下の画像の例では「COM6」が Arduinoボードのシリアルポートになります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/win_com_mod.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/win_com_mod-300x102.jpg" alt="デバイスマネージャーでシリアルポートの確認" width="300" height="102" class="alignnone size-medium wp-image-12076" srcset="/wp-content/uploads/2015/01/win_com_mod-300x102.jpg 300w, /wp-content/uploads/2015/01/win_com_mod-207x70.jpg 207w, /wp-content/uploads/2015/01/win_com_mod.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>これで、PCとArduinoボードの接続と設定は完了です。</p>

<p><strong>手順5）Lチカのプログラムを試す</strong></p>

<p>これでLチカの準備が整いました。早速、Lチカを試してみましょう。</br>
Arduino IDEに下記のプログラムを入力してみてください。</p>

<p></p><pre class="crayon-plain-tag">void setup() {                
  pinMode(11, OUTPUT);     
}

void loop() {
  digitalWrite(11, HIGH);
  delay(500);
  digitalWrite(11, LOW);
  delay(500);
}</pre><p></p>

<p>そして、下の画像で示したボタンを押してみましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/IDE_program_r2.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/IDE_program_r2-300x271.jpg" alt="Lチカのプログラムと書き込み用ボタン" width="300" height="271" class="alignnone size-medium wp-image-12141" srcset="/wp-content/uploads/2015/01/IDE_program_r2-300x271.jpg 300w, /wp-content/uploads/2015/01/IDE_program_r2-207x187.jpg 207w, /wp-content/uploads/2015/01/IDE_program_r2.jpg 500w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>この操作で、Arduinoボードにプログラムが書き込まれます。
問題なく書き込みが行われれば、Arduino IDEの下部に「マイコンボードへの書き込みが完了しました」というメッセージが表示され、ブレッドボードにつないだLEDが点滅します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_LED_blink.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_LED_blink-300x229.jpg" alt="ArduinoでLチカの実行" width="300" height="229" class="alignnone size-medium wp-image-12158" srcset="/wp-content/uploads/2015/01/Arduino_LED_blink-300x229.jpg 300w, /wp-content/uploads/2015/01/Arduino_LED_blink-207x158.jpg 207w, /wp-content/uploads/2015/01/Arduino_LED_blink.jpg 627w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>もし、下の画像のようなエラーが表示された状態になった場合は、プログラムの入力ミスがないかを確認してみてください。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/ArduinoIDE_error.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/ArduinoIDE_error-300x257.jpg" alt="Arduino IDE での文法ミスのエラー画面" width="300" height="257" class="alignnone size-medium wp-image-12215" srcset="/wp-content/uploads/2015/01/ArduinoIDE_error-300x257.jpg 300w, /wp-content/uploads/2015/01/ArduinoIDE_error-207x177.jpg 207w, /wp-content/uploads/2015/01/ArduinoIDE_error.jpg 499w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>プログラムについて補足します。</p>

<p><pre class="crayon-plain-tag">void setup() { ... }</pre>の部分は最初に1度だけ実行される部分です。
今回のプログラムでは<pre class="crayon-plain-tag">pinMode(11, OUTPUT)</pre>と、11番の接続部分を出力用に設定しています。ジャンパーワイヤーが接続された11番から、LEDに電流を流したり止めたりするためのものです。</p>

<p><pre class="crayon-plain-tag">void loop() { ... }</pre>の部分は繰り返し実行される部分です。そして<pre class="crayon-plain-tag">digitalWrite(11, HIGH)</pre>は11番の接続部分から電流を流すためのもので、<pre class="crayon-plain-tag">digitalWrite(11, LOW)</pre>は、11番の電流を止めるものです。その電流を流したり止めたりする部分の間に、500ミリ秒（＝ 0.5秒）待つ <pre class="crayon-plain-tag">delay(500)</pre>という部分があります。このため、LEDが0.5秒ごとに点いたり消えたりすることなります。なお、この数字を1000にすると変化が1秒ごとになりますし、もっと小さな数字にするとより短い時間で点滅を繰り返すことになります。</p>

<p>今回、USBケーブルが Arduinoボードに電気を供給する部分になっているため、USBケーブルを抜くと ArduinoボードやLEDに電流は流れなくなります。Arduinoボードに書き込んだプログラムはそのまま残っているので、再度USBケーブルをつなぐなど電気を供給した際には、今回書き込んだプログラムが実行される状態になっています。</p>

<h2>おわりに</h2>

<p>Arduinoを使った電子工作はいかがだったでしょうか？</br>
LEDを点滅させる以外にも、センサーの情報を取得したり、モーターを制御したりなど、Arduinoを使ってできることはたくさんあります。ぜひ、他の部品を使った電子工作を試してみてください。</p>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
		<item>
		<title>WebクリエイターのためのIoT/WoTの基礎知識</title>
		<link>/dsuket/12418/</link>
		<pubDate>Sun, 01 Feb 2015 12:47:25 +0000</pubDate>
		<dc:creator><![CDATA[高岡大介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[WoT]]></category>

		<guid isPermaLink="false">/?p=12418</guid>
		<description><![CDATA[連載： IoTxWeb (1)ここ数年、モノのインターネット: Internet of Things（IoT）が盛り上がってきています。今年のCES 2015（世界最大級のIT＆家電見本市）でも IoTが大きなテーマとな...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (1)</div><p>ここ数年、モノのインターネット: Internet of Things（IoT）が盛り上がってきています。今年のCES 2015（世界最大級のIT＆家電見本市）でも IoTが大きなテーマとなったようですね。具体的なプロダクトやサービスも数多くローンチされ、今年はIoT元年ともいわれています。</p>

<p>「IoTとは何なのか」「なぜ今注目を集めるのか」「Web of Thingsとは」について解説します。そこから今後のIoTと、我々Webクリエイターがどう関わるのか、についても考えてみましょう。</p>

<p><img src="/wp-content/uploads/2015/01/internetOfThings_s.jpg" alt="internet of Things" width="660" height="440" class="aligncenter size-full wp-image-12460" srcset="/wp-content/uploads/2015/01/internetOfThings_s.jpg 640w, /wp-content/uploads/2015/01/internetOfThings_s-300x200.jpg 300w, /wp-content/uploads/2015/01/internetOfThings_s-207x137.jpg 207w" sizes="(max-width: 660px) 100vw, 660px" /></p>

<h2>モノのインターネットとは？ IoTの本質を考える</h2>

<p>Internet of Thingsとは、さまざまなモノがインターネットに接続され、センサーなどによりデータを測定したりコントロール可能にする概念だと言われています。モノがインターネットに繋がっていろいろできるということですが、その実体はなんなのでしょう。単にいろんなモノがインターネットに繋がることでしょうか。例えば、冷蔵庫がインターネットに繋がってレシピが見られるようになったら、それはIoTでしょうか。</p>

<p>それもIoTだという人もいるかも知れません。しかし、それだけでは少し物足りないと私は考えています。誤解を恐れずに言うと、IoTの本質はセンサーデータとサービスの融合です。モノの状態やその場の状況を測定し、その情報をネットワークを通じてサーバーに送り、そのデータを分析・解析し、適切なサービスを提供する。それまでやってこそIoTの本領が発揮されるのです。</p>

<p>先の例だと 単にモニタを付けただけの冷蔵庫ですよね。冷蔵庫内の温度、湿度、内容量、内部の空気の状態、カメラ画像などを取得し、そのデータをクラウドへ送り、分析することによって冷蔵庫内の食品の状態を管理しユーザーへ適切な情報を提示する。さらに各家庭の冷蔵庫の使われ方を横断的に分析すればいろんな可能性が考えられます。</p>

<p>このように、センサーとビッグデータによるサービスが新しいビジネスを生み出すと期待されています。</p>

<h2>IoTの対象分野: すべてがインターネットにつながる</h2>

<p><img src="/wp-content/uploads/2015/01/connect_things_s.jpg" alt="connect things" width="400" class="aligncenter size-full wp-image-12459" srcset="/wp-content/uploads/2015/01/connect_things_s.jpg 640w, /wp-content/uploads/2015/01/connect_things_s-300x200.jpg 300w, /wp-content/uploads/2015/01/connect_things_s-207x137.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>分かりやすく冷蔵庫の例で説明しましたが、IoTの対象はもちろん家電だけではありません。いわゆるスマート家電といったものや、それらを統合したスマートホームの実例も出てきています。</p>

<p>ヘルスケア業界も機器メーカだけでなく、Nikeのようなメーカーや、スタートアップも多く参入しています。もちろん医療分野でも、センサーを埋め込んだカプセルを飲み込んで消化器系を検査する内視鏡のような新しい検査や治療が期待されています。</p>

<p>生活に関わる場だけでなく、むしろそれ以上に産業界でも大きな変革をもたらすとも言われています。建機や産業機械、工場やビルに取り付けたセンサー群によって状態をリアルタイムで管理し、作業の効率化や故障の事前検知によってダウンタイムをゼロにすることを目指す取り組みもあります。</p>

<p>車産業ではコネクテッドカーと自動運転を実現するキーとしてIoTが注目を浴びています。他にも、農業、エネルギー、教育、公共、福祉などの幅広い分野での活躍が期待が大きく膨らんでいます。その市場規模は 2020年には 3兆400億ドルとも言われます。（※ <a href="http://www.idcjapan.co.jp/Press/Current/20141118Apr.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">
世界IoT（Internet of Things）市場予測を発表</a>）</p>

<h2>なぜ今IoTなのか: IoT時代の幕開け</h2>

<p>モノにセンサーを付け、データを集めて処理をするという概念は昔からありました。Internet of Thingsという言葉も1999年に論文で出てきます。以前からあるものがなぜ今注目されているのでしょう。いくつかの要因がありますが、大きなポイントは3つあると考えます。</p>

<h3>小型で安価なセンサーの普及</h3>

<p>ハードウェアの進化によりセンサーやチップの小型化、省電力化が進みました。また量産性も上がり、安価に作れるようになってきました。
これによりIoTデバイス自体の小型化や低価化はもちろんのこと、センサーを多数搭載したデバイスや、大量にセンサーを環境に配置するなど、従来コスト的に厳しかったことが実現可能になってきました。</p>

<h3>クラウドやビッグデータ基盤の成熟</h3>

<p>ここ数年のクラウドとビッグデータの発展は、言うまでもありません。センサーから送られる大量のデータをクラウドのストレージに格納し、ビッグデータ分析により高パフォーマンスの解析が簡単に安価に可能になりました。またそれらを活用したサービスを立ち上げるコストも格段に下がってきています。</p>

<h3>メイカームーブメント</h3>

<p>ハードウェアとソフトウェアの発展により、シンプルなIoTデバイスであれば簡単に作れる土壌ができてきました。そこにメイカームーブメントとデジタルファブリケーションの波が起こり、大きな潮流となっています。Makerの祭典である「Maker Faire」は、世界中で開催され毎年規模を拡大しています。開発者が増えることでツールやライブラリが充実し、さらに開発者が参加しやすい環境が生まれています。</p>

<p>ハードウェア（モノ）とソフトウェア（サービス）、それに開発者（人）が揃ってきている今、まさにIoT時代の幕開けですね。</p>

<h2>Web of Things: すべてがWebにつながる</h2>

<p><img src="/wp-content/uploads/2015/01/web_s.jpg" alt="web" width="400" class="aligncenter size-full wp-image-12461" srcset="/wp-content/uploads/2015/01/web_s.jpg 640w, /wp-content/uploads/2015/01/web_s-300x199.jpg 300w, /wp-content/uploads/2015/01/web_s-207x137.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>IoTの一つの側面として、<a href="http://www.w3.org/community/wot/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web of Things:WoT</a>といわれるものがあります。インターネットとWebの関係のように、IoTをセンサー類のネットワーク層と考えたとき、WoTは上位のアプリケーション層として位置付け、そこにWeb技術を利用する構想です。端的に言ってしまうと、なんでもWebに繋げよう、ということですね。</p>

<p>Webに繋げるということは、広く普及しているWeb技術を活用できるということです。開発者数の多いWebエンジニアがIoTに参加することが可能になります。開発者の増加は産業の発展にもつながり、IoT/WoTはますます進化のスピードをあげていくでしょう。</p>

<p>Web標準化団体W3CでもWoTコミュニティの設立やワークショップが開催され始めました。WoTで必要なものを整理し標準化することで、より活発な開発が期待されます。まだまだ議論中ですが、現在のところ4つの層が提案されています (以下は多少専門的な内容／用語を含みますので、「これからのIoT」の節まで飛ばしてくださっても構いません)。</p>

<h3>Accessibility Layer</h3>

<p>Web APIを使ってモノに接続し、操作・プログラミング可能にするWoTのコアレイヤーです。RESTful APIを使うことで、既存のWeb（HTML、JavaScriptなど）とシームレスに接続可能にします。</p>

<p>一方IoTではHTTPのリクエスト/レスポンスパターンよりも、MQTTやCoAPといったPublish/Subscribe（出版-購読）モデルのプロトコルが使われることも多くあります。そのような場合、WebSocketを使用してプロトコルを変換し、REST APIを補完します。</p>

<p>シンプルなセンサーや小型デバイスでは、パフォーマンスやバッテリーの問題でZigBeeやBLE（Bluetooth Low Energy）を使うことも多く、直接HTTPアクセスが難しいことがあります。非IP層とWebを繋ぐスマートゲートウェイを利用することで、その問題を解決します。スマートゲートウェイを使えば、ネットワーク層以下を隠蔽し、先ほどのプロトコル変換なども行えます。</p>

<h3>Findability Layer</h3>

<p>接続可能なモノがあるのか、また場所はどこなのか、を見つけるための層です。今後、センサーが環境に大量に増えた場合などに必要になってきます。このレイヤーではセマンティックWebの考えが使われます。MicrodataやRDF/RDFa、JSON-LDなどでモノがどういうサービスと接続可能なのか、どういうAPIがあるのかなどを定義し、それらを検索可能にします。</p>

<h3>Sharing Layer</h3>

<p>Web of Things は個人情報を含むビッグデータを扱うことも多くあります。そのため、サービス間でデータを連携する場合、どのモノの情報をどのサービスが使用できるのか効率的に安全に共有する必要があります。そういった情報をソーシャルネットワークで解決できないか、というSocial Web of Thingsというアプローチもいくつかあります。</p>

<h3>Composition Layer</h3>

<p>最後のレイヤーでは、モノと連携したアプリケーションを簡単に作成するために、サービスとモノのデータを高いレベルで統合することを担います。Web2.0の時代のサービスを統合するマッシュアップに影響を受け、物理的なモノとサービスを統合するフィジカルマッシュアップを行うための基盤や仕組みを提供します。例えば IFTTT のように誰でも簡単にプログラムのスキルを必要とせずとも統合できるようなツールやアプリケーションがいくつか提案されています。</p>

<p>他に面白い動きとして、Web of Thingsのある種究極ともいえる <a href="https://github.com/google/physical-web" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Physical Web</a>というGoogleが立ち上げたプロジェクトがあります。 全てのモノにURLを与え、専用アプリではなくWebだけで、ワンタップでアクセス可能にする構想です。仕様・設計はオープンにし、WoTの標準を目指しています。中央集権的なハブを介さず、網目状にURLでリンクするというのがまさにWebらしい考えですね。</p>

<h2>これからのIoT: 僕らがこれからできること</h2>

<p><a href="http://www.afpbb.com/articles/-/3037457" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">グーグルのエリック・シュミット会長が、「インターネットは近い将来、生活のあらゆる面に浸透し事実上『姿を消す』だろう。『センサー類や機器が世の中にあふれ、全く気にならないほど身の周りのいたる所に存在するようになる』と語った</a>と話題になりました。</p>

<p>そこまで進んだとき、IoTはどうなっているでしょうか。最初にIoTの本質はセンサーデータとサービスだと言いました。センサーが当たり前になった将来、IoTはモノがインターネットに繋がるというレベルを超えて、これまで関係がなかったような事業、産業同士が繋がり、新しいサービスの萌芽が数多く見られるようになるでしょう。</p>

<p>そんな時代に、Webクリエイターだからこそ活躍できることがあると思っています。Web業界は日々新しいビジネスモデルのサービスにチャレンジしています。その業界に身を置く我々は、まずサービスから考えることに長けています。また、UXDのようなユーザー体験を重視したサービス設計も行われ、サービスに対して真摯に向き合っています。それはこれからのIoT時代において、非常にアドバンテージとなるでしょう。</p>

<p>そこに加えて、今後僕たちWebクリエイターに必要なスキルは、<em>境界を越える</em>スキルではないかと思っています。ハードウェア/ソフトウェアの境界はもちろん、デザイン、企画、営業、経営などの職種を越え、異なる事業/産業の境界をも越えたところに、新しい可能性が広がっているように思います。そのあたりの詳細は、別途行った対談でまとめられるかと思いますのでお楽しみに。</p>

<h2>おわりに</h2>

<p><img src="/wp-content/uploads/2015/01/break_screen_s.jpeg" alt="break screen" width="660" height="514" class="aligncenter size-full wp-image-12458" srcset="/wp-content/uploads/2015/01/break_screen_s.jpeg 640w, /wp-content/uploads/2015/01/break_screen_s-300x233.jpeg 300w, /wp-content/uploads/2015/01/break_screen_s-207x161.jpeg 207w" sizes="(max-width: 660px) 100vw, 660px" /></p>

<p>IoTの定義は非常に曖昧で、各社各団体が様々なことを言っています。今回の私のまとめ方も全ての人が納得がいくものではないかもしれません。しかし、正確な定義はあまり重要ではないと考えています。例えば、クラウドの正確な定義より、そこで何ができるのかが重要ですよね。IoTも同様で、IoTを使って何ができるのか、どんなサービスが実現できるのか、を考えることが重要です。</p>

<p>さて、この記事では「IoTとは何か」について長々と説明してきました。しかし、IoTの楽しさは、言葉では表現しきれません。自分が思うとおりに、実際にモノが動くことはクリエイターなら誰しも感動するはずです。子供の頃のワクワクする感情が沸き上がってくること請け合いです。もしまだIoTを体験されてない方は、ぜひスクリーンから飛び出して、リアルをハックしてみてください。</p>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
	</channel>
</rss>
