Ethereum開発を快適にする仮想マシンの作成
# 目次
# この記事で得られること
- Mac、Windows関係なく同じ環境でEthereum開発を行うための知識
- Virtual Box、Vagrantのインストール方法
- 仮想マシンの使い方
# 今回作成する環境の構成
Mac、Windows上で直接Ethereum開発用の環境を作りません.
仮想マシンとして「Ubuntu」というOSを立ち上げます.
その中でEthereum開発ツールをインストールしていきます.
# なぜMac、Windows上で開発しないか
理由は2つあります.
一番重要な理由は、普段使いのPCにはすでに様々なソフトがインストールされています.設定もカスタマイズされています。それでドキュメントの通りに実行してもエラーになってしまうことがよく起こるからです。
また、普段使いのMacやWindowsに直接開発ツールをインストールすると、これまで普通に動いていたソフトが壊れて動かなくなってしまう可能性があります.
もう1つの理由は、多くの開発ツールはLinux上で快適に動くように作られているからです.
Linuxとは
世界中のハッカーコミュニティにより開発されているOS.
今回使用するUbuntuもLinuxの一種.
ほとんどの場合、開発ツールはLinuxへのインストールがMacやWindowsよりも簡単です.
そして困ったときにネット上に情報が多く、助けてもらいやすいです.
Ethereum開発にかぎらず、何か新しく開発を勉強する時には専用の仮想マシンの用意をおすすめします.
# 用語の説明
# 仮想マシンとは
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の操作を快適にしてくれるソフトです.
誰かが作成した仮想マシンを受け取って起動したり、
自分の仮想マシンを保存して誰かにシェアしたりできます.
# 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用の作業ディレクトリを作成します.
その中に
- Vagrantfile
- boxファイル
を配置します.
配置したboxファイルを使用するようにVagrantfileを編集します.
package.box
というファイル名を変更していない場合は以下のようになります.
config.vm.box = "package.box"
あとは起動するだけです.
vagrant up