勢いだけの新社会人がAmazonのダッシュボタンで何かしてみたい

#Amazonのダッシュボタンご存知ですか？
ボタンを押すだけでアマゾンから商品が届くアレです。

それが最近ダッシュボタン１個
いつも500円→セールで100円！！！（しかも500円の商品割引券付き）

ってことで**ダッシュボタン１２個ポチりました☆**


なんかに使えないかと思って調べてると...あるじゃん！

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

よし！記事に通りにやってみよう！

(初投稿です。お手柔らかに。)



##環境
MacBook Air + macOS Sierra
無線環境

##実施者
ポンコツ駆け出しSE

##作業
###npmを使えるようにしよう
ターミナルを起動して、、、パッケージのインストール？

![スクリーンショット 2018-07-08 17.12.10.png](https://qiita-image-store.s3.amazonaws.com/0/269552/b83c2c64-1a00-5f98-acc0-7d9395f169d5.png)

**え、npmってなに？**よくわかんないけど、まずはnpmコマンドを使えるようにしたい。


そして、たどり着いたのがこの記事。

[買いたてのＭacにNode.jsとnpmをインスト](https://qiita.com/taketakekaho/items/dd08cf01b4fe86b2e218)


方針を変更して、まずはnpmが使える状態にしよう！




ターミナルに

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

と打ち込む。nodeバージョン管理ツールのインストールできるらしい。
*（nodeってなんだろう？）*


続いて、brewのインストール。

```
brew install nodebrew
```

記事どうりに動いた！
これでnpmコマンドが使えるようになったんですね！



##npmコマンドを使おう
この記事に戻ります。
[Amazon Dash Buttonを(正しくない方向で)使ってみた](https://qiita.com/takustaqu/items/8539b33780c9675c8657)

作業を行うディレクトリを作成して、移動。

おそるおそるコマンドをうって、

```
npm init
```

あれ？
![スクリーンショット 2018-07-08 17.40.30.png](https://qiita-image-store.s3.amazonaws.com/0/269552/921bbd4e-70b6-a46d-0644-4f1e5b4f1cb9.png)

つかえない(´・ω・｀)ｼｮﾎﾞｰﾝ

またこの記事に戻ってみると、、、
[買いたてのＭacにNode.jsとnpmをインスト](https://qiita.com/taketakekaho/items/dd08cf01b4fe86b2e218)

まだ下の方に色々ありましたね。失礼いたしました。


ってことで、記事に書いてあるそのまま打ち込む。

```
nodebrew ls-remote
nodebrew install-binary latest
mkdir -p ~/.nodebrew/src
```

できた！
![スクリーンショット 2018-07-08 17.56.44.png](https://qiita-image-store.s3.amazonaws.com/0/269552/781de1ed-60de-3144-17ab-02407de076e4.png)

```
nodebrew list
nodebrew use v10.6.0 
```

んで、パスを通して、

```
echo 'export PATH=$PATH:/Users/teru/Documents/workspace/dashbutton/.nodebrew/current/bin' >> ~/.bashrc
```


　

んー、よく分かんないけど、なにしてるんだろこれ。
更に.bashrcを.bash_profileで読み込むようにします。


~/.bash_profilに以下を追加

```.bash_profile　
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
```

　

　

再び挑戦！

```
npm init
```

できないです。１時間考えた結果、PATHがおかしいことに気がつきます。

　


正しくは`echo 'export PATH=$PATH:/Users/teru/.nodebrew/current/bin' >> ~/.bashrc
こうですよね笑



再び挑戦！

```
npm init
```

できたあああああやったああああ
![スクリーンショット 2018-07-08 19.00.50.png](https://qiita-image-store.s3.amazonaws.com/0/269552/a87254de-5fcd-80a3-1aa9-c81d85096f60.png)

~~途中で重要そうな何かを色々聞かれた気がしますが、エンターを連打しました。これが若さです。~~


 
パッケージをインストールして

```
npm install --save dash-button
```

なんかエラーでてるけど気にしない！！！~~（これも若者の特権です）~~
![スクリーンショット 2018-07-08 19.05.07.png](https://qiita-image-store.s3.amazonaws.com/0/269552/fc586ec9-e69a-e864-1767-c9da1868ef78.png)

この先記事通り進めてみてもうんともすんともいかなくなりました。

しかたないので別の記事を見にいきます←~~他力本願~~

[MacOSX&Node.jsでAmazon Dash Buttonを制御する](https://qiita.com/Sugima/items/39caa4f08ca022514a46)


別なパッケージをインストールする。

```
npm install node-dash-button --save
```

お！！！エラーを吐かずにインストールできました！！

次はMACアドレスを取得して

```
$ cd node_modules/node-dash-button
$ sudo node bin/findbutton
```

できない(´・ω・｀)ｼｮﾎﾞｰﾝ


マックアドレスがどうしても取れなかったので、Fingというアプリを使いました。
アマゾンとダッシュボタンを連携して、商品を選択しない状態で終了すると、
ネットには繋がっているが、注文はされない状態になります。

その状態でボタンをおしてFingというiphoneAppを起動すれば、MACアドレスが見れました！！！



viでapp.jsを書きます


```
const dash_button = require('node-dash-button');
const execSync = require('child_process').execSync;
// Dashボタンのアドレス(コピーしたMACアドレスをここに入力)
const dash = dash_button('aa:bb:cc:dd:ee', null, null, 'all'); 
// ボタンをクリックしたときのアクション
// クリックしてから数秒遅延します。
dash.on('detected', () => {
  const text='こんにちは世界';
    // sayコマンドで声を出力
    execSync(`say ${text}`);
    console.log(text);
});
```


そして、、、

```
sudo node app.js
```

![スクリーンショット 2018-07-08 20.24.58.png](https://qiita-image-store.s3.amazonaws.com/0/269552/754f6489-2d5f-e5f4-fd6e-79b9e9ff1667.png)

**うごいた！！！！！！！**

空虚な部屋に大音量で響き渡る*「こんにちは世界」*
気がつけば、日曜日の20:30です。明日からも頑張りましょう。




　


##追記
###結局npmってなんだったのか。
よくわからなかったnpmについて少し調べてみました。

[便利なパッケージ管理ツール！npmとは【初心者向け】](https://techacademy.jp/magazine/16105)

>npmはNode.jsのパッケージを管理するもの


なるほど、パッケージを管理するために必要だったものなんですね。
似たようなものに、yarnと呼ばれるものがあるそうです。

基本操作についても調べてみました。
[npmの基本操作と解説](https://qiita.com/akkey2475/items/4c1eb3e3f36f705c7a1c)

グローバルインストールとローカルインストールの２種類のインストール方法があるようです。
今回はコマンドの引数に```-g```を指定していないのでローカルインストールだったのかな？

はぇ～～わかったようなわからないような～～。:relaxed: