Ethereum [Solidity 開発環境準備]

#Gethをインストールする。
Ethereumを利用する場合、まずはEthereumのP2Pネットワークに参加する必要があります。ネットワークへの参加はEthereumクライアントをインストールし起動することで参加が可能になります。

Ethereumでは、いくつかのEthereumクライアントが存在しますが1、現在のところ推奨されているクライアントは「Geth」です。Gethはプログラミング言語Goにより実装されたCUIクライアントであり、GethをインストールすることでEthereumネットワークにフル・ノードとして参加し、

・etherの採掘
・etherの送金
・スマート・コントラクトの生成
・トランザクションの生成
・ブロックチェーンの確認
といった動作が可能になります。


#UbuntuへのGethのインストール
Ubuntu OSを使用している場合、下記のコマンドを実行するとでGethがインストールされます 。

```
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
```

また、sudoコマンドの実行のためにパスワードが求められる場合があるので、その場合は適宜パスワードを入力します。

コマンド実行が完了した後、実際にgethがインストールされたかを確認するために、

```
$ geth --help
```

のコマンドを実行してみましょう。gethコマンドのオプション情報が表示されれば、正しくインストールされています。


# Gethのアップデート
Ethereumの開発は現在Proof of Concept の第9フェーズであり、正式リリースではありません。そのため、クライアント・ソフトにおいても頻繁にアップデートが行われております。
Gethをアップデートする際にはapt-getコマンドにより、以下の手順で行います。

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


# Mac OS へのGethのインストール
Homebrewを用いたインストールとソースからインストールする方法があります。

Homebrew を用いたGethのインストール
Homebrewをインストールがされてあれば、次のコマンドだけでインストールできます。

```
$ brew tap ethereum/ethereum
$ brew install ethereum
```

ソースからGethをビルドする
go-ethereumのレポジトリをクローン

```
$ git clone https://github.com/ethereum/go-ethereum
```

そして、次のコマンドを実行することでGethをビルドできます。(ビルドにはGo言語が必要になります)

```
$ cd go-ethereum
$ make geth
```
Goのインストールがまだの人はこのコードを実行してください。

```
$ brew install go
```



# Windows へのGethのインストール
Windows環境へのインストールは[こちら](https://github.com/ethereum/go-ethereum/wiki/Installation-instructions-for-Windows)に詳しく記載されているので、参考ください。



#Solidityコンパイラ（solc）のインストール
まず、システムへsolcのインストールを行います。

・**Ubuntuへのインストール**
以下のコマンドを実行してください。

```
$ sudo add-apt-repository ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install solc

//以下のコマンドでsolcのバージョン情報が表示されれば問題なくインストールされています。
$ solc --version
```

・**Mac OS Xへのインストール**
以下のコマンドを実行し、cpp-ethereumをインストールしてください1 。Mac OS Xへのインストールには、Homebrew が事前にインストールされている必要があります。

```
$ brew update
$ brew upgrade
$ brew tap ethereum/ethereum
brew install solidity

以下のコマンドでsolcのバージョン情報が表示されれば問題なくインストールされています。
$ solc --version
```

また、以下のコマンドを実行し、その結果に表示されるsolcへのパスをメモしておいてください。Gethとsolcをリンクさせるために後ほど利用します。

```
$ which solc
/usr/local/bin/solc
```

・**Windowsへのインストール**
[このページの手順](https://solidity.readthedocs.io/en/latest/installing-solidity.html)を参考にインストールしてください。



# Rimix（Browser-Solidity）をインストールする
Remix（Browser-Solidity）」というIDE（統合開発環境）です。インストールの手順は２つあります。
1. GitHubの[リポジトリ](https://github.com/ethereum/browser-solidity)をクローンし、ローカルで立ち上げる
2. [クラウドIDE](https://ethereum.github.io/browser-solidity/#optimize=false&version=soljson-v0.4.24+commit.e67f0147.js)

方法1は、インターネット環境がなくてもコントラクトの開発ができます。
方法2は、インターネット環境が必要ですが、すぐに使えるという利点があります。

今回は方法1で立ち上げます。
index.htmlをブラウザで開けばRemixが立ち上がります。
このような画面になったと思います。
![スクリーンショット 2018-09-14 13.16.25.png](https://qiita-image-store.s3.amazonaws.com/0/285122/ff332748-cfcd-97d5-61bb-02457654138b.png)
左側はSolidity言語のコードエディタになっており、右側はそのContractの各種情報の表示や実行等を行う画面になっています。 

browser-solidityは作成されたContractを２通りの方法で実行することが可能です。
画面右側の「Run」の「Environment」で、「Java Script VM」と「Web3 Provider」で切り替えることが出来ます。

・**Java Script VM**： ブラウザ上での疑似実行モード。実際のEthereumノードには接続せず、ブラウザ上のJavascript VM 上でContractの関数を疑似的に実行します。

・**Web3 Provider**： Blockchain上での実行モード。実際のEthereumノードに接続し、作成したContractをブロックチェーン上に登録した上でContractの関数を実行します。


# 次回
[Ethereum [プライベートネットワークに接続する]](https://qiita.com/kagami-r0927/items/af31aa6d51053787de43)