apiconnect v2.0.18における旧verとの差分

# やること
IBM API ConnectのDeveloper Toolkit(API開発ツール)のv2がリリースされていたので，**v1との違い**を追っていく。
実際さわって，目でみて気づいた部分なのでGUI部分がほとんど。

※実際に試していて気づいた部分のまとめなので漏れは気にしていない
※実はv2.x.xではなく，v1.x.xの段階で取り込まれている機能があるかもしれない

ちなみに，API Connectって何？の場合は，以下を一読して頂くのが良いと思います。

- [IBM API Connect 使ってみた〜APIを作る〜](http://qiita.com/capsmalt/items/c21ed4b75fa468952671)
- [API Connect (LoopBack)で複数データ・ソースをAPI公開してみる](http://qiita.com/uedatks/items/e1556629272396eba657)

Node.jsのバージョン切り替えに興味がある場合は，[MacでNode.jsのバージョン管理](http://qiita.com/capsmalt/items/891d5985c2bbbb5eb1e0)を参考にしてください。

## apiconnect v2 変更箇所まとめ
手順の流れや，画面イメージ等が不要であれば，このセクションのみの確認でOK。

- apic loopback <アプリ名>ができなくなった
 - apic loopback実行後に，インタラクティブ形式の中でアプリ名を入力する方法のみに変更
- サンプル(notes)追加
 - empty-server
 - hello-world
 - notes  **<--- New**
- API Designer(GUI)上でできることの追加・変更
 - Settingボタン追加 (GUI上でのアプリ表示名の変更)
 - サーバーの始動・停止方法の変更
 - ログ閲覧機能
- データソース設定で，テスト接続ボタンが追加 [v1.0.3時点で変更]

# 環境
- Mac OS X El Capitan 10.11.4
- Node.js v4.2.2
- npm v3.8.5
- PostgreSQL v9.5.2
- Python v2.7.9
- **apiconnect v2.0.18**

# 前提
- Node.js が使える環境 ( > v4.x ) 
- npm install が実行可能 ( > v3.x )
 - インターネット接続環境

であれば，Windowsでも，Linuxでも問題ないはず　※Linuxは確認済

# apiconnect v2のインストール
apiconnectの新規，インストール済に関わらず，以下のコマンドでapiconnectモジュールのインストールが可能。

```bash 
$ npm install -g apiconnect    // インストール
$ apic -v                      // バージョン確認
```

2016年６月５日時点で，apiconnect本体は，v2.0.18であることが確認できる。
含まれる各モジュールの多くはv2になっているが，一部v1系も残っている模様。
<img width="370" alt="スクリーンショット 2016-06-05 19.01.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/6b71bd22-6e1f-6017-b637-18039b357a47.png">


# apiconnect v2 変更箇所の確認
ここから順に以下の変更箇所を画面イメージ付きで確認する。

- apic loopback <アプリ名>ができなくなった
- サンプル(notes)追加
- API Designer(GUI)上でできることの追加・変更
- データソース設定で，テスト接続ボタンが追加 [v1.0.3時点で変更]

## apic loopback <アプリ名>ができなくなった
 - apic loopback実行後に，インタラクティブ形式の中でアプリ名を入力する方法のみに変更

これまでは，新規LoopBackアプリを作成する場合，２つパターンがあった。

```bash
$ apic loopback
```
```bash
$ apic loopback apic-v2    // v2からは使用不可
```
v2からは，後者のパターンができなくなった。以下のようにエラーが表示される。<img width="505" alt="スクリーンショット 2016-06-05 19.09.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/b16c846d-bb77-dfbb-ebe9-07e9f6b6b75f.png">

前者の方法でコマンド入力した後，下図のようにインタラクティブに入力する中でアプリ名を指定することになる
<img width="739" alt="スクリーンショット 2016-06-05 19.10.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/bdd90698-9d7c-a462-bb0e-8b2a42a08e83.png">

## サンプル(notes)追加
 - empty-server
 - hello-world
 - notes  **<--- New**
  - モデル: note
  - データソース: db(オンメモリ)
  - 上記が事前構成済で，すぐにテスト可能
<img width="1244" alt="スクリーンショット 2016-06-05 19.18.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/8829482e-800d-ea56-620f-283bbd166ad9.png">

## API Designer(GUI)上でできることの追加・変更
 - Settingボタン追加 (GUI上でのアプリ表示名の変更)
 - サーバーの始動・停止方法の変更
 - ログ閲覧機能
 - データソース設定で，テスト接続ボタンが追加 [v1.0.3時点で変更]

### Settingsボタン追加 (GUI上でのアプリ表示名の変更)
画面右側に，"Settings"ボタンが追加されている。
<img width="1146" alt="スクリーンショット 2016-06-05 17.23.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/7e9aa74c-2b3b-64cc-983f-62f37a3501b6.png">

"Settings"ボタンを選択すると，以下図が表示される。
項目としては，表示名，名前，プロジェクト・ディレクトリーがあり，"表示名"を変更することができる。
<img width="708" alt="スクリーンショット 2016-06-05 17.23.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/7495270b-a49a-cce7-bc9c-aa8d4f436d9e.png">

変更した後が以下図
<img width="600" alt="スクリーンショット 2016-06-05 17.23.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/05bac312-dc41-2705-6498-db6a7ad28d56.png">
(変更前) apic-v2
(変更後) apic-v2_sample

loopbackコマンドで新規アプリ作成を行った場合には，入力したアプリ名がそのまま使われてしまう。
このため，もっと分かりやすい名前に変更したい場合に使うのだろうか・・・
(個人的には，"名前(API名)"を変更し，プロジェクト内に一括適用できたら嬉しい。今後に期待)

### サーバーの始動・停止方法の変更
- "実行"ボタンがなくなり，"▶"や，"■"で始動・停止を行う形式に変更 
- API Designerの最下部にボタンが追加されている

停止している状態
<img width="1147" alt="スクリーンショット 2016-06-05 17.24.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/7f0f7159-a180-4832-769b-42af1be87c0e.png">

"▶"ボタンで始動した状態
Runningと表示され，ゲートウェイ(4002)，アプリ(4001)が稼働していることが分かる。
<img width="1144" alt="スクリーンショット 2016-06-05 17.25.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/69447/b9af7064-759d-8674-86ab-1b522d199a12.png">
 
### ログ閲覧機能
API Designer (GUIの開発ツール)上で，ログを閲覧できるようになった。

画面右下にあるギアのマーク(設定アイコン)を選択すると，ビューが開く。
![スクリーンショット 2016-06-05 20.13.29.png](https://qiita-image-store.s3.amazonaws.com/0/69447/c8770df2-d87b-860b-47aa-4d34fefcdb3c.png)

MicroGateway(4002)，アプリケーション(4001)の始動・停止などのログを確認できる。
※ギアのマーク(設定アイコン)の２つ隣にあるプラスマーク(PCアイコンにプラスボタンが埋め込まれている感じ)を選択すれば，ログ画面を最大化できる
![スクリーンショット 2016-06-05 20.17.26.png](https://qiita-image-store.s3.amazonaws.com/0/69447/d988cbfd-5eab-4015-e809-8cf85e252f3c.png)

また，ブラウザ上でゲートウェイ/アプリのプロセスが正常に稼働しているかをすぐに確認できる。
(始動・停止アイコンのあるビュー上に存在するリンク)
![スクリーンショット 2016-06-05 21.26.41.png](https://qiita-image-store.s3.amazonaws.com/0/69447/e1c3a7c9-5924-9b2f-5e55-809d3968c027.png)


- Micro Gateway: https://127.0.0.1:4002/
- アプリケーション: http://127.0.0.1:4001/

URLを叩けば済む話だが，開発時のムダをなくす配慮の１つだと思われる。
(起動したらとりあえずリンクで確認するという手順を自然とやっている)


以下にリンクを開いた際の画面イメージを示す。

アプリケーション: http://127.0.0.1:4001/
![スクリーンショット 2016-06-05 20.26.32.png](https://qiita-image-store.s3.amazonaws.com/0/69447/9aa68546-b60f-4011-f553-e7fe037ada4d.png)

始動した時間，稼働累積時間が表示されており，APIアプリケーションが稼働していることが確認できる。


Micro Gateway: https://127.0.0.1:4002/
![スクリーンショット 2016-06-05 20.27.10.png](https://qiita-image-store.s3.amazonaws.com/0/69447/41c6cb5b-add1-a3e2-6727-6478b57007fe.png)

一見エラーが出ているようだが，ゲートウェイ(4002)までは到達していることが分かるため，稼働確認は行える。

ゲートウェイでは，CORS，認証設定，流量制御など，様々なポリシーを設定できる。ゲートウェイを通ったリクエストに対してポリシーが適用されるため，ポリシーを利用する場合は，4002へのリクエストを送る形になる。

ここでエラーが出ているのは，クライアントIDやシークレットが欠けているためである。

例えば，cURLで以下のようなフォーマットで実行すると，200OKの応答を確認できる。

```bash
$ curl --request GET \
  --url 'https://localhost:4002/api/Notes' \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --header 'x-ibm-client-id: default' \
  --header 'x-ibm-client-secret: SECRET'
```
※LoopBackアプリ作成時に，サンプルとしてNotesを選択している場合のGETリクエスト例

### データソース設定で，テスト接続ボタンが追加 [v1.0.3時点で変更]
以前は，接続情報を入力した後，その場で接続テストができなかった。
正確には，**"探索"ビューでAPI呼出しのテストを行えるが，事前にDB接続のテストができない状態**だった。
画面右上に，"ヒトが走っているボタン"があり，このボタンで接続テストが可能になった。
※接続情報の入力・変更時には，保存ボタン押下の際に接続テストが自動的に行われる
![スクリーンショット 2016-06-05 21.34.05.png](https://qiita-image-store.s3.amazonaws.com/0/69447/4139c935-e6e6-6d57-5ec3-1bce285e3e1a.png)

# まとめ
以上，apiconnectモジュール v2.0.18のリリースに伴い，ざっと確認できた変更箇所について記載した。

- apic loopback <アプリ名>ができなくなった
- サンプル(notes)追加
- API Designer(GUI)上でできることの追加・変更
- データソース設定で，テスト接続ボタンが追加 [v1.0.3時点で変更]

あれも欲しい，これも欲しい，といった機能はまだまだあるが，比較的短いスパンでアップデートされているので今後も楽しみ。