会社が休みになるボタンを作ってみた [Amazon Dash Button]

ACCESS の近藤です！

もう n番煎じもいいとこですが、
Amazon Dash Button が面白そうだったので、いくつか調達してハックして遊んでみました。

<img src="https://qiita-image-store.s3.amazonaws.com/0/38837/23b18d1a-d915-9c9b-008c-2f4994adacc9.jpeg" width="600px" />
__うわっ…、私のボタン、多すぎ・・・？__

しかし、ハックとか偉そうなこといっても、
もう既に「ハックする、と心の中で思ったならスデに行動は終わっている」ような方々がライブラリを公開されていますので、それらの力を借りてビッグウェーブに乗ってみたぜ！的な内容です。

## 会社が休みになるボタンとは？

ポチッと押すと、会社がお休みになる夢のようなボタンです！！やったね！

## …で、現実的には？

ポチっと押すと、予め設定しておいた宛先に特定フォーマットの勤怠メールを送信してくれるボタンです。
複数ボタンを登録できて、午前休、全休など、~~気分~~用途に応じて役割を設定できます。

## というわけで作った

* dash-holiday-creator  
  https://github.com/diescake/dash-holiday-creator


デモ動画も撮影してみました。(超地味)

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">会社が休みになるボタン <a href="https://t.co/9CL98T5Gl0">pic.twitter.com/9CL98T5Gl0</a></p>&mdash; diescake (@pomeranian_dev) <a href="https://twitter.com/pomeranian_dev/status/808097086931550208?ref_src=twsrc%5Etfw">2016年12月11日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<img src="https://qiita-image-store.s3.amazonaws.com/0/38837/ccd516c7-386d-7f27-1b76-f681cfa91ad4.jpeg" width="600px" />
非常に頼もしい出で立ちと佇まい。
「ここは俺に任せてゆっくり眠れ。」と直接心に語りかけてくるようです。

<img src="https://qiita-image-store.s3.amazonaws.com/0/38837/efba501b-5b52-2d1c-99fe-43ca06cab564.jpeg" width="600px" />
ヘッドボードに設置してみるとこんな感じ。
全然関係ないですが Dash Button ポチって届いた evian がかわいいです。

## 仕組み

[dash-button](https://github.com/ide/dash-button) 使ってます。

[dash-holiday-creator](https://github.com/diescake/dash-holiday-creator) は dash-button でボタンの押下イベントを拾って、node-mailer でメールを送信するという素朴な仕組みです。

以前、プライベートで書いたメール送信ライブラリを流用したので、
クライアントは Gmail オンリーで、それ以外は非対応です。

突貫で作ったので色々あれなところ多いですが、
よかったら覗いてみてください。

## ボタンロゴの印刷シート (Google ドキュメント)

おまけです。
結構な人から、ボタンのロゴはどうやって作ったの？と聞かれたので素材アップしておきます。
下記 Google ドキュメントを PDF 形式でダウンロードして A4 印刷すれば良いです。
あとは、ハサミで切って、両面テープで貼り付けるだけ！

ねっ？簡単でしょう？

* 「会社が休みになるボタン」の印刷用シート
  https://docs.google.com/document/d/1q8n0uR6JEiG-1Une1_wP-9wNZoQl_OJOj9Eiq9ON4I0/edit?usp=sharing

<img src="https://qiita-image-store.s3.amazonaws.com/0/38837/a16d1e2d-288a-9dd2-9c31-2d76ad4e504c.png" width="300px" />
__参考画像: この画像を保存して印刷してもサイズが合わないので注意！__

## 制限事項

dash-button が不安定なのか、うまくボタンの押下をフックしてくれないことがあります。
特に dash-holiday-creator 立ち上げ後、1回目のボタン押下は確実にスルーされます…。

弊環境では node-dash-button はうまく動かなかったのですが、
可能であればそっちを使ったほうが安定するかもしれません。

## 動作確認環境

Ubuntu 14.04 LTS (64bit) で動作確認しています。
bash on windows 10 では動作しませんでした。(issue によると `getifaddr` の実装が不完全？)
また、Mac OS X では dash-button の動作に必要な libpcap-dev を homebrew からインストールする方法がなかったため諦めました。何か代替する方法はあるのかも？

## 感想とか

Amazon Dash Button で何を作ろうかーと考えたときに、割りとすぐにこのアイデアを思いついて、
我ながらネタとして~~も実用性としても~~-なかなか面白いなと…。

それで、実際に作ったらワンチャンバズれるんじゃないかと、バイブスあがってたんですが、
次の日には twitter に同ネタが投下されてて、しかももう既にバズり済みでそれなりにデモチしました。
(そのツイートは画像の合成のみで機能実装したわけではなさそうでした。)

やっぱり良い？アイデア思いついたらすぐに行動に移さないとダメですねー。
プロシュート兄貴指向大事！

それにしても、会社の一員として参加してる Advent Calendar で、こんな~~やる気なさそうな~~エントリ書いて大丈夫なんだろうか、と思わないでもないですが、たぶんエンジニア以外はあまり見てないので大丈夫でしょう。

しかし、もし私のアカウントが ACCESS の organization から外れていた場合はお察しください。

それでは、明日は @kumabook です！

## 参考

Amazon Dash Buttonを(正しくない方向で)使ってみた
http://qiita.com/takustaqu/items/8539b33780c9675c8657

Amazon Dash ButtonをただのIoTボタンとして使う
http://qiita.com/jsoizo/items/3b8bba4160f41aef20f4