SONY MESHボタンを席に置いて、イイね！というメッセージを自分のSlackチャンネルに送ってモチベーションを上げる話

# SONY MESHボタンを席に置いて、イイね！というメッセージを自分のSlackチャンネルに送ってモチベーションを上げる話

## この記事について

- この記事は、 [弁護士ドットコム Advent Calendar 2019 - Qiita](https://qiita.com/advent-calendar/2019/bengo4com)  の 3 日目の記事になります。
- SONY MESHについてのより詳細な情報は下記サイトを参照してください。
    - https://www.sony.jp/professional/solution/pgm-edu/mesh/
- この記事は、Qiitaに掲載されてるMESHのどの記事よりたぶん入門的な感じです。応用的なことやGPIOブロック使ったりカスタムタグを使ったりはしていません。

## Web開発の記事じゃないの？

- 記事の内容はなんでも良いと言われたので・・・
- 様々な会社で月や期でMVP賞的なのをやっていると思います（弊社でもあります）。受賞できるとモチベーションが大きく上がったりしますが、これ狙って獲るのは不可能です。なので、日々の業務の中でちょっと褒められてちょっとモチベーション上げるための仕組みがほしいなと思いました。
- そこで前々からIoTやってみたいなと思っていたのでこれを機会に挑戦してみました。
- Web開発関連のあれこれはこの後続々と質の高い記事が上がるので、ご期待ください。

## SONY MESHについて

[Raspberry Pi](https://www.raspberrypi.org/) や [Audino](https://www.arduino.cc/) などを利用するよりももっとお手軽にIoT開発を経験できる優れた製品です。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">MESHではじめるプログラミング教育実践DVDブック ダイジェスト <a href="https://t.co/6wro0FAM4f">https://t.co/6wro0FAM4f</a> <a href="https://twitter.com/YouTube?ref_src=twsrc%5Etfw">@YouTube</a>さんから</p>&mdash; edi (@edi___t) <a href="https://twitter.com/edi___t/status/1200244722251358209?ref_src=twsrc%5Etfw">November 29, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


※ 昨今ではMeshというと様々な意味を持つので、SONY MESHと言わないと色々混乱の元になります。

## 今回やりたいこと

MESHボタンブロックのボタンが押されたらSlackにイイね！というメッセージを投稿する

![IMG_0791 - コピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/b0ec6777-2906-4037-0c4a-f4ad68b75836.png)


## 今回のシステム構成

シンプル構成です。

![mesh (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/ed7a2a07-fa82-ee84-1ad8-138cf2893f13.png)

1. MESHボタンが押されたらMESHアプリに押された情報を送る
1. MESHアプリはプログラムを実行し、メッセージ情報をIFTTTへ送る
1. IFTTTは連携されているSlackのチャンネルにメッセージ情報を送る
1. Slackはチャンネルにメッセージを表示する

## 今回のMESHプログラム

シンプルです。

<img width="375" alt="IMG_0794.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/d3d5e68a-3bd4-2ca6-c1b0-79eeb5137249.png">

## IFTTTについて

[IFTTT](https://ifttt.com/)は様々なWebサービスと連携できるサービスです。
このIFTTTと[MESHアプリが連携できる](http://www.get.meshprj.com/iftttapplet)ため、Slackへの投稿はこれを利用します。

## 準備

### MESHボタンブロックの購入

実店舗でもamazonでもどこでも良いですが、まずはMESHボタン単体もしくはセットを購入します。

https://meshprj.com/jp/tag/

### MESHアプリのインストール

MESHアプリはiOS/Android/Windows10に対応しています。
詳細な対応表は下記をご覧ください。

https://support.meshprj.com/hc/ja/articles/212601267

### IFTTTサインアップ

IFTTTを利用するので登録してください。

[https://ifttt.com/](https://ifttt.com/) 

### Slackサインアップ

Slackも使いますので、会社などで使用しているものか新規で登録してください。

[https://slack.com/intl/ja-jp/](https://slack.com/intl/ja-jp/)

## 開発

### MESHボタンとMESHアプリのペアリング

ハードウェアのBluetoothと使用許可をONにして、MESHアプリを起動してください
ここはそれぞれの環境によって異なるので、各種マニュアルなどを確認してください。

1: 「新しいレシピ」を選択して新しいレシピ画面を表示します
2: 下のバーの「ブロック」項目の「追加」を選択してください

![IMG_0794 - コピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/395ece6f-01fc-5d6e-cf00-764aa6d68089.png)

3: MESHブロックとのペアリング待ちになります

![IMG_0792.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/fe540b11-fe15-5200-0250-b83e18bf20ff.png)

4: MESHボタンの***ボタンマーク***を長押ししてペアリングしてください（ボタンではなくボタンマークです）。

![IMG_0794 - コピー (2).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/9d1964aa-02b6-3b9c-59bc-d21c132b3da0.png)

リンクが完了したら「ブロック」のリストに「ボタン」が登録されます。

### MESHボタンの動作確認用プログラム

プログラミングと言っても、GUIをポチポチするだけです。
下記図のようにアイコンをドラッグアンドドロップして操作します。

![IMG_0797 (1).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/c5ae48a6-714b-7b65-f29d-f4f4a35eb8f7.png)

1: ボタンアイコンと通知アイコンを配置します（図はボタンアイコン配置済みです）。（1）
2: ボタンアイコンの出力（右側の凸）を通知アイコンの入力（左側の凹）にドラッグしてコネクタを接続します。（2）
3: 配置した通知アイコンをクリックすると設定画面が開くので、「メッセージ」に適当な文字を入力して（ボタンが押されましたとか）、「OK」を押します。
4: MESHボタンの***ボタン***を押して通知されることを確認します。

### IFTTTとSlackを連携

下記記事を参考にSlackとIFTTTを連携してください

https://slack.com/intl/ja-jp/help/articles/360002091107-Slack-%E5%AF%BE%E5%BF%9C-IFTTT

### Slack連携プログラム

1: 連携項目から追加を選択します

![IMG_0799.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/5a84374b-60d3-cd77-4363-e317d7c10117.png)

2: リストからSlackを選択します

![IMG_0800.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/175bce40-8756-e35c-2f22-53900701df05.png)

3: Slackアイコンが出現するのでそれをドラッグして配置（1）します
4: 通知アイコンの出力（凸）からSlackの入力（凹）にドラッグしてコネクタを接続します（2）

![IMG_0795.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/8f1c7cce-44cf-2bf8-9013-ee4d65c3df06.png)

5: 配置したSlackアイコンをクリックしてIFTTTアプレット設定をします。少々手間なので下記サイトをご覧ください（むしろこのサイトだけで良いのでは…）

https://support.meshprj.com/hc/ja/articles/360019732793-MESH%E3%81%A8slack%E3%82%92%E9%80%A3%E6%90%BA%E3%81%95%E3%81%9B%E3%82%8B

6: 送信するメッセージ入力項目に `イイね！:+1:` と入力しておきます

### 動作確認

MESHボタンを押して動作を確認してください。
設定がうまくいっていればSlackにメッセージが投稿されます。

## やってみた感じ

会社の自分の席にMESHボタンを置いてみました。

<img width="375" alt="IMG_0791.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538525/8b6bf78e-8887-1f6c-06a0-1ef4ad5e4ae5.png">

珍しさも相まってみんな**イイね！**してくれました！
ありがとうございます！

みんなに認められた感があり、その日はすごいモチベーションで過ごせました:relaxed:
これは成功なのでは？

こんな感じで簡単にIoT開発が体験できます。
[こちら](https://recipe.meshprj.com/jp/)には色々ろいろと面白いMESHレシピも載っていますので、興味があればちょっとお高いですが是非触ってみてください。

## MESHプログラムについて

さて、今回このMESHを取り上げたのは非常に簡単にIoT開発が体験できるという他に、もう一つ理由があります。

かつてWindowsプログラミングをガリガリやっていた時期があり、その中でCOMプログラミングとDirectShow Graph Editorに出会いました。
自分で書いたコンポーネントを他のコンポーネントとGUI上で組み合わせてサービスを作れるという当時の私としては衝撃的な開発体験でした。
これは[コンポーネントオブジェクトモデル](https://ja.wikipedia.org/wiki/Component_Object_Model)（略してCOM）というマイクロソフト独自の技術ですが、その目的はソフトウェアの再利用です。
COMそのものの是非は置いておくとして、この開発体験はオブジェクト指向を理解するのに非常に重要だと思っています。
MESHはそれが手軽に体験できるのでとても素晴らしいものだと思います。