Chocolatey使ってWindowsにほぼ自動でLet's Chatを入れる


# 前置き
15～30分くらいでWindowsにNodeJSとMongoDBとPythonとGitとLet's Chatを入れてチャットを使えるようにします。
NodeJS？MongoDB？なにそれ？って人でも簡単にできます。

一人用チャットがあると、後で見返したりメモったりするかもしれないようなことを、後のこと何も考えずに適当にずらずらと書いていけて色々捗るんじゃないかと思った。
本当に捗るかはまだわからない。

最近流行ってるSlackにしようと思ったけど、完全にローカルネットワークで閉じている方が何かと安心で気楽に使えそうだから、ローカルで動かせる[Let's Chat](https://github.com/sdelements/lets-chat)を使うことにしてみた。

本当は仮想マシンのCentOS上に入れたいんだけど、家の環境だとPC落として起動するたびに仮想マシン起動からしないといけなくて、毎日それやるのは明らかにめんどそうだから、ホストのWindowsに入れることにします。
けど、いきなりホストに色々入れるのは失敗して試行錯誤してぐちゃぐちゃになるのが怖いから、実際はテスト的に先に仮想マシンのWindows10上に入れてます。

# Let's Chatインストールの準備確認
[公式のgithubのwiki](https://github.com/sdelements/lets-chat/wiki/Installation)を見ればインストールの方法が書いてあります。
必要なものは最低3つ。

- Node.js （v0.11以上）
- MongoDB （v2.6以上）
- Python （2.7.x）
- Git （書いてないけど、入れておいたほうが楽）

どれも基本的にインストーラー実行するだけだと思うけれども、インストール方法はリンク先参照してねと書かれていて、この時点でだいぶダルいですね。
そこで、Windows版パッケージ管理ソフトの[Chocolatey](https://chocolatey.org/)を使ってインストールすることにします。
Chocolateyに関しての説明は省略
インストールは公式に書いてあるPowershellのコマンド実行するだけでできるのでとても簡単です。
Powershellは管理者権限で起動するのを忘れないように。

# Chocolateyで各種インストール

https://chocolatey.org/packages
ここで入れたいパッケージを検索して、入れられるバージョンの確認をします。

## Pythonインストール
以降のパッケージでも同じですが、途中でインストール確認が1, 2回出るので[y]を入力すると、インストールの続きが始まります。
※-yオプション付けると確認不要になりますが、二度聞かれる場合になぜかエラーになってしまうので付けないようにしています。
※cinstはchoco installの省略形で、意味は同じです。
※数分かかるので、横でTwitterでも眺めていましょう。

```ps1
cinst python2
```

## MongoDBインストール
2.4.7.1の次が3.0.3だったから2.4.7.1にしてみたけど、特に問題無さそうでした。

```ps1
choco install mongodb -version 2.4.7.1
```

## NodeJSインストール
0.12.7の次がいきなり4.0.0になってるんだけどどういうことなの。

```ps1
choco install nodejs.install -version 0.12.7
```

## Gitインストール
Let's ChatをDLするときにzipで持ってくると面倒なので、git cloneが使えるようにGitをインストールします。
ついでに、Powershell上でgitコマンドが使えるようになるposhgitもインストールしておきます。
※インストール後に一度Powershellのウィンドウを閉じて開き直さないと使えないようです。

```ps1
cinst git
cinst poshgit
```

## ※バージョンを間違えてインストールしてしまったら

Chocolateyでアンインストールできますが、動作があまり安定していないようなので、Windows標準の「プログラムと機能」から削除します。

ただ、Chocolateyでもアンインストールしないと「インストールされている状態」になってしまっていて再度インストールができないので、以下のコマンドでアンインストールします。

※MongoDBをアンインストールする場合

```ps1
cuninst mongodb
```


# Let's Chatインストール
これは残念ながらChocolateyには無いようなので、gitからcloneして公式に書かれている方法でインストールします。
git cloneとnpm installでそれぞれ数分かかるので、Twitterでも見ていましょう。

```ps1
# 事前にLet's ChatをDLするディレクトリに移動しておく
git clone https://github.com/sdelements/lets-chat.git
cd .\lets-chat\
npm install
npm start
```

以下の表示が出力されたら成功です。

```ps1
> lets-chat@0.4.7 start C:\Windows\system32\lets-chat
> node app.js


██╗     ███████╗████████╗███████╗     ██████╗██╗  ██╗ █████╗ ████████╗
██║     ██╔════╝╚══██╔══╝██╔════╝    ██╔════╝██║  ██║██╔══██╗╚══██╔══╝
██║     █████╗     ██║   ███████╗    ██║     ███████║███████║   ██║
██║     ██╔══╝     ██║   ╚════██║    ██║     ██╔══██║██╔══██║   ██║
███████╗███████╗   ██║   ███████║    ╚██████╗██║  ██║██║  ██║   ██║
╚══════╝╚══════╝   ╚═╝   ╚══════╝     ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝
```

# Let's Chatにアクセス
ブラウザでhttp://localhost:5000 にアクセスするとLet's Chatの画面が表示されるので、適当にユーザ登録して完了です。

必要があれば、一旦Let's Chatを落として、Setting.ymlを書き換えて起動し直しましょう。
ネットワーク内の他のPCからもアクセスしたい場合は、httpの項目のhostをIPに書き換えるのが必須です。
http://192.168.1.100:5000 とかでネットワーク内のPCからもアクセスできるようになります。
※省略しますが、この場合はファイアウォールの設定も必要です。

全部手動で入れようと思うとだいぶダルくてハマりどころが多そうな作業だけど、Chocolatey使うとTwitterしながらたまに操作してるだけで物凄く簡単にインストールできるよって話でした。

# 参考ページ
[Windows でも Let's Chat で ChatOps](http://qiita.com/kounoike/items/a04d95b0dc990e479cbc)
[Windows PowerShell 使いは posh git を入れよう](http://nekonenene.hatenablog.com/entry/2015/09/11/020018)