ハンズオン講師の一人反省会 - JAWS DAYS 2016 - HackDayを終えて -

tl;dr
-----

JAWS DAYS 2016 - HackDayトラックで[SORACOM Air+AWS IoTでデータ可視化 〜OpenBlocks IoTハンズオン初級編〜](http://jawsdays2016-handson-beginner.readthedocs.org)をやりました

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">いよいよです。今年はSORACOM Air と AWS IoTとOpenBlocksのハンズオンです！ <a href="https://twitter.com/hashtag/jawsdays?src=hash">#jawsdays</a> <a href="https://t.co/f18B3U5Ip8">pic.twitter.com/f18B3U5Ip8</a></p>&mdash; Kohei MATSUSHITA (@ma2shita) <a href="https://twitter.com/ma2shita/status/708443774259597312">2016年3月12日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

* 49名参加で完走率30%程度と大爆死
* 原因はBX1のセットアップに使うWi-Fi環境の劣悪さでしたが、5GHzに逃げるって方法を思いつかなかった私の負けです
* AWS Lambdaは、まだWindowsの人には早い(?)
* 物理世界はつらいよ。でも、台数が多くても短時間に簡単にセットアップできるべき
* BLEセンサーのメーカーは、MAC Addressを外装に記して欲しい

経緯
----

それは[AWS Samurai 2015の辻さん](https://www.facebook.com/ichi0220)からのお誘いから始まりました

![Screenshot from 2016-03-15 08-59-36.png](https://qiita-image-store.s3.amazonaws.com/0/22754/e0802ded-3890-22fe-fa1d-4c0632bb59b3.png)

突然の50台！
30台程度のハンズオンは経験済みでしたが、50台は未踏です

そして[岡崎さん](https://www.facebook.com/Kenkichi.Okazaki)から

![Screenshot from 2016-03-15 09-00-12.png](https://qiita-image-store.s3.amazonaws.com/0/22754/5cfaffcb-8f36-a601-88cc-c8b4c6764ff8.png)

合計5時間の超大作！
※結局私はランチ1時間を挟んだ3時間を担当しました

反省点1: Wi-Fi環境
------------------

**5GHzの有効活用**

JAWS DAYS 2016の[来場者は1,100名](http://jawsdays2016.jaws-ug.jp/archives/1646)、昨年度同様Wi-Fi環境が劣悪になることはわかっていました
そんな中でOpenBlocks IoT BX1との接続はWi-Fiとなるため、セットアップができるのか？AWS Consoleを表示することができるのか？そんな不安がスタッフ全員の心配事としてありました

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">さすがにこれだけiotfamilyなSSIDが並ぶことも無いですね。HackDayはそこそこ元気です。 <a href="https://twitter.com/hashtag/jawsdays?src=hash">#jawsdays</a> <a href="https://t.co/5yTuG0SLwC">pic.twitter.com/5yTuG0SLwC</a></p>&mdash; Kohei MATSUSHITA (@ma2shita) <a href="https://twitter.com/ma2shita/status/708499645614272512">2016年3月12日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

結果、やはりダメ

しかし午後に**5GHzのAPを急遽設置していただいたところ改善がみられ**次回につながるアイデアとなったと思います
具体的にはハンズオン会場のWi-FiやBX1との接続に使用するWi-Fiを5GHzにする、といったところです

要望:

* BX1の出荷初期状態は2.4GHzの1ch固定であるため、このへんの改善が期待されます

個人的には2.4GHzでなく、5GHzを初期にしても全く問題ないと思います。理由は下記の通り

* スマホ等、昨今の機器がすでに5GHz ready
* 5GHzのほうが遮蔽物の影響を受けやすいので、むしろ近距離セットアップする場合には使い勝手が良い


反省点2: AWS LambdaをWindowsな人に使ってもらう
----------------------------------------------

詳細は[こっちに書きました](http://qiita.com/ma2shita/items/8ebd164c15bdd627b7d6)

しかし、npmやpipが必要なものを動かすときには、zipで固めてアップロードする必要があります
OSXやLinuxな方はいいのですが、Windowsな方にはまだまだハードルが高いようですね

急いで書き直しましたけど、おかげでトラブルがなかったようで良かったです！

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">みんながAWS HUBにインスタンスしているのに、俺と来たらハンズオンのテキスト書き直してるよ＼(^o^)／<br>でもいいの、ESへのbulkをpython標準ライブラリのみで書き直したから。</p>&mdash; Kohei MATSUSHITA (@ma2shita) <a href="https://twitter.com/ma2shita/status/708315276681420800">2016年3月11日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

要望:

* AWS IoTからESにDirectで流し込めればいいのにね


反省点3: BX1 50台のセットアップ
-------------------------------

* 電波干渉が予想されていたため、BX1の初期起動状態のWi-Fi周波数を散らす
* 初級編と中級編で人が入れ替わるため、ソフトウェア的なリセットが必要

以上2点を実施するため、Ansibleを使いました

といっても、メーカ出荷時点ではAnsibleを走らすことはできないため、標準のファームウェア(というかUserland)にAnsibleが自動起動するように仕立て上げたオレオレファームウェアを作り、それを50台にインストールしてもらいました

一度作っちゃえば、Wi-Fi経由でplaybook.ymlをダウンロードして自身を構成してくれるようになるため、個体差があるデバイスを生成するのも苦になりません

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">本日はBX1のファームウェア書き込みの修行<br>といってもAnsibleでgoしてるだけだから、USBに電源さすだけの簡単なお仕事です <a href="https://t.co/3ZyZ9sSPUc">pic.twitter.com/3ZyZ9sSPUc</a></p>&mdash; Kohei MATSUSHITA (@ma2shita) <a href="https://twitter.com/ma2shita/status/707467162110337024">2016年3月9日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

※このファームウェアをつくるスクリプトは公開してもいいのかちょっとわからないので、個別にご相談ください

要望:

* こういう自動化できる仕組みが標準で提供されて欲しい


反省点4: BLEデバイスを見つける方法
----------------------------------

スクリーンショット撮り忘れましたけど、50台近くもBLEデバイスが検出されるのは、ちょっと笑えます

ただ、この中から自分のデバイスを探すとなると、笑いも止まります

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">週末のJAWS DAYS 2016のハンズオンに向けてアップ開始<br>（意訳:BLEのアドレスを調べてラベリングする修行 <a href="https://t.co/YmAIWIkhpD">pic.twitter.com/YmAIWIkhpD</a></p>&mdash; Kohei MATSUSHITA (@ma2shita) <a href="https://twitter.com/ma2shita/status/706710779400040448">2016年3月7日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

結局、電波的に隔離された部屋でBLEデバイスの電源をON → ラベリングという、タンポポお刺身ワークロードが発生しました

要望:

* 最初からMAC Addressはラベリングされてて欲しい


さいごに: BX1のWebUIの改善希望
------------------------------

メーカへの報告と不具合(?)の回避方法を兼ねて記しておきます

### ネットワークセットアップについて ###

初期出荷状態がフォームに表示して欲しい

最初にネットワークのセットアップを促されるのですが、下記のとおりフォームに何も表示されません
そのため再入力の手間があります

![Screenshot from 2016-03-15 10-08-03.png](https://qiita-image-store.s3.amazonaws.com/0/22754/c33014ee-7f65-eaae-8d69-f005f97922c4.png)

とくに認証方式がWPA-PSKがデフォルト表示になっており、気づかずに設定してしまうと「WPA2-PSKでつなげる(初期はWPA2-PSK)→セットアップ完了して再起動→WPA-PSKになる」
このようなシーケンスになるのですが、特にWindowsは認証方式が変更されると再接続してくれません。これにより「接続できないんだけど」トラブルが大発生しました

**回避方法**

しっかり入力しましょう。とくに認証の部分は確認が必要です

初期状態は[OpenBlocks IoT Family向けWEB UIセットアップガイド 2-3. WEBクライアントの準備(PDF)](http://openblocks.plathome.co.jp/common/pdf/OpenBlocks_iot_WEBUI_Guide_v1.0.7_151218.pdf)にSSIDとパスフレーズのみ記載されています

独自調査では下記のとおりです

* SSID = iotfamily\_本体シリアル番号
* パスフレーズ = openblocks
* 周波数 = 2.4GHz / 1ch
* 暗号化方式 = WPA2-PSK

### Internet Explorer 9,10,11 での検証不足？ ###

ネットワークのセットアップにIEの古いやつ(9? 10? 11?)を使うと、必要項目を埋めているはずなのに「ネットワーク設定を入力してください」表示され、セットアップを完了させることができませんでした

正確な条件やスクリーンショットを撮り忘れました、すみません

**回避方法**

IE EdgeかChrome等、モダンなやつでやりましょう


あとがき
--------

チューターの皆さんに助けてもらいながらのハンズオンでした。完走者も出て、ほんとよかった！
でもやっぱり、私は夏休みの宿題的パワーで押し切るしかできないのだと、思いましたよ