【和訳】開発環境の構築

# はじめに

和訳第四弾。

[Installing the development environment](https://hyperledger.github.io/composer/latest/installing/development-tools.html) の和訳です。
ガバガバ和訳でも英語読むよりマシという方は御覧ください。
関連チュートリアルに関しても（たぶん）上げます。
当方 Hyperledger Composer について学び始めたばかりであるため、指摘等大歓迎です。

---

本チュートリアルは、Hyperledger Composer 開発ツール（主にビジネスネットワークの構築に使用）を入手し、Hyperledger Fabric（主にビジネスネットワークをローカルで実行・デプロイするために使用）を開始するためのものです。作成したビジネスネットワークは異なる環境の Hyperledger Fabric ランタイム（例：クラウド・プラットフォーム）にもデプロイすることができます。

# 開始前に

[必要事項のインストール](https://qiita.com/Saya_K/items/4fc37a9a323bd41a1c8e) に従ってインストールを行ってください。

本チュートリアルは、ツールを以前にインストールし、利用したことがないものとして扱います。違うのであれば、チュートリアルを進める前に、以前の設定が完全に破棄されていることを確認してください。破棄方法は [付録](#付録) に記載されています。

柔軟性を提供し、最大数のシナリオの開発・テスト・デプロイを可能にするために、Composer は npm でインストールされ、 CLI で制御可能なコンポーネントのセットとして提供されます。チュートリアルでは、まずインストール方法を示し、それから開発環境の制御方法を示します。

# コンポーネントのインストール

## Step 1. CLI ツールのインストール

Composer 開発者にとって便利な CLI ツールがいくつか存在します。最も重要なものは **composer-cli** です。これは、すべての必要不可欠な操作を含んでいるため、最初にインストールを行います。次に、**generator-hyperledger-composer**、**composer-rest-server**、**Yeoman** をインストールします。これらは開発環境のコアとなるものではありませんが、チュートリアルの実行や、ビジネスネットワークと対話を行うアプリケーションの開発に非常に有用なものであるため、インストールを行います。

以下の npm コマンド実行時に **su** または **sudo** を使用しないでください。

1. CLI ツールをインストールします。

    ```
    npm install -g composer-cli@0.20
    ```

2. ビジネスネットワークを REST API として公開できるように、REST サーバ実行ツールをインストールします。

    ```
    npm install -g composer-rest-server@0.20
    ```

3. アプリケーション生成に有用なツールをインストールします。

    ```
    npm install -g generator-hyperledger-composer@0.20
    ```

4. Yeoman は **generator-hyperledger-composer** を利用しアプリケーションを生成します。

    ```
    npm install -g yo
    ```

## Step 2. Playground のインストール

既にオンラインで Composer を体験している場合は、**Playground** アプリケーションを見たことがあるでしょう。開発環境でも、Playground をローカルで起動することができます。Playground は、ビジネスネットワークを見て、デモンストレーションするための UI を提供します。

1. ビジネスネットワークに対するシンプルな編集、テストを提供するブラウザアプリケーションのインストールを行います。

```
npm install -g composer-playground@0.20
```

## Step 3. IDE の設定

ブラウザアプリケーションはビジネスネットワークのコードを操作するために使用できますが、多くのユーザは IDE での作業を好みます。Composer 拡張機能が有効であるため、**VSCode** をおすすめします。

1. [VSCode](https://code.visualstudio.com/download) をインストールします。
2. VSCode を開き、Extensions[^1] へ移動し、マーケットプレイスから **Hyperledger Composer** を検索、インストールします。

[^1]: 左側アイコン一番下

## Step 4. Hyperledger Fabric のインストール

このステップでは、ビジネスネットワークをデプロイするための、ローカルの Hyperledger Fabric ランタイムを提供します。

1. チュートリアルのために選択したディレクトリ（**~/fabric-dev-servers** とします）で、Hyperledger Fabric をインストールするためのツールを含んだ**.tar.gz** ファイルを取得します。  
**zip** も利用可能です。zip を利用する場合は **tar.gz** を **zip** に、**tar -xvf** を **unzip** に変更してください。

    ```
    mkdir ~/fabric-dev-servers && cd ~/fabric-dev-servers
    
    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
    ```

2. ダウンロードして展開したスクリプトを利用し、ローカルの Hyperledger Fabric v1.2 ランタイムをダウンロードします。

    ```
    cd ~/fabric-dev-servers
    export FABRIC_VERSION=hlfv12
    ./downloadFabric.sh
    ```

典型的な開発環境に必要なすべてをインストールしました。ブロックチェーンビジネスネットワークの開発及びテストに際して、この環境で行う最も一般的な事柄のいくつかを学ぶために、チュートリアルを続行してください。

# 開発環境の制御

## Hyperledger Fabric の起動と停止

**~/fabric-dev-servers** 内にあるスクリプトを利用して、ランタイムを制御できます。

まずは、新規ランタイムを開始するために、start スクリプトを実行し、PeerAdmin カードを作成する必要があります。

```
cd ~/fabric-dev-servers
export FABRIC_VERSION=hlfv12
./startFabric.sh
./createPeerAdminCard.sh
```

**~/fabric-dev-servers/stopFabric.sh** を利用してランタイムを停止することができます。再起動時は**~/fabric-dev-servers/startFabric.sh** を利用します。

開発セッション終了時には、**~/fabric-dev-servers/stopFabric.sh** を実行した後、**~/fabric-dev-servers/teardownFabric.sh** を実行します。teardown スクリプトを実行すると、次回起動時に、初回起動時同様 PeerAdmin カードの作成が必要となります。

ローカルのランタイムは開発用に頻繁に起動、停止、破棄されることが意図されています。より持続的な状態を持つランタイムを探している場合、開発環境の外で実行し、ビジネスネットワークをデプロイしたいでしょう。この場合の例として、Kubernetes を介した実行、または IBM Cloud といった管理されたプラットフォームでの実行などがあります。

## web アプリケーション Playground の実行

以下のコマンドを実行し、web アプリケーションを起動します。

```
composer-playground
```

通常、自動的にブラウザで http://localhost:8080/login が開かれます。

web アプリケーションの **My Business Network**ページ上に、**createPeerAdminCard** スクリプトで作成した **PeerAdmin@hlfv1** カードが表示されているはずです。表示されていなければ、正常にランタイムの起動が行われていない可能性があります。

すべてのコンポーネントが実行されました。また、開発セッション終了の際に、それらを停止、破棄する方法も学びました。

# What's Next?

- [Playground チュートリアル](https://qiita.com/Saya_K/items/711c4484af43119813f2) での web アプリケーション UI の利用方法の学習
- [開発者向けチュートリアル](https://qiita.com/Saya_K/items/8fae107fce77afba95ee) での CLI 及び VSCode の利用方法の学習

# 付録：以前の設定の破棄

**Hyperledger Composer** の以前のバージョンを利用したことがあり、新規インストールを行いたい場合、下記のコマンドで以前の Docker コンテナをすべて破棄する必要があります。

```
docker kill $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images dev-* -q)
```