1年目エンジニアがHyperledger-Fabricのサンプルを触ってみた！（準備編）

#はじめに

文系出身エンジニアです。1年目です。

Blockchainに携わることとなり、とりあえずHyperledgerのサンプルアプリでも動かしてみようか、という次第でこの記事を書いてます。

基本的には、以下のチュートリアルでやっていることをなぞっているだけです。すみません。
[Getting Started]
(https://hyperledger-fabric.readthedocs.io/en/release-1.4/getting_started.html)

ただの作業ログだと思って見てください。

#環境
- ホストOS：MacOS(v10.13.6)
- ゲストOS：VirtualBox(v5.2.22)上に構築したUbuntu(v16.04.5)
VMの構築については、以下の記事がわかりやすいと思います。（気が向いたら書きます）

[環境構築メモ Virtual Box に Ubuntu を入れ SSH 接続する]
(https://qiita.com/amoO_O/items/ff1aa16bf1b60f34bb5d)

ホストからSSHでゲストにつなぎ、Terminalで操作しています。



#前提アプリのインストール

- Docker 18.09.1
- Docker Compose 1.8.0
- go1.6.2
- Python 2.7.12
- Node.js v10.15.0
- npm 6.5.0

以下のチュートリアルをやります。
[Prerequisites]
(https://hyperledger-fabric.readthedocs.io/en/release-1.4/prereqs.html)

##Docker
- パッケージインデックスを更新

```
$ sudo apt-get update
```



- 前提ソフトウェアのインストール

```
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```



- GPG公開鍵の取得

```
$ sudo apt-key fingerprint 0EBFCD88
```
フィンガープリントはスクリーンショットなどで保存しておくといいらしい（使ったことはない）



- aptリポジトリの設定

```
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```


- docker-ceのインストール

```
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
```

- Dockerコマンドを、sudo無しで実行できるようにする

```
$ sudo usermod -aG docker $(whoami)
```

- 一旦ログアウトしてログイン

```
$ exit
$ ssh [username]@[remotehostIP] -p [ポート番号]
```

- 導入できたか確認

```
$ docker version
Client:
 Version:           18.09.1
 API version:       1.39
 Go version:        go1.10.6
 Git commit:        4c52b90
 Built:             Wed Jan  9 19:35:23 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.1
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       4c52b90
  Built:            Wed Jan  9 19:02:44 2019
  OS/Arch:          linux/amd64
  Experimental:     false
```

##Docker Compose
- インストール

```
$ sudo apt install docker-compose
```

- 導入できたか確認

```
$ docker-compose --version
docker-compose version 1.8.0, build unknown
```

##Go
- [こちら](https://golang.org/doc/install)から該当OSのバイナリをダウンロードするリンクをコピーする

```
$ sudo wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz
#Linuxなので、Linux用のリンクを貼ってます。
```

- zipを解答したものをローカルに配置

```
$ sudo tar -C /usr/local -xzf ~/fabric/go1.11.4.linux-amd64.tar.gz
```

/usr/local/go/bin　に実行ファイル「go」が入ってるか確認してください

- Goのインストール

```
$ sudo apt install golang-go
```

- 確認

```
$ go version
go version go1.6.2 linux/amd64
```

##Python 2.x
- ubuntuには最初からpythonが入ってるので確認のみです

```
$ python -V
Python 2.7.12
```

##C++ビルドツール(サーバー内でNode.jsアプリを利用する場合)
- build-essentialと、libssl-devの２つをインストール

```
$sudo apt-get -y install build-essential libssl-dev
```


##Node.js(サーバー内でNode.jsアプリを利用する場合)
- nvmのインストール用Shellスクリプトをダウンロードして実行する
[参照先](https://github.com/creationix/nvm)

```
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
```
- ログアウトしてログイン

```
$ exit
$ ssh [username]@[remotehostIP] -p [ポート番号]
```

- nvmがインストールされたことを確認する。成功すると「nvm」と表示される。

```
$ command -v nvm
```

- Node.jsのLTSバージョンをインストールする

```
$ nvm install --lts
```

- LTSバージョンがデフォルトになるよう設定する

```
$ nvm use --lts
$ nvm alias default 'lts/*'
```

- npmを最新のものに更新する

```
$ npm install npm@latest -g
```

- 確認します

```
$ node --version
v10.15.0
$ npm --version
6.5.0
```

#サンプルアプリ、バイナリ、Docker imageなどもろもろインストール

以下のチュートリアルをやります。
[Install Samples, Binaries and Docker Images]
(https://hyperledger-fabric.readthedocs.io/en/release-1.4/install.html)

- Hyperledger/fabric-samples repositoryのインストール

```
$ curl -sSL http://bit.ly/2ysbOFE | bash -s 1.4.0
```

- 確認

```
$ docker images
hyperledger/fabric-javaenv     1.4.0               3d91b3bf7118        2 days ago          1.75GB
hyperledger/fabric-javaenv     latest              3d91b3bf7118        2 days ago          1.75GB
hyperledger/fabric-tools       1.4.0               0a44f4261a55        7 days ago          1.56GB
hyperledger/fabric-tools       latest              0a44f4261a55        7 days ago          1.56GB
hyperledger/fabric-ccenv       1.4.0               5b31d55f5f3a        7 days ago          1.43GB
hyperledger/fabric-ccenv       latest              5b31d55f5f3a        7 days ago          1.43GB
hyperledger/fabric-orderer     1.4.0               54f372205580        7 days ago          150MB
hyperledger/fabric-orderer     latest              54f372205580        7 days ago          150MB
hyperledger/fabric-peer        1.4.0               304fac59b501        7 days ago          157MB
hyperledger/fabric-peer        latest              304fac59b501        7 days ago          157MB
hyperledger/fabric-ca          1.4.0               1a804ab74f58        7 days ago          244MB
hyperledger/fabric-ca          latest              1a804ab74f58        7 days ago          244MB
hyperledger/fabric-zookeeper   0.4.14              d36da0db87a4        3 months ago        1.43GB
hyperledger/fabric-zookeeper   latest              d36da0db87a4        3 months ago        1.43GB
hyperledger/fabric-kafka       0.4.14              a3b095201c66        3 months ago        1.44GB
hyperledger/fabric-kafka       latest              a3b095201c66        3 months ago        1.44GB
hyperledger/fabric-couchdb     0.4.14              f14f97292b4c        3 months ago        1.5GB
hyperledger/fabric-couchdb     latest              f14f97292b4c        3 months ago        1.5GB
hyperledger/fabric-baseos      amd64-0.4.14        75f5fb1a0e0c        3 months ago        124MB
```

こんな感じになると思います。
Fabricのサンプルと、imageのタグ名が一致していて、latestタグも付いています。

- パスを通す

```
$ export PATH=[ダウンロードしたディレクトリ]/fabric-samples/bin:$PATH
```


#まとめ
長くなりましたが、この記事では、
1.VirtualBox上にFabric用のVM構築（人任せ）
2.前提アプリのインストール
3.Fabricのサンプルやらいろいろダウンロード
しました。

次回は、fabric-sampleの中のfirst-networkというサンプルを用いて、ブロックチェーンネットワークの設定をするところまでやってみたいと思います。

###最後に
初めてQiitaを書きましたが、自分の記事が読みにくくて吐きそうです。がんばります。
この記事もどんどんアップデートしていきます。