Watson on Bluemixの始め方

#はじめに
最先端のコグニティブコンピューティングであるIBM Watsonを使うAPIがBluemix上で提供されていますが、とりあえず使ってみるということで、サンプルアプリを動かす手順を纏めます。
Bluemix上で提供されているWatsonの各種サービスに関しては、[IBM Watson Developer Cloud](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/services-catalog.html)を参照して下さい。
また、下記を前提に投稿を書いています。

* Blumixに登録済み（未登録の方は[こちら](https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/W044bb4f15419_49d8_bf9e_55d2d43ad744/page/Bluemix%20%E3%83%95%E3%83%AA%E3%83%BC%E3%83%88%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%AB%20%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%E6%89%8B%E9%A0%86)を参照）
* cf コマンド導入済み（未導入の方は[こちら](https://www.change-makers.jp/post/10128)を参照）
* Node.js導入済み（未導入の方は[こちら](http://nodejs.jp/nodejs.org_ja/docs/v0.10/)を参照）

#ゴール
Personality Insightsの[デモアプリ](https://watson-pi-demo.mybluemix.net/)を、

1. 自身のBluemixの環境で動かすこと
2. Loca環境で動かし、開発出来るようにすること

の2つをおこなう手順を記載します。各サービスのデモアプリのソースコードが公開されているので、同様の手順で他のデモアプリも動かせます。英語が苦にならない方は、より詳細な手順が[こちら](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/getting_started/)のガイドに書かれていますので参照を！

※Personality Insightsとは
TwitterやFacebook、e-mailといったテキスト情報から、書き手のプロファイルをWatsonが分析してくれるサービス。文章から個人の性格を分析し、教えてくれます。顧客のパーソナリティーを元に、最適な商品を最適なトークで紹介する等、より個を意識した沢山のサービスが生まれそうですね。

# サンプルコードの取得

**1. サンプルアプリを導入するディレクトリを作成**
**2. [Watson Developer CloudのGithubページ](https://github.com/watson-developer-cloud/personality-insights-nodejs)にてPersonality Insightsのソースコードのアドレスを取得**
![Picture2.jpg](https://qiita-image-store.s3.amazonaws.com/0/86169/d51612d0-c783-6511-6238-f2b582fc7b2b.jpeg)


**3. ソースコードの取得**
作成したディレクトリにてgit clone
`git clone https://github.com/watson-developer-cloud/personality-insights-nodejs.git`

# サンプルコードの修正
**1.manifest.ymlの修正**
manifest.ymlには、アプリケーションをBluemixにでDeployする際に必要な情報が記載されています。アプリケーションの名前や使用するサービスとそのプラン、インスタンスで使用するメモリ数等を記載します。アプリケーション名は、Bluemix上でユニークである必要があるため、下記のように、名前を修正します。
![Picture3.gif](https://qiita-image-store.s3.amazonaws.com/0/86169/dbce3be6-9a08-5484-7182-2c7de96d0838.gif)
# Bluemixへのデプロイ
**1. Bluemixに接続**
作業ディレクトリを、./personality-insights-nodejsに変更し、下記のコマンドで接続します。
cf api https://api.ng.bluemix.net

**2. BluemixにLogin**
Bluemix IDとパスワードを指定します。
`cf login -u username -p password`

**3. サービスインスタンスの作成**
cf create-service コマンドを使用し、Bluemix上にPersonality InsightsのインスタンスをBluemix上に作成します。引数はそれぞれ、(サービス名) (プラン) (インスタンス名)です。それぞれmanifest.ymlに記載されているものと同じものを指定するように注意して下さい。

`cf create-service personality_insights standard personality-insights-service-standard`

※失敗する場合は、BluemixからPersonality Insightsのインスタンスを作成してください。インスタンス名は、manifest.ymlに記載したものと一致させる。

**4. Bluemixへのデプロイ**
cf push コマンドで、サンプルアプリケーションをデプロイします。1~2分の間でコードがBluemixにデプロイされ、Webサーバーが作成され、サンプルアプリが起動します。ここでもapplication-nameはmanifest.ymlで指定したものと一致するように指定します。
`cf push personality-insights-nodejs-fujita0718`

**5. サンプルアプリへアクセス**
アプリのURLは、BluemixにLoginすることで確認できます。
![Picture4.gif](https://qiita-image-store.s3.amazonaws.com/0/86169/69730246-025e-d248-f45d-bbb410a0da49.gif)

# Local環境で実行する方法
**1. Watson APIのCredentialの確認**
Credentialは、WatsonのAPIに接続するために必要なURL, username, passwordで、Watsonの各サービス毎に取得する必要が有ります。APIを利用する際には、このCredential情報を使用して、APIに接続する必要が有ります。CredentialはWatsonのサービスのインスタンスを作成した毎に割り振られ、「cf env アプリ名」で確認できます。

``cf login -u USER-NAME -p PASS
cf env personality-insights-nodejs-fujita0718``

 ```"credentials": {
     "password": "UwSjK1brXBnA",
     "url": "https://gateway.watsonplatform.net/personality-insights/api",
     "username": "9fdc8072-9418-48a0-a61a-a017b5ea0461"
    }```

**2. app.jsにAPI Credential情報を記載**
![Picture5.gif](https://qiita-image-store.s3.amazonaws.com/0/86169/f7ad6907-ebba-284e-2ae3-d1bc3ff05049.gif)

**3. アプリを起動**
node app.js

# 本格的なWatsonアプリ作成のための情報
[Watson APIレファレンス](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/apis/#!/personality-insights)
[Documentation](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/)
[サンプルアプリライブラリー](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/gallery.html)
[Watson Forum](https://developer.ibm.com/answers/smart-spaces/25/watson.html)