IoT初心者 SORACOM Button ハンズオン（ボタンを押してkintoneに記録しよう！）

## コミュニティ活用フリー
このコンテンツは商用以外でしたらSORACOM UGなどのコミュニティで活用する場合は、内容をそのままコピーしたり、アレンジしてご利用いただけます。**但し、記載内容について著者は何ら保証するものではありません。あくまで自己責任でご利用ください。**

ハンズオンの運営や準備に興味のある方は以下を参照ください。

https://qiita.com/yukataoka/items/5246d36905b452796695

## はじめに
SORACOM Button（ソラコムボタン）は、ボタンを押すと通知できるシンプルな機器です。
![ボタン.jfif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/b053b754-4112-b993-36a2-1f16df144ee5.jpeg)
ボタンの押した（普通に押した、長押しした、2回押した）結果のデータをLTE-MというSIM通信で送信できます。

今回のハンズオンではソラコムボタンを使って、業務改善プラットホームkintone（キントーン）でボタンを押した記録を残します。
![BTN205.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/f99aa1a2-582a-10ce-e06a-a6a5f373aa42.png)
![TYPE05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/3ba7f547-b9d1-8cb3-d925-2f905ff4be26.png)

## 準備するもの
**パソコン**
皆さんのパソコンで作業を行います。
最新のChromeかfirfox、Edge、Safariのブラウザを利用します。
wifiは会場で用意したものもありますが、個人の環境お持ちの場合はそちらをご利用ください。

**ソラコムボタン**
SORACOMさんからお借りした20個を利用します。
事前にフタを開いて、IMEIの番号下4桁を控えておきます。
![BTM123b2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/e17cdc3e-b595-4bfd-0592-b3118e4d13b4.jpeg)
![BTM123C.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/3b6247aa-e021-8b82-ffc4-8ec79d705e06.jpeg)

**ソラコムアカウント**
先ほど配布した、SORACOMさんからお借りした20個のアカウントを利用します。

**キントーンアカウント**
先ほど配布した、キントーン試用環境で準備した20個のアカウントを利用します。

## キントーンでアプリを追加
最初に、ソラコムボタンを押した記録を保管するキントーンアプリを作ります。

ハンズオンｓｗ指定されたサブドメインのURLにアクセスします。
**https://＜サブドメイン＞.cybozu.com/k/**

以下の画面が開きますので、先にお渡ししたキントーンアカウントで「ログイン」します。
![KINTONE11b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/905257ff-58e7-cea6-5488-442a00964940.png)

続いてパスワードの変更を「保存」します。**変更したパスワードは忘れないように！**
![KINTONE12b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/cfc2c05d-453b-1d16-e359-365d67b2b44c.png)

ログイン後、以下の画面に遷移します。
![KINTONE14b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/17e66ba3-b598-38c1-457c-35ffdb5a8618.png)

右に表示されているスペース「ハンズオンXX」を開きます。（XXはキントーンアカウント末尾の番号）
![KINTONE14c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/e2b978da-a324-8e58-e973-018a20b42f31.png)

以下のようなスペース画面が開きます。（背景の画像などはキントーンアカウント毎に異なります。）
![KINTONE15b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/73ae8838-2d8d-7d01-6082-f56688726507.png)

右上の小さい「・・・」アイコンをクリックし、開いたメニューの「アプリを追加」を選択します。
![KINTONE16b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/4ec57f5d-c75b-7daf-3172-003fc1d8e9f1.png)

kintoneアプリストアが開くので「登録済のテンプレートから作成」を選択します。
![KINTONE17b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/ebc04d63-cc7d-6cbc-6065-2304745ff324.png)

「アプリを作成」します。
![KINTONE18b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/4cf40a59-b40f-3462-d0a2-fcf6b94ca649.png)

スペース画面に戻り「ボタン試験」というアプリが追加されています。
早速追加したアプリを開いてみます。
![KINTONE19b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/9af079b4-e24a-761a-f269-6aca906acf47.png)

この「ボタン試験」アプリにソラコムボタンを押したデータを蓄積します。
APIトークンという認証のための鍵を発行するため、右上の歯車アイコンをクリックします。
![KINTONE20b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/f705270d-15b2-fbf1-ab01-8471f695038d.png)

フォームの設定画面が開きます。「設定」タブをクリックします。
![KINTONE21b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/6a423f3b-b446-919a-19ed-d2b59cabf808.png)

真ん中辺りの「APIトークン」をクリックします。
![KINTONE22b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/cb388e00-eea2-de95-0d7f-5f225fa26bdf.png)

「生成する」ボタンを押すとAPIトークンが追加されます。
この**APIトークン**は後で使いますので、メモ帳にコピペするなどして**必ず控えておいて**ください！
アクセス権は**レコード追加**にチェックを入れて「保存」してください。
![KINTONE24b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/201117a6-368d-d8a7-cfa4-6440dc3aa222.png)

前の画面に戻るので「アプリを変更」します。
途中に確認画面が表示されますので「OK」します。
![KINTONE25b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/4fdba468-fc5a-da70-da0d-300792c7af3e.png)

この画面に戻ったらキントーンの準備は完了です。
![KINTONE19b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/9af079b4-e24a-761a-f269-6aca906acf47.png)

ブラウザのURLに表示されている**サブドメイン（この例では sora-demo ）** と **/K/の後の数字 アプリID（この例では10）** も後で使いますので、メモ帳にコピペするなどして**必ず控えておいて**ください！
![KINTONE20c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/6c69fda2-0429-6c45-5a9f-c1c754126d5e.png)

次はソラコムボタンの設定に移りますが、この画面は後で利用しますのでそのまま残しておきましょう！

## ソラコムボタンの設定
続いて、ソラコムボタンの設定をおこないます。
「ソラコムコンソールにアクセス」して、「グループの追加」を行った後「ボタンとグループの紐づけ」をします。

### ソラコムコンソールにアクセス

以下のURLにアクセスします。
**https://console.soracom.io/#/sam_login?coverage_type=jp**

以下の画面が開きますので、先にお渡ししたソラコムアカウントで「ログイン」します。
![SORA001b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/57889f64-18c5-3efe-52d7-4fea01122cec.png)

ソラコムコンソール画面が開き、ボタンが1個登録されていることがわかります。（ボタンが表示されてない場合は教えてください。）
確認が終わったら、画面右上の横棒3つのアイコンをクリックします。
![SORA002b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/54084875-d49c-bac5-846f-d692338c4d28.png)

### グループの追加
「SIMグループ」を追加を選択します。
![SORA003b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/f38ebf08-9b9e-5e61-df09-d6fd3a157a25.png)

SIMグループの画面が開きますが、まだグループが作成されていないため「グループを作成する」をクリックします。
![SORA004b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/4e178775-343e-9253-95ea-5d6449f5482c.png)

グループ作成画面が開きますので「ボタンハンズオン」と入力して「グループ作成」します。
![SORA005b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/fcf239fd-9379-6d24-b403-5b81caeedd2f.png)

以下のグループ設定画面が表示されます。
こちらで「SORACOM Air for セルラー設定」「SORACOM Beam 設定」「SORACOM Harvest Data 設定」を行います。
![SORA006b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/8191081f-7f2c-16df-6f05-61339cef4276.png)

#### SORACOM Air for セルラー設定
ソラコムボタンの情報を取得するための設定を行います。
「SORACOM Air for セルラー設定」タブをクリックして開きます。
![SORA007b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/bc45c3fa-acad-42fe-48c7-9d2a9dd4e9be.png)

下にスクロールして「簡易位置即位機能」を有効にし、「バイナリーパーサー」に **@button** と入力して「保存」します。
![SORA008b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/b9f13974-d282-9ada-5708-c25abc26b322.png)

#### SORACOM Beam 設定
ソラコムボタンの情報を中継サービスの送信し、kintoneアプリにデータを追加するため設定を行います。
「SORACOM Beam 設定」タブをクリックして開いた後、「設定を追加する」を開きます。
![SORA009b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/8d93bae2-8afb-0312-f019-d0d5f999fe75.png)

「UDP → HTTP/HTTPS エントリポイント」を選択します。
![SORA0010b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/740314f3-09e9-680a-07c5-c6ec84be143b.png)

ハンズオンで指定されたホスト名（この例では bbgklsvv42igfqc4szil44h4fq0rekcb.lambda-url.us-east-2.on.aws ）を入力します。
![SORA0012b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/94708305-cd86-1c46-4cc6-d6608085482e.png)

ヘッダ操作で「IMSI ヘッダ」と「IMEI ヘッダ」を有効にします。
このヘッダ情報でボタンを識別することが可能になります。
![SORA0013b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/daee7bf1-7ad2-f83d-de7b-b4344e5db4d5.png)

カスタムヘッダを「追加」します。
ここに先ほど作成したキントーンのアプリにデータを追加するために必要な情報を設定します。
![SORA0014b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/fc8e91af-f39c-c2a3-d1a2-f66b108938c3.png)

カスタムヘッダは以下のように設定し「保存」します。
![SORA0016c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/ed8c7c5f-d0f8-99a8-ee93-bcd30c24be64.png)

| アクション | ヘッダ名 | 値 | 説明 |
|:-----------|------------|:------------|:------------|
| 追加 | Kintone-Host | sora-demo | サブドメイン、キントーンの契約者を識別 |
| 追加 | Kintone-AppId | 前に保管したアプリID（この例では 10） | キントーンのアプリを識別 |
| 追加 | Kintone-Token | 前に保管したトークンAPI（この例では a5pd9iHDku6Li1buMVeXmBmQYwRkZ6xQYHoJQWqa ） | キントーンの認証鍵 |
| 追加 | Seacret | 指定された認証鍵（この例では KochiNoTataki） | キントーンにデータを中継するサービスの認証鍵 |

#### SORACOM Harvest Data 設定
ソラコムボタンの情報を、ソラコムコンソールで確認するための設定を行います。
「SORACOM Harvest Data 設定」タブをクリックして開き「ON」にして「保存」します。
![SORA101b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/b0eb9de5-741b-784d-f554-bb59a4c45baa.png)

以上でグループの設定は終わりです。
画面右上の横棒3つのアイコンをクリックして「SIM管理」の画面を開きます。
![SORA0018b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/64587433-0acf-563e-ecc5-8372a8441f4b.png)

### ボタンとグループの紐づけ
先ほど追加したグループとボタンを紐づけします。
一覧のボタン右端をチェックして、画面右上の「詳細」を開きます。
![SORA0019b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/99322d24-d1f7-0ec1-3c91-0f6318ac5bfd.png)

SIM詳細画面で先ほど追加した「グループ」を選択して「閉じる」で画面を閉じます。
![SORA0021b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/10a221d8-4c08-f6c8-a9e8-94d998026fc2.png)

以下のようにボタンにグループが表示されていれば、紐づけ設定は完了です。
![SORA103b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/1e7629d2-bc84-c269-1207-26c2489f0515.png)

以上で設定は全て完了しましたので、ボタンを押して確認してみましょう！

## ソラコムコンソールでボタンデータの確認
ボタンの右端の丸いボタンを押して試験をします。
ボタンを押すとLEDが橙色に点滅を始め、5秒程度で緑色が点灯したら通信は無事完了です。（通信に失敗したときはLEDが赤色に点灯します。）
一度押し、素早く二度押し、長押しなどを試してください！
![ボタン.jfif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/b053b754-4112-b993-36a2-1f16df144ee5.jpeg)

ソラコムのコンソール画面でボタンをチェックし「操作」ボタンをクリック、「データを確認」を選択します。
![SORA105b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/76d5fdd4-c00a-0f5e-b8aa-01777a4aacaa.png)

先ほど設定した SORACOM Harvest Data 画面のグラフでボタンのデータを確認できます。
このままでは見にくいので、右の **「clickType」以外のチェックを外し** てみましょう！
![SORA106b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/f4791919-7e89-4a83-ab68-30df33c94406.png)

ボタンを押した回数が時系列で増えてゆく見やすいグラフになりました。
右上の赤囲みのアイコンをクリックすることで、生データも確認できます。
![SORA107b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/0fcdf329-02d0-ba03-e4a5-e8e97555b3ee.png)

データはJSONという形式で表示されます。
このデータフォーマットを確認し、先ほど設定した SORACOM Beam で中継サービスにデータを送信、中継サービス側で届いたデータを加工してキントーンの指定したアプリにデータを保管します。
![SORA108b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/6447b1db-8eb4-d9b2-1184-72d1c4a99143.png)

## キントーンでボタンデータの確認
すでにこれまでの設定でキントーンにデータが保管されています。
![KINTONE29b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/cca02b3d-bdea-39d0-3999-e564d4295d44.png)

右上の「一覧」横の「グラフ」アイコンをクリックして「ボタンの押し方の分類」を選択します。
![KINTONE30b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/6f4c8c64-085d-3ec8-0032-7e7c8abd7287.png)

以下のような円グラフも確認できます。
![KINTONE31b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/76aaaf75-0160-9952-4c8c-72a294b63142.png)

**今回はパトランプを使った余興の仕込みもあります。色々な押し方をお試しください！

**以上までできたらハンズオンは完走です！**
余裕がある方は自分でkintoneアプリを一から作成してそちらにボタンを記録するなどに挑戦してみましょう！！

## ~~ソラコム手ぬぐいをかけて、設定を変えてボタンを押しまくろう！~~

~~以下にアクセスして条件を確認し、最初の設定を変更してボタンを押しまくりましょう！~~
~~https://sora-demo.cybozu.com/k/#/space/3/thread/5~~

~~上位の方＋αにソラコム手ぬぐいをプレゼントします！~~

## まとめ
今回のハンズオンではソラコムボタンを使って、以下のノーコードでIoTを体験しました。
![TYPE05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/3ba7f547-b9d1-8cb3-d925-2f905ff4be26.png)

実際には「中継サービス」は以下のように少し開発を行っています。
![TYPE02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/95ba9de6-5cb2-6b56-a7d7-ee1440cee810.png)
詳細な構成については、ちょっと情報が古くて今回と多少違いますが、気になる方は以下を参照ください。 
https://qiita.com/yukataoka/private/5246d36905b452796695
な違いは Amazon API Gateway の代わりに AWS Lambda Function URLs を利用しています。

無論以下のように zapier のような他のサービスを利用して、完全ノーコードで実現することも可能です。
![TYPE03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/29154111-97ef-680d-c5fa-510b742ba8ad.png)
今回のハンズオンを実現するためには zapier の有償プランが必要なので回避しましたが。

あと、おまけの「パトライト」を含んだ場合はちょっと複雑ですが、以下の構成になります。
![TYPE04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/002ff973-5378-2610-23f9-d6f29218e160.png)

**皆さんにIoTを楽しんでいただけたようでしたら嬉しいです！**

## 後片づけ
今回追加したソラコムコンソールのグループを以下の手順で削除をお願いします。

グループ画面を開きます。
![SORA003b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/f38ebf08-9b9e-5e61-df09-d6fd3a157a25.png)

グループの名前をクリックして詳細画面を開きます。
![end01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/183d30ff-e5e8-78e6-97cf-1574a88af65e.png)

「削除」してグループの一覧に表示されなくなったら完了です。
![end02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/080dc452-a7ae-05cc-9263-fc64ff21d09d.png)

なお、キントーンの試用環境は引き続き20日程度はお試し利用可能です。
期限までそのままお試しいただいて大丈夫です。

**以上でこのハンズオンは完了です！お疲れ様でした！！**