Node.js + Express + あえてCloudant で REST APIを作成する（準備編）


## はじめに
* Cloudant NoSQL DB自体["REST API"](https://developer.ibm.com/clouddataservices/docs/cloudant/get-started/http-api/)を出しているので車輪の再発明なのはわかっている上で、Cloudantのドキュメントに対してCRUD操作を行うREST API開発の練習を行った備忘録です。
* API設計は ["Web API The Good Parts"](https://www.oreilly.co.jp/books/9784873116860/) に沿うこととします。
* 当記事では環境準備の流れを記載します。

## 前提条件
使用した環境は以下です：

* Mac: OSX El Capitan 10.11.6
* Atom: V1.14.4
* Node.js: V6.9.4
* npm: V3.10.10
* Express4 & Express-generator
* Cloudant npmモジュール

## 事前準備

### Node.jsの導入
多くの記事にもなっていますのでここでは詳細割愛します。
["Node.js"](http://nodejs.org/ja/)のページに従ってください

### Express4 & Expresss Generatorの導入
多くの記事にもなっていますのでここでは詳細割愛します。
["Express"](http://expressjs.com/en/starter/installing.html)のページに従ってください。

### Cloudant npmモジュールの導入
多くの記事にもなっていますのでここでは詳細割愛します。
["Cloudantのnpmモジュール"](https://www.npmjs.com/package/cloudant)のページに従ってください。

### Cloudant サンプルDBの作成
ここではBluemixを使います。まずBluemix上でCloudantインスタンスをデプロイします。Bluemixのアカウントは取得済みであることが前提です。
続いてIBM提供のサンプルDBにあるanimaldbをレプリケーションします。

1. Bluemixにログインし、Cloudant NoSQL DBを検索します。
![Kobito.JmXpmP.png](https://qiita-image-store.s3.amazonaws.com/0/129662/80be0559-6e32-e880-cc29-51b20bfc17c2.png "Kobito.JmXpmP.png")

2. 無料のLiteプランを選択して作成をクリックします。
![Kobito.QEEo3a.png](https://qiita-image-store.s3.amazonaws.com/0/129662/249413ed-38a9-b893-c275-633d3d95083f.png "Kobito.QEEo3a.png")

3. 作成できたら、接続情報を確認します。
![Kobito.UvT2HG.png](https://qiita-image-store.s3.amazonaws.com/0/129662/f58699d7-fd26-e777-c6e8-65cf428fcd70.png "Kobito.UvT2HG.png")

4. DBのコンソールを立ち上げます。
![Kobito.nfrBMg.png](https://qiita-image-store.s3.amazonaws.com/0/129662/66e79057-6108-3dbc-d31b-e6f4fb43e9ca.png "Kobito.nfrBMg.png")
![Kobito.tmyHWC.png](https://qiita-image-store.s3.amazonaws.com/0/129662/61be5630-8390-af8f-1b43-8cfc780dc627.png "Kobito.tmyHWC.png")

5. アカウントの画面です。
![Kobito.6F31Mw.png](https://qiita-image-store.s3.amazonaws.com/0/129662/339fc387-577e-5b13-28e6-4507eb49b271.png "Kobito.6F31Mw.png")

6. 続いてIBMが提供している[サンプルDB](https://developer.ibm.com/clouddataservices/docs/cloudant/get-started/sample-databases-and-applications/)のレプリケーションを行います。ここではanimaldbを使います。
![Kobito.h3luzo.png](https://qiita-image-store.s3.amazonaws.com/0/129662/36cd73c4-e1ef-3443-3f1c-05a14adff9be.png "Kobito.h3luzo.png")

7. Replication > New Replicationをクリックします。
![Kobito.2CDw2S.png](https://qiita-image-store.s3.amazonaws.com/0/129662/d4f92d6c-3e40-7493-14d2-3f5c3919cfca.png "Kobito.2CDw2S.png")

8. 以下のように設定し、Start Replicationをクリックします。
![Kobito.ZJ9h9x.png](https://qiita-image-store.s3.amazonaws.com/0/129662/f4ce7ffa-1fbf-2198-fc36-035128db065b.png "Kobito.ZJ9h9x.png")

9. 3で確認した接続情報のパスワードを入力して再度Start Replicationをクリックします。
![Kobito.Vsxfpa.png](https://qiita-image-store.s3.amazonaws.com/0/129662/e020b5d0-a981-0e71-6919-981439240735.png "Kobito.Vsxfpa.png")

10. レプリケーションが始まるのでしばらく待ちます。
![Kobito.pzE5S8.png](https://qiita-image-store.s3.amazonaws.com/0/129662/7a016005-25ce-4658-8620-151339cc3e81.png "Kobito.pzE5S8.png")

11. 完了しました。
![Kobito.8ETDHo.png](https://qiita-image-store.s3.amazonaws.com/0/129662/61334311-6b5d-0f96-5d66-63bc71e8b804.png "Kobito.8ETDHo.png")

12. DBができているのが確認できます。
![Kobito.LVQfoS.png](https://qiita-image-store.s3.amazonaws.com/0/129662/1bc4744f-73c0-1b48-1514-e8ae1b91a54c.png "Kobito.LVQfoS.png")

13. 続いてanimaildbのドキュメントが確認できます。
![Kobito.KorEf0.png](https://qiita-image-store.s3.amazonaws.com/0/129662/94086ef3-e2df-0c02-e7c9-a867830fc651.png "Kobito.KorEf0.png")


## まとめ
以上で環境準備を完了しました。次回はNode.js + Expressを使って、Cloudantドキュメントに対してCRUD操作を行うコードとAPI設計について書いていきます。

## 参考文献
* https://www.npmjs.com/package/cloudant
* https://www.npmjs.com/package/express
* http://expressjs.com/
* https://developer.ibm.com/clouddataservices/docs/cloudant/get-started/sample-databases-and-applications/
* https://developer.ibm.com/clouddataservices/docs/cloudant/database-replication/create-a-replication-job/