Ethereum開発を快適にする仮想マシンの作成

♯ethereum

この記事で得られること

  1. Mac、Windows関係なく同じ環境でEthereum開発を行うための知識
  2. Virtual Box、Vagrantのインストール方法
  3. 仮想マシンの使い方

今回作成する環境の構成

仮想マシンUbuntu上にEthereum開発環境を作成

仮想マシンUbuntu上にEthereum開発環境を作成

Mac、Windows上で直接Ethereum開発用の環境を作りません。

仮想マシンとして「Ubuntu」というOSを立ち上げます。

その中でEthereum開発ツールをインストールしていきます。

なぜMac、Windows上で開発しないか

理由は2つあります。

一番重要な理由は、普段使いのPCにはすでに様々なソフトがインストールされています。設定もカスタマイズされています。それでドキュメントの通りに実行してもエラーになってしまうことがよく起こるからです。

また、普段使いのMacやWindowsに直接開発ツールをインストールすると、これまで普通に動いていたソフトが壊れて動かなくなってしまう可能性があります。

もう1つの理由は、多くの開発ツールはLinux上で快適に動くように作られているからです。

Linuxとは

世界中のハッカーコミュニティにより開発されているOS。

今回使用するUbuntuもLinuxの一種。

ほとんどの場合、開発ツールはLinuxへのインストールがMacやWindowsよりも簡単です。

そして困ったときにネット上に情報が多く、助けてもらいやすいです。

Ethereum開発にかぎらず、何か新しく開発を勉強する時には専用の仮想マシンの用意をおすすめします。

用語の説明

      <li>
        <a href="#toc1" tabindex="0">仮想マシンとは</a>
      </li>
      <li>
        <a href="#toc2" tabindex="0">Virtual Box・Vagrantとは</a>
      </li>
      <li>
        <a href="#toc3" tabindex="0">Ubuntuとは</a>
      </li>
      <li>
        <a href="#toc4" tabindex="0">Virtual Boxのインストール</a>
      </li>
      <li>
        <a href="#toc5" tabindex="0">Vagrantのインストール</a>
      </li>
      <li>
        <a href="#toc6" tabindex="0">仮想マシンとの接続用ディレクトリを作成</a>
      </li>
      <li>
        <a href="#toc7" tabindex="0">仮想マシンの初期化</a>
      </li>
      <li>
        <a href="#toc8" tabindex="0">仮想マシンの起動</a>
      </li>
      <li>
        <a href="#toc9" tabindex="0">仮想マシンへのログイン</a>
      </li>
      <li>
        <a href="#toc10" tabindex="0">仮想マシンからのログアウト</a>
      </li>
      <li>
        <a href="#toc11" tabindex="0">仮想マシンの再起動</a>
      </li>
      <li>
        <a href="#toc12" tabindex="0">仮想マシンの停止と削除</a>
      </li>
      <li>
        <a href="#toc13" tabindex="0">バックアップをとる</a>
      </li>
      <li>
        <a href="#toc14" tabindex="0">バックアップから復元する</a>
      </li>
    </ol>
    

仮想マシンとは

PCやスマートフォンを起動すると「OS」と呼ばれるものが立ち上がりますよね。

PCの場合のMacとWindows、スマートフォンでのiOSとAndroid。

通常は1つのPCに1つのOSですが、実はMacの中でiOSやAndroidを立ち上げたり、Windowsの中でLinuxという第三のOSを立ち上げて使うことができます。

そのような<span class"u">「OS上のもう1つのOS」を仮想マシンと呼びます。

Virtual Box・Vagrantとは

Virtual Box公式

仮想マシンを実現するためのソフトです。

Vagrant公式

Virtual Boxの操作を快適にしてくれるソフトです。

誰かが作成した仮想マシンを受け取って起動したり、

自分の仮想マシンを保存して誰かにシェアしたりできます。

Ubuntuとは

Ubuntu公式

MacやWindowsと並んで最もメジャーなOSの1つです。

(正直、ITエンジニア以外には知名度は低いですが。)

世界中のハッカーにより開発されています。

無料で利用できます。

プログラミングを知らない人にも易しく、使いやすいです。

ツールの準備

Virtual Boxのインストール

ダウンロードページ

自身のOS(MacかWindows)に合ったものをダウンロード・インストールしてください。

Vagrantのインストール

ダウンロードページ

自身のOS(MacかWindows)に合ったものをダウンロード・インストールしてください。

仮想マシンの立ち上げ

Macの場合はターミナルを、Windowsの場合はコマンドプロンプトを起動して下さい。

仮想マシンとの接続用ディレクトリを作成

mkdir ethereum_dev

仮想マシンの初期化

接続用ディレクトリに移動して、初期化します。

cd ethereum_dev
vagrant init

Vagrantfileという設定ファイルが生成されます。

仮想マシンの設定

お好きなエディタでVagrantfileを開いて、内容を全て消してから以下の内容を書き込み保存して下さい。

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-17.10"
  config.vm.box_version = "201802.02.0"

  config.vm.network "forwarded_port", guest: 9545, host: 9545 # truffle develop

  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
    vb.customize ["modifyvm", :id, "--memory", "2048", "--cpus", "2", "--ioapic", "on"]
  end
end

それぞれの簡単な説明をします。自分にとってカスタマイズが必要な場合はカスタマイズして下さい。

  config.vm.box = "bento/ubuntu-17.10"
  config.vm.box_version = "201802.02.0"

仮想マシンのバージョンを設定します。

クラウドからダウンロードするので、いつでも同じバージョンをインストールするためです。

config.vm.network "forwarded_port", guest: 9545, host: 9545

後ほど使用するTruffle開発サーバー用に9545ポートをフォワードする設定です。

※今後追加でポートが必要になった場合、下の行に追記するとポートを追加出来ます。

  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
    vb.customize ["modifyvm", :id, "--memory", "2048", "--cpus", "2", "--ioapic", "on"]
  end

パフォーマンスを向上させる設定です。

自身の環境に合わせて削除しても大丈夫です。

CUIで操作する場合GUIは不要なので、vb.gui = falseで無効化しています(GUIが必要な場合はtrueにします)。

vb.customizeは使用メモリ・CPUを変更する設定です。

仮想マシンの起動

初回起動時は仮想マシンのダウンロードを挟むので、数分かかることがあります。

vagrant up

仮想マシンへのログイン

仮想マシンへログインするとフォルダやコマンドなどすべて仮想マシンのものに置き換わります。ターミナルやコマンドプロンプトの見た目はMacやWindowsですが、中身は完全にUbuntuとなっています。

vagrant ssh

仮想マシンからのログアウト

仮想マシン上で以下のコマンドを実行するとログアウトします。元のMacやWindowsの環境に戻ります。

exit

仮想マシンの再起動

Vagrantfileの設定を変えた場合は再起動が必要です。Vagrantfileには仮想マシンに割り当てるCPUやメモリの設定やポートのマッピング、フォルダ共有の設定などが記載されます。

vagrant reload

仮想マシンの停止と削除

停止

停止している状態からはvagrant upで、停止した時の状態で立ち上げることが出来ます。

vagrant halt

削除

削除は注意して行って下さい。削除した場合は仮想マシンの状態が初期化されます。

vagrant upを実行しても初回起動時まで巻き戻った状態になります。

vagrant destroy

Ethereum開発で必要になる操作は以上です。

仮想マシンの状態をバックアップする

現在の仮想マシンの状態をバックアップしておきたい時のコマンドを紹介します。

開発中に開発環境が壊れるということがよく起こります。

ツールのインストール中にPCがシャットダウンしてデータが破損したり、ツールのバージョンが自動で更新されて使えなくなってしまったり。

それを未然に防ぐために定期的なバックアップをおすすめします。

バックアップをとる

仮想マシンにログイン中の場合はexitコマンドを実行してログアウトして下さい。

バックアップをとります。

接続用ディレクトリ(Vagrantfileがある)で以下のコマンドを実行して下さい。

※数分かかることがあります。

vagrant package

package.boxというファイルが出来ます。

完成です。

必ずVagrantfileとセットでクラウドなどに保存しておいて下さい。

バックアップから復元する

Vagrant用の作業ディレクトリを作成します。

その中に

  1. Vagrantfile
  2. boxファイル

を配置します。

配置したboxファイルを使用するようにVagrantfileを編集します。

package.boxというファイル名を変更していない場合は以下のようになります。

  config.vm.box = "package.box"

あとは起動するだけです。

vagrant up