MacでiBeaconを発信したかったけど苦労した話

iBeaconを受信するアプリを実装していたんだけど、発信機器を持っていなかったのでテストできない。。
と思ったらここを発見

[たった6行!最も簡単にiBeaconの電波を「発信」する方法](https://qiita.com/kpkpkp/items/a0dd3cfcd1eef8dbd492)

> - 環境
> Bluetooth Low Energy(BLE, Bluetooth4.0)が搭載されたMac製品
> 
    Macbook Pro, Macbook Pro Retina, Macbook Airなどなど
    最近の製品なら大抵OK

なんと最近のMacなら大抵iBeaconの発信可能とのことだったので、おうちのMacからiBeaconを発信できるようにするまで。

# 環境
- ~~node.js 10.5.0 Current~~ -> node.js v8.11.3 LTS
- ~~Sierra v10.12.6~~ -> macOS High Sierra v10.13.5

# 順番

## １.node.jsの準備

   -  [node.jsを複数バージョン切り替えられるようにインストール](https://qiita.com/Kackey/items/b41b11bcf1c0b0d76149)
   - 上記リンクを参照してnodebrew(nodeのパッケージ管理モジュール)を導入することを強くオススメする。
   - ([node.js](http://nodejs.org/)のページから最新pkgをインストール&ダウンロードしたところ
bleaconとのバージョンの相性が良くなく、かつnodeを直インストールしてしまったためバージョン切り替えも容易ではなかった。。。)

## ２.bleaconをnpmでインストール
   -  bleaconはnodeでホゲホゲするとiBeaconを発信できるようになる便利なモジュールらしい。。
   -  そのままインストールするとその場にnode_modulesディレクトリを作成してしまうので
参照サイト通りに適当なディレクトリを作成してインストール。

```
mkdir ~/ibeacon
cd ~/ibeacon
npm install bleacon
```

このあとめちゃくちゃエラーでた。（後述）
出なかった方は次へどうぞ！

## ３.iBeaconを発信するためのスクリプト作成

``` sender.js

Bleacon = require('bleacon');

var uuid = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
var major = 0;
var minor = 0;
var measuredPower = -59;

Bleacon.startAdvertising(uuid, major, minor, measuredPower);

```

## ４.完成！発射！

```
node sender.js
```

本編は以上

# 【番外編】エラー発生

## １度目のチャレンジ ~npm install bleacon~
めっちゃ怒られた。なんだこれ。

```
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
```

この後には、わたしあなたが何言ってるかわかりません的なエラーがわさわさ。
xcodeがインストールされてないかコマンドラインツールがないときに出そうなメッセージ・・・
あれ？xcode入れてるんだけど！と思ったけど

```
xcode-select --install
```
すると

```
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
```

なるほど。ごめんな。ソフトウェアアップデートしないと使えないのね。
ということでサボりまくってたMacOSのアップデートをかける（ほんとに開発者かよ）
`Sierra v10.12.6 -> High Sierra v10.13.5`

アプデ後安心して起動すると、AndroidStudioからまた怒られる。。
<img width="363" alt="the path to Git executable is probably not valid." src="https://qiita-image-store.s3.amazonaws.com/0/134414/a5e5ea7d-2568-4863-0ea7-4667565e6226.png">
OSアプデでgitコマンド使えなくなっとるやん！！！！

なので再度このコマンド叩いてインストール。。。

```
xcode-select --install
xcode-select: note: install requested for command line developer tools
```
あれま！command line developer tools死んどる！なるほどな！！！
GUI出て来てくれたのでコマンドラインツール無事インストール！！！！！！！！！

## ２度目のチャレンジ ~npm install bleacon~
やっぱりだめだ。

```
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bignum@0.11.0 install: `node-gyp configure build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bignum@0.11.0 install script.
```
どうやら `bignum`というものをわかっていないみたい。
調べるとnodeのバージョンを下げないと`bignum`さんを理解できないことがあるらしい。

気を取り直してnodeのバージョンをRecommended版にダウン。
`node.js v10.5.0 Current -> node.js v8.11.3 LTS`

.......

```
+ bleacon@0.5.1
added 4 packages in 14.184s
```
成功した〜！

---
[たった6行!最も簡単にiBeaconの電波を「発信」する方法](https://qiita.com/kpkpkp/items/a0dd3cfcd1eef8dbd492) このページをかなり参考にさせてもらいました。
ほんとに開発者なの！？並みの環境の整ってなさだったけど、
私みたいな人がどこかにいる（いるよね？）と信じて忘備録的な感じで。。。
次は、ほんとに発信できてたの？実践編
アプリでも受信してみる？の記事書きたい