IBM Bluemix/Watson Speech To Text/Node.jsでApplication開発(4)

[前回](http://qiita.com/yoshiono/items/536332abd60ba3bde3f9)からの続きで、BluemixのDeployについて説明します。

**4. bluemixにDeploy**
BluemixにDeployするためのフォルダ構造は、以下です。実際にBluemixにDeployする場合は、そのままのフォルダ構造になるようにExploreでフォルダを作成してください。models、routesは不要、実際に開発する場合はnode_modulesがあり.cfignoreで排除指定が必要です。
```text:フォルダ構造
Cドライブ
├── bluemix
　　├── myapp →wavファイル生成Javascriptを配置します(2章のソース)
　　├　　　├── app.js, package.json, Procfile
　　├　　　├── models →今回のケースでは形式上残してるだけで空フォルダです。
　　├　　　├── routes →今回のケースでは形式上残してるだけで空フォルダです。
　　├　　　├── view
　　├　　　　　　├── test.ejs　→wavファイル生成Javascriptを配置します(2章のソース)
　　├
　　├── mystt　→STTの音声認識Javascriptソースを配置します。(3章のソース)
　　　　　├── app.js, package.json, Procfile
　　　　　├── models →今回のケースでは形式上残してるだけで空フォルダです。
　　　　　├── routes →今回のケースでは形式上残してるだけで空フォルダです。
　　　　　├── view →今回のケースでは形式上残しておだけで空フォルダです。
```

STTで音声認識Javascriptソースを最初にDeployします。以下、必要なpackage.jsonとProcfileです。pakage.jsonには、STTのサンプルアプリケーションとしてGithubで公開されている[speech-to-text-nodejs
](https://github.com/watson-developer-cloud/speech-to-text-nodejs)のpackage.jsonと、ファイルのUploadに使用するformidable(と、それに関連するモノ)を記述しています。

```text:package.json
{
  "name": "mystt",
  "version": "1.0.0",
  "description": "A sample browser app for Bluemix that use the speech-to-text service, fetching a token via Node.js",
  "dependencies": {
  "ejs": "^2.3.4",
  "express": "~4.13.3",
  "watson-developer-cloud": "^1.2.4",
  "cfenv": "1.0.x",
  "formidable": "1.0.17",
  "gently": "0.8.0",
  "findit": "0.1.1",
  "hashish": "0.0.4",
  "urun": "~0.0.6",
  "utest": "0.0.3",
  "request": "~2.11.4"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/watson-developer-cloud/speech-to-text-nodejs.git"
  }
}
```

procfileは、以下です。ファイル中に、”web: node app”とだけ記述します。
```web: node app```

cf pushにより、Bluemix上にDeployします。一意なURLを考えるのが面倒だったので、URLは--random-routeオプションでランダム生成されるようにしています。cf pushのコマンド出力に含まれるurlsで、wavファイル生成Javascripソースのapp.jsの'STTで音声認識Javascriptソースが動作するURLを記述'を置換します。

```text
:cf pushのコマンド出力
C:\Users\hoge\.nvmw>cd c:\bluemix\mystt
C:\bluemix\myapp>cf push mystt --random-route
・・・　<cf pushのコマンド出力、省略してます>
requested state: started
instances: 1/1
usage: 1G x 1 instances
urls: mystt-xxxxxxxx.mybluemix.net
package uploaded: Sun May 15 02:20:04 UTC 2016
stack: cflinuxfs2
buildpack: SDK for Node.js(TM) (ibm-node.js-4.4.3, buildpack-v3.3-20160428-1409)
・・・　<cf pushのコマンド出力、省略してます>
```

次に、wavファイル生成JavascripソースをDeployします(watson-developer-cloudは不要です、削除忘れです)。

```text:package.json
{
  "name": "myapp",
  "version": "1.0.0",
  "description": "A sample browser app for Bluemix that use the speech-to-text service, fetching a token via Node.js",
  "dependencies": {
    "ejs": "^2.3.4",
    "express": "~4.13.3",
    "watson-developer-cloud": "^1.2.4"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/watson-developer-cloud/speech-to-text-nodejs.git"
  }
```

Procfileは、mysttと同様です。ファイル中に、”web: node app”とだけ記述します。
```web: node app```

myappフォルダに移動し、app.js(wavファイル生成Javascripソース)の'STTで音声認識Javascriptソースが動作するURLを記述'をmysttのurlsで置換していることを確認、mysttと同様にcf pushを実行します。ここで出力されたurlsをブラウザで実行して適切に動作していることを確認します。

```text
:cf pushのコマンド出力
C:\Users\hoge\.nvmw>cd c:\bluemix\myapp
C:\bluemix\myapp>cf push myapp --random-route
・・・　<cf pushのコマンド出力、省略してます>
```
[5. おわりに](http://qiita.com/yoshiono/items/1106406863fa94865d29)に続きます。