Amazon Dash ButtonとIFTTTで尊さの瞬間(とき)を刻む

# はじめに
2016年も尊いアニメや漫画にたくさん出会いました。
我々オタクはこうした尊いコンテンツのおかげで日々の辛さから救済されています。これは自明です。
しかし、その日々の救いをすべてTwitterにつぶやけるかと言うとそうでもありません。
脳内で発生したにもかかわらず、形や言葉にすること無く、我々は「小さな尊び」を無為に消化しているともいえます。

「小さな尊び」が起きた瞬間(とき)に、「いま尊んだ！！尊さを感じた！！救われた！！！！」とすぐに刻みつけられる手段があれば、もっと日々出会う尊さを大切にできるのではないでしょうか。
ということで、巷で流行っているAmazon Dash ButtonとIFTTTで、尊さの瞬間をLINE NotifyやGoogle Spreadsheetに刻んでいきます。

# 尊ぶための準備
- [IFTTT](https://ifttt.com/discover) に登録しておく
- npm をインストールしておく
    - homebrew とかお好きなものでインストールしておきましょう

# IFTTTのセッティング
今回は、IFTTTのMaker Channelをトリガー、LINE Notifyのメッセージ送信とGoogle Spreadsheetの起票をアクションとしてアプレットを作っていきます。
## Maker Channelの登録
- [MakerのServiceページ](https://ifttt.com/maker) から「Connect」ボタンをクリックしてMakerに登録
- [Maker Settings](https://ifttt.com/services/maker/settings) に書いてあるURL```https://maker.ifttt.com/use/{KEY}```にアクセス
- これから作るAppletにリクエストを送るURL ↓が見れます
    - あとで使うのでメモっておきましょう

```
https://maker.ifttt.com/trigger/{EVENT_NAME}/with/key/{KEY}
```

## アプレットを作る
- IFTTTのページ右上、アカウント名が書いてあるプルダウンから「New Applet」を選択

<img width="255" alt="スクリーンショット 2016-12-31 17.26.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/30940/3b3e2084-9ebd-b843-34e0-5a17a9667d73.png">

- トリガー部分(IF This)でMakerの「Receive a web request」を選択
- 適当にイベント名をつけて「Create trigger」をクリック
    - ここでつけたイベント名がさっきメモったリクエストURLの ```{EVENT_NAME}``` にあたります

<img width="413" alt="スクリーンショット 2016-12-31 17.24.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/30940/f6bf34b7-9975-3604-90b4-644c27f57706.png">

- アクション部分(That This)でLINEの「Send message」を選択
- Recipientは「1:1でLINE Notifyから通知を受け取る」、MessageとPhoto URLはなんか適当に書いて「Create Action」をクリック
    - 「Ingredient」からリクエスト送信日時とかいろいろ選べます

<img width="420" alt="スクリーンショット 2016-12-31 17.37.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/30940/68bc1f9e-9988-d55c-f145-8b20700279d3.png">

- 同様にGoogle Spreadsheetに起票するアプレットも作成しました

<img width="450" alt="スクリーンショット 2016-12-31 17.45.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/30940/221311cc-8482-422e-3c43-15f852feb639.png">

<img width="410" alt="スクリーンショット 2016-12-31 17.45.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/30940/91ce102b-c033-f27c-c596-2ae33c8d55a4.png">


# Amazon Dash Buttonのセッティング
- スマホのAmazonアプリを使ってセッティングしていきます
    - Androidの場合は```メニュー > アカウントサービス > Dash端末 > 新しい端末をセットアップ```
    - Amazon Dash Buttonを接続するつもりのwi-fiにスマホをつなげておくと便利っぽい
- **商品選択画面の手前まで**案内に沿って進めます
- 商品選択画面になったら**何も選ばないでｘボタン**でキャンセル
    - 「設定が完了していません」的なメッセージが出ますが華麗にスルーしましょう
- スクリーンショット撮るの忘れたので画面イメージが見たい人はググってください

# Dasherのセッティング
- https://github.com/maddox/dasher という尊いライブラリがあります。git cloneしましょう

```
git clone https://github.com/maddox/dasher
```

- npm installします

```
cd dasher
npm install
```

## Amazon Dash ButtonのMACアドレスを知る
- ```script/find_button``` を実行してボタンのMACアドレスを調べます
    - 「Dash buttons should appear as manufactured by 'Amazon Technologies Inc.'」と言っていますが私がやった時はManufacturerがunknownで検出されました

```
$ ./script/find_button
Password:
Watching for arp & udp requests on your local network, please try to press your dash now
Dash buttons should appear as manufactured by 'Amazon Technologies Inc.'
Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: Apple Protocol: udp
Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: unknown Protocol: arp
```

## configのセッティング
- addressにボタンのMACアドレス、urlに先ほどメモったMakerのリクエストURLをjson形式で設定します

```
{"buttons":[
  {
    "name": "post_tattobi_to_line",
    "address": "{MAC_ADDRESS}",
    "timeout": "60000",
    "url": "https://maker.ifttt.com/trigger/post_tattobi_to_line/with/key/{KEY}",
    "method": "POST"
  },
  {
    "name": "write_tattobi_history_to_spreadsheet",
    "address": "{MAC_ADDRESS}",
    "timeout": "60000",
    "url": "https://maker.ifttt.com/trigger/write_tattobi_history_to_spreadsheet/with/key/{KEY}",
    "method": "POST"
  }
]}
```

# 尊ぶ
- npmを起動してAmazon Dash Buttonを押します

```
$ sudo npm run start
Password:

> dasher@1.1.1 start /Users/Chocolat_Tammy/dasher
> node app.js

[2016-12-31T09:54:49.795Z] post_tattobi_to_line added.
[2016-12-31T09:54:49.802Z] write_tattobi_history_to_spreadsheet added.
[2016-12-31T09:55:04.961Z] write_tattobi_history_to_spreadsheet pressed.
[2016-12-31T09:55:04.968Z] post_tattobi_to_line pressed.
```
- LINE Notifyに尊んだ瞬間が刻まれます

<img width="410" alt="Photo_16-12-31-19-01-05.032.png" src="https://qiita-image-store.s3.amazonaws.com/0/30940/82d7704c-2f5d-113c-3be9-627e10e62639.png">

- Google Spreadsheetにも刻まれます

<img width="469" alt="スクリーンショット 2016-12-31 19.06.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/30940/9f7603a6-6cc1-f6ac-5e5f-89787e51d71e.png">

日毎にカウントしてグラフをつくるといろいろ捗りそうですね。
「尊び貯金」的に、尊さを感じた回数×n円貯金し、ある程度貯まったところでコンテンツへの還元費用にできれば、コンテンツを産んだ偉大な神たちへの奉納ができます。

# おわりに
ということで、尊さの瞬間を刻むボタンを無事手に入れることができました。
しかし、「尊ぶ」という行為は、たとえば「ユーリ!!! on ICE 最終話のジャン・ジャック・ルロワ選手に胸を打たれたので泣きながらJJポーズきめたい」とか「蒼穹のファフナー THE BEYONDが制作決定したので皆城総士のいままでとこれからに思いを馳せながら2016年を越したい」など、対象となるコンテンツもしくはキャラクター・人物があってこそ成り立つものであります。
これをAmazon Dash Buttonで実現しようと試みる場合、尊いモノ・ヒトの数だけDash Buttonを購入する必要があります。金持ちなオタクはご一考ください。

# 尊い参考文献
- [Amazon Dash ButtonをただのIoTボタンとして使う - Qiita](http://qiita.com/jsoizo/items/3b8bba4160f41aef20f4)
- [IFTTTにMaker Channelができました | スイッチサイエンス マガジン](http://mag.switch-science.com/2015/06/25/ifttt-maker-channel/)