Hyperledger ComposerのTutorialを実行するために、Hyperledger ComposerとHyperledger Fabric 1.1を導入する手順

本情報は、2018年5月15日時点です。

Hyperledger Composer、公式ドキュメントの指示通りにやって環境構築に失敗し挫折することが多いそうで、原因の１つに英語ドキュメントしかないというのもあると思いますが、Hyperledger Fabric 1.1 の環境構築手順の備忘録です。Hyperledger Fabric 1.0の環境構築は[こちら](https://qiita.com/kolinz/items/c5185303f5d48f3247e9)になります。

#Hyperledger ComposerとHyperledger Fabric 1.1を入れる
## 前提環境を整える
使用するOSは、「Ubuntu Server 16.04 LTS」です。ほとんどのクラウドサービスで採用されていますし、メーカーから購入できるサーバーでもサポート対象になっています。
Ubuntuベースで、Hyperledger Fabric 1.1 と関連ミドルウェアを入れるために必要な環境を構築していきます。Hyperledger Composer DocsのInstalling pre-requisites部分です。

###Docker CEを入れる

```
sudo apt-get remove docker docker-engine docker.io
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get -y install docker-ce
sudo docker -v
sudo usermod -aG docker $(whoami)
```

上記実行後、ログアウトし、再ログインします。
###Docker Composeを入れる

```
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```

###Node.jsを入れる
Hyperledger Fabric 1.0ではNode.js 6.x系が必要でしたが、Hyperledger Fabric 1.1では、Node.js 8.x 系を使用します。

```
sudo apt-get update -y && sudo apt-get upgrade -y
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs gcc g++ make
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
sudo apt-get install yarn
```

## 関連npmとHyperledger Fabric 1.1を導入
Hyperledger Fabric 1.1を使用するには、composer 0.19.x系が必要です。
公式ドキュメントHyperledger Composer Docsの[Installing the development environment](https://hyperledger.github.io/composer/latest/installing/development-tools.html)の手順通りに実施するとエラーがでましたのでアレンジしています。

###関連npmパッケージをインストール

```
sudo npm install composer-cli@0.19.4
sudo npm install -g --unsafe-perm composer-cli@0.19.4
sudo npm install -g --unsafe-perm composer-rest-server@0.19.4
sudo npm install -g --unsafe-perm generator-hyperledger-composer@0.19.4
sudo npm install -g --unsafe-perm yo
sudo npm install -g --unsafe-perm composer-playground@0.19.4
```

###Hyperledger Fabric 1.1を導入
```
sudo service docker restart
mkdir fabric && cd fabric
curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
tar -xvf fabric-dev-servers.tar.gz
./downloadFabric.sh
./startFabric.sh
./createPeerAdminCard.sh
```

Hyperledger Fabric 1.1を使用しますので、Hyperledger Fabric 1.0のときのように、「startFabric.sh」を書き換える必要はなく、淡々と実行していきます。

「./createPeerAdminCard.sh」を実行することで下記のように表示されます。Command succeededと表示され、エラーが起きなければ成功です。

```
Development only script for Hyperledger Fabric control
Running 'createPeerAdminCard.sh'
FABRIC_VERSION is unset, assuming hlfv11
FABRIC_START_TIMEOUT is unset, assuming 15 (seconds)

Using composer-cli at v0.19.4

Successfully created business network card file to
        Output file: /tmp/PeerAdmin@hlfv1.card

Command succeeded


Successfully imported business network card
        Card file: /tmp/PeerAdmin@hlfv1.card
        Card name: PeerAdmin@hlfv1

Command succeeded

The following Business Network Cards are available:

Connection Profile: hlfv1
lqqqqqqqqqqqqqqqqqwqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqk
x Card Name       x UserId    x Business Network x
tqqqqqqqqqqqqqqqqqnqqqqqqqqqqqnqqqqqqqqqqqqqqqqqqu
x PeerAdmin@hlfv1 x PeerAdmin x                  x
mqqqqqqqqqqqqqqqqqvqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqj


Issue composer card list --card <Card Name> to get details a specific card

Command succeeded

Hyperledger Composer PeerAdmin card has been imported, host of fabric specified as 'localhost'
```

#Playgroundの起動
Playgroundを実行します。コマンド実行後、Webブラウザで、http://localhost:8080/login にアクセスします。

```
$ composer-playground
```

これで環境構築できましたので、続きは公式ドキュメントのPlayground TutorialやDeveloper Tutorialを実施していきます。