obnizとkintoneをノーコードでつないでみた

🎄こちらは [obniz Advent Calendar 2019](https://qiita.com/advent-calendar/2019/obniz) 21日目の記事です🔔

# はじめに

obnizには `Serverless Event` という形で、外部からのアクションをトリガーにobnizを操作することができる機能があります。ググってみると、IFTTT連携だったり定期実行だったりいろいろ出てきます。

そして、その Serverless Event ですが、obnizの [開発者コンソール](https://obniz.io/console/) を見ると、
<img src="https://docs.google.com/drawings/d/e/2PACX-1vQiZV8w0F_sIwBi_Yb0QhTxAuP5BYb6qhJxj7zMyWjWwDFp9cmdzhIy98xAGl-2ifPtGQYB4c9yMqpG/pub?w=500">

**Webhook** という一文字が・・・。
IFTTT連携できるって時点で気づくべきところですが（笑）、Webhookを受け取ったときにobnizを操作することができるらしい！！
（[websocket API](https://obniz.io/doc/obniz_api/about_obniz_api) ではないところがポイントです！！）

今回一番の驚きはWebhookで受け取ったデータを <font color="red">**obniz側で**</font>ゴニョゴニョできるってことです。
→ 普通は Lambdaとか中間サーバーを用意してデータを変換しないといけないんですが、そこも Serverless Event が担っている


なので、用意しないといけないものが

- obniz
- kintone

だけというわけです！すばらしい！！


# 作ったもの

kintoneのWebhookが使えるので、`kintoneの通知をobnizが知らせてくれる仕組み` を作ります。
今までだとkintone側でobnizのコードを書く必要があったのですが、今回はWebhookなのでkintone側はノーコードです！

そしてobnizもブロックプログラミングに対応しているのでノーコード！

そしてそしてできたものがこちら

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">kintoneのWebhookでIoT！ <a href="https://t.co/Tn2WBowD5W">pic.twitter.com/Tn2WBowD5W</a></p>&mdash; BB@サブ (@BB_File) <a href="https://twitter.com/BB_File/status/1207955225648041984?ref_src=twsrc%5Etfw">December 20, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# ソフトウェア側の実装

たぶん１０分くらいで終わりますｗ そのくらいシンプルです

## obniz側

`Repository` 内で作成します。
LEDとDCモーターを３秒動かして停止させるという非常にシンプルな動きです。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vSjr2o1GLnfcQqKPq4_Ov6I3CnfLQ5U7UFP074hjP3-4PCCl8ABWNNUSnsyNnsMPzW1cU0fpv_vb1Gw/pub?w=755&amp;h=674">

このプログラムを `Serverless Event` で設定します。`WebAppp to run` 部分でRepositoryが選択できるので、作ったやつを選びます。
そして `Event Triggers` を **Webhook** にして保存すると生成される `Endpoint` のURLをコピーしておきます。

これでobniz側はおしまい。


## kintone側

こちらもとても簡単です。適当なアプリを作ってWebhookの設定をするだけです。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vRhJMi56sNYAcDwRf85hk2Xkz64G7QMuzVh0dc6NDoMyp9jTHz-8salpdAf-DtM8A02Ak62y0rezxxV/pub?w=927&amp;h=575">

この↓の `Webhook URL` 部分に obniz側で生成したURLを記載します。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vTOKpaLL5h6_rMR-CHAW7vTgf8Qt6i7MjiMNyP-VV221_NeKZfAlYx7qeXCFxDP2urtYdXC09gCiXLp/pub?w=928&amp;h=571">

これでkintone側もおしまい。

# ハード側の実装

さぁ、本題はここから。物理的な実装に１時間くらいかかりましたｗ
何回もトライアンドエラーしました 泣

- ペットボトルをデバイスの容器として使おうと決める
- ペットボトルの底を切り取る （２回失敗）
- ペットボトルの表面（LED）部分に穴を開ける（1回失敗）
- 基盤を作成する（何回かやり直す）
    - はんだづけの位置を間違える
    - LEDを抵抗なしで直挿ししてフィラメントを焼き切る

いろいろ試しました。

※ 基盤をペットボトル内に入れる際に、その入れる位置によってコネクタ部分が微妙にずれるのでLEDだけは大雑把に作りましたｗ

<img src="https://docs.google.com/drawings/d/e/2PACX-1vSqvTDvErLiDyOtp6KmRu3_c8DggD6vEME0utOC27F7Cw5-Hr7zmxtpYbXq-aozcYej5IgcsCQ59dl_/pub?w=743&amp;h=475">

モバイルバッテリーは[サイボウズ商店のバッテリー](https://shop.cybozu.co.jp/collections/office-goods/products/4340315062351)を利用しています^^

<img src="https://docs.google.com/drawings/d/e/2PACX-1vS-I-JCuEijEidZ_kgD-jIVsLIg5SD4ULZuChP8DEDV4oOhs82AKISYv8_wfrVM0eZ-4jLEfq6quyvi/pub?w=731&amp;h=540">

# おわりに

ソフトウェアの人間だけど、物理的なものを作るのは楽しいね〜
ソフトウェアの人間だから、obnizはとても親しみやすくて良いね〜

複数のkintoneアプリにWebhookのURLを設定すればいろいろアプリから通知が受け取れます！
今回はブロックプログラミングを使いましたが、obniz側でJSも書けるのでレスポンスから処理を分岐させることもできます

- メンションがあったらモーターのパワー最大で回る
- 重要なアプリにレコードが追加されたらLEDが点滅

などなど。いろいろお試しあれ！

それでは！≧(+･` ཀ･´)≦