Google Homeの喋らせ方をサルにもわかるように説明

# Windows環境からGoogle Home miniを喋らせるには？

初めて投稿します。
先日、Google Home miniがお手ごろ価格で買えたので遊んでましたが、どうせなら何か喋らせてみたいと思いLinuxに挑戦。しかし私のサルレベルの脳みそでは無理なことがわかり、敷居が低そうなWindows上で動かしてみることにしました。
これなら簡単と思いきやはまりにはまった。もしかしたら自分はサルかもしれない？いいや、「サル以下だなっ」って思ったので、忘れないようにここに手順をメモを残しておきます。
## 概略  
google-home-notifierというjavascriptのプログラムが提供されていて、それを使うとコマンドベースで簡単にGoogle Homeに喋らせることができます。そしてjavascript言語を動かす環境として、node.js が必要とのことです。また、インストール時にpython言語(古いバージョン)もインストールします。  
この作業はWindowsでありながらGUIではなくてCUI=コマンドラインで行います。
尚、この説明の対象者はコマンドプロンプトの意味を理解できていて、プログラムインストール経験のある方です。個別にインストールしているものが何なのかはここでは割愛しますので、興味があればググって調べてみてください。
作成に当たってはこちらを参考にさせて頂きました。  
http://kghr.blog.fc2.com/blog-entry-118.html
こういう方たちのご尽力に感謝いたします。

## 環境 
PC:Lenovo 64ビットノートPC
OS:Windows 10
スピーカー：Google Home mini
LAN：同一LAN上に設置
## 環境作成手順 
1. **半角の管理者権限ユーザーIDでログイン**  
全角日本語のユーザーIDで作業したら、作業中に「ないよ！」的なエラーが出てしまいました。別のIDでやり直したらうまくいきました。自分がいじくりまわして環境が汚れたせいかもしれないし、なんの根拠もないけど、念のため。インストール後は日本語のIDでログインして実行しても問題ないようでした。  
2. **node.jsのインストール**  
[node.jsのサイト(https://nodejs.org/ja/)](https://nodejs.org/ja/ "node.jsのサイト") からWindows用のインストーラをダウンロードしてインストールします。64ビットPCなので推奨版はv8.9.3 LTS(x64)をダウンロードして、ダブルクリックしてそのままデフォルトでインストールしました。  
★ 不足があるかもしれないのでおまじないで npm install -g npm-install-missing としておくとよいかも？（誰かこのあたりアドバイスもらえたら嬉しいのだけど）
3. **node.jsのインストールができたのかを確認一応確認**  
プログラム一覧にnode.jsのグループが登録されていますから、その中の「**_Node.js commend prompt_**」を右クリックして**_管理者権限_**で起動して、コマンドプロンプトで以下のコマンドを実行するとバージョンが表示されます。
まず、管理者権限でプロンプトを起動するとカレントディレクトリがsystem32になってしまいます。あとあと不都合がでるため今のうちにカレントディレクトリをログインユーザのディレクトリに移動します。  
ｃ：￥Windows￥System32＞**cd c:\Users\yamamotosayaka**  
次に、コマンドを実行します。  
ｃ：￥Users￥yamamotosayaka＞**node --version**  
v8.9.3  
4. **windows-build-toolsのインストール**  
ｃ：￥Users￥yamamotosayaka＞**npm install -g windows-build-tools**  
注.コマンド入力画面は、マウス右クリックして管理者として起動しておかないとエラーの警告がでます。  
結構時間かかるかと思います。古いPCにインストールした時ですが、.netが入っていなかったせいですぐ終りました。しかし後で見つからない旨のエラーがでました。  
不要なアプリ削除のつもりが消しすぎたみたいです。
手動でビルドツール入れようとしたら、要件満たしてない.net431以降が必要って出たので.net432(特にこれを選んだ意味はなし)を入れて再実行。今度は数十分待たされました。１～２分あたらりで終わるようなら、ツールのインストールに失敗していると思った方がよいかもです。  
5. **node-gypのインストールのインストール**  
ｃ：￥Users￥yamamotosayaka＞**npm install -g node-gyp**  
6. **Bonjourのインストール**  
以下をダウンロードしてインストールしてください。Apple IDが必要ですので持っていない場合は持っている人に頼むか、新規登録して入手します。  
*Bonjour SDK for Windows*  
*Bonjour Print Services for Windows*  
[https://developer.apple.com/bonjour/](https://developer.apple.com/bonjour/ "Bonjour Print Services for Windows")  
環境変数が設定されているかを確認します。  
1) エクスプローラでPCを右クリックしてプロパティを選択  
2) システムの詳細設定を選択  
3) システムのプロパティウィンドウから環境変数ボタンクリック  
4) BONJOUR_SDK_HOMEにC:\Program Files\Bonjour SDK\が設定されていることを確認  
7. **google-home-notifierのインストール**  
ｃ：￥Users￥yamamotosayaka＞**npm install google-home-notifier**  
注意点  
 ・インストールされたNode.jsのコマンドプロンプトアイコンを管理者権限で起動すること  
 ・カレントディレクトリがユーザーIDのディレクトリになっていること
 ・警告でますがとりあえず無視してよいみたい。  
 ・SDKだけでなくPrint Servicesもインストールしてください。
8. **プログラムのダウンロード**  
google-home-notifierをWEBから直接ダウンロード、SVN取得、Git取得のいずれかの方法で適当な場所に入れてください。ユーザーIDのカレントディレクトリあたりにフォルダを作成すればよいかと思います。  
[https://github.com/noelportugal/google-home-notifier](https://github.com/noelportugal/google-home-notifier "google-home-notifier")  
9. **テスト用のプログラム作成**  
メモ帳など使い慣れたエディタで、以下を記述して、**google-home-notifier.jsのあるフォルダに文字コードUTF-8でtest.jsという名前で保存**してください。S-JISだと日本語が正しく発声できません。  
'    
var googlehome = require('./google-home-notifier');  
var language = 'ja'; // ここに日本語を表す ja を設定  
googlehome.device('Google Home', language);   
googlehome.ip('192.168.1.67', language);  
googlehome.notify('山本彩さんがツイートしました!', function(res) { console.log(res); });  
'      
注意点  
・googlehome.deviceを指定しないでIPのみにすると、英語しか話せなくなります。  
・IPアドレスがわからない場合はgooglehome.ipを削除して実行すると表示されます。  
　　Device "Google-Cast-Group-c6f5d923a43b4e6xxxxxxxx" at 192.168.1.67:42109  
　　Device "Google-Home-a206d11cb0a803b4f88f3xxxxxxxx" at 192.168.1.68:8009  
　　Device "Google-Home-7ec21d99cfcfb91c969b3xxxxxxxx" at 192.168.1.67:8009  
・var googlehome = require('./google-home-notifier')の「./」はかならず必要です。  
10. **実行してみる**  
コマンドプロンプトでtest.jsプログラムのあるディレクトリをカレントにします。  
ｃ：￥Users￥yamamotosayaka＞**C:\データ\GoogleHome\google-home-notifier\trunk**  
実行してみます。  
C:\データ\GoogleHome\google-home-notifier\trunk>**test.js**  
さてどうでしょう？運がよければスピーカーから発声します。  
**しかし私の場合はダメでした。エラーがでます。**  
11.**実行時のエラー回避**  
不足エラーが出た場合、内容に応じて以下のインストールを行って再度実行してみてください。  
>**npm i castv2-client**  
>**npm install --unsafe-perm mdns**  
>**npm install google-tts-api**  
>**npm config set strict-ssl=false**  
12. **その他**   
**google-home-notifier\trunk\node_modules\google-tts-api\lib\api.js**  
の中を日本語用に変更した方がよいかもしれない？  
//  if (typeof accent !== 'undefined' && accent !== 'us' && accent !== 'uk') {  
  if (typeof accent !== 'undefined' && accent !== 'us' && accent !== 'uk' && accent !== 'ja') {  
//      tl: lang || 'en',  
      tl: lang || 'ja',  
それとgoogle-home-notifier.jsも修正しておいた方が良い気がする。  
//var device = function(name, lang = 'en') {  
var device = function(name, lang = 'ja') {  
//var googlettsaccent = 'us';  
var googlettsaccent = 'ja';  
12. 修正したら再度実行してみてください。音声がでましたでしょうか。  

# 最後に  
**説明がくちゃぐちゃになってしまいました。誤記など見つけましたら連絡いただけたら嬉しいです。**  
  
# 更新履歴
**2018/01/03 いつでもテストできるようにVMplayerで環境Win7で再構築しました。その時に気がつた点を追加しました。**