Windows環境でUbuntu仮想環境を導入しブロックチェーンのコードパターンを試してみた

IBM が公開している [Code Patterns]() はすごく参考になるのですが、Mac や Linux 環境を前提としたものもあり、Windows 環境で利用するには一手間、一工夫を要求される場合があります。ちょっと面倒です。

今回も [Hyperledger Fabric を使用して、Web ベースのブロックチェーン対応の保険アプリケーションを構築する](https://developer.ibm.com/jp/patterns/build-a-blockchain-insurance-app/) というパターンを試そうと思ったのですが、Windows 用のスクリプトが用意されていない状態。

というわけで、Winodws 上の仮想環境で Linux環境 (Ubuntu 18.04 LTS) を用意して、その上でいろいろ実行することを試してみました。仮想環境だと壊すことを恐れずガンガン試せるのも、良さそうですし！

# Ubuntu 仮想環境の準備

[【2018最新】VirtualBoxでUbuntu18.04の導入から設定まで詳しく解説](https://www.sejuku.net/blog/82291) を参考に、仮想マシンのセットアップを実施しました。

私の環境は Windows 10 Home 64bit で、Docker Toolbox を [以前に導入済み](https://qiita.com/yamachan360/items/94dc0c6879927cbdc781) だったので、[VirtualBox](https://www.virtualbox.org/) は ver5.2.8 と少し古めですが、既に導入済みでした。

その上に仮想マシンを作成し、導入したのは、参考ページとほとんど同じ [Ubuntu 18.04.2 LTS](https://www.ubuntulinux.jp/download/ja-remix) で、特に問題は無かったです。

※ HDD サイズを 12GB に設定しましたが、今回、サイズがギリギリでした。オフィスソフトなど不要なものを省くか、もう少し大きなサイズで作成しておくことをお勧めします

以下がインストールして、ソフトウェアアップデートをかけた直後の画面。念のため、この状態のスナップショットを取っておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/d4ff14a2-557f-60ee-8aad-39506f321b51.png)

# 前提ソフトウェアの導入

今回のパターンで要求されている前提ソフトウェアは以下の通り。

* Docker - v1.13 or higher
* Docker Compose - v1.8 or higher
* NPM - v5.6.0 or higher
* nvm - v8.11.3 (use to download and set what node version you are using)
* Node.js - node v8.11.3 ** don't install in SUDO mode
* Git client - v 2.9.x or higher
* Python - 2.7.x

私は Ubuntu をほとんど知らないので、ググりつつ、今回の Code Pattern に必要な前提ソフトウェアを導入してみました。Git はまあ普通に導入。

```
sudo apt-get update
sudo apt-get install git
```

Python はバージョン指定があったので、以下のように入れてみました。

```
sudo apt-get install python2.7
sudo ln /use/bin/python2.7 /use/bin/python
```

npm/Node.js はバージョン指定が面倒っぽく感じたので [Ubuntu16.04で任意のバージョンのNode.jsをインストールする方法](https://www.trifields.jp/how-to-install-node-js-on-ubuntu1604-2680) ページを参考に、nvm は使わず n パッケージを利用。

```
sudo apt-get install nodejs npm
sudo npm install -g n
sudo n 8.11.3
sudo apt-get purge nodejs npm
suto apt-get autoremove
```

Docker と Docker Compose は [Ubuntu 18.04にDockerをインストールする(+docker-composeも)](https://qiita.com/iganari/items/fe4889943f22fd63692a) をそのまま実行させていただき、無事に導入できました。

念のため、この段階でもスナップショットを取っておきましょう。

# いよいよコードパターンの実行

準備に時間がかかりましたが、いよいよコードパターンの [日本語README](https://github.com/IBM/build-blockchain-insurance-app/blob/master/README-ja.md) を読みつつ、コードを実行していきます。Git のリポジトリをクローンして、スクリプトを実行。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/919bfc56-d14f-3fe7-0bf7-c0d7a8af4529.png)
うん、うまく動作したようですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/3d99a6f3-2e73-c85e-62ab-c0c6c28fa2a5.png)
自転車ショップでの注文トランザクションが実施され、ブロックチェーンにブロックが追加されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/33f43daa-c51d-456d-efae-68416ac33e59.png)
あとはコードを読んだり、ちょっと改造して試したり、これをベースに別のアプリケーションの開発を始めることもできますね。

# というわけで！

仮想マシン環境で Ubuntu な Linux 環境を用意することで、Windows に対応していないサンプルコード(今回はIBMのコードパターン)を実行し、体験することができました。

主要な前提ソフトウェアを導入した状態で仮想マシンのスナップショットを取っておけば、普段使いの Windows 環境はそのままで、気軽にいろんなサンプルコードを試し、そして消すことができます。

【追記】仮想環境の構築部分をもう少し詳しくまとめてみました＞ [開発者向けイベント用に Ubuntu 仮想マシンを用意してみた](https://qiita.com/yamachan360/items/8e80def6b8bd60f7a55f)

いろんなサンプルコードを試して、学んでいきましょう！