Ethereum Solidity SmartContract（スマートコントラクト）の開発環境を構築する - Private Net 編

# 概要

今回は一番環境設定が簡単な、WebのIDE環境で開発環境を構築していきます。
また、今回はEthereum NetworkのPrivate Netを使用します。

# これから開発を始める皆様へ

Ethereum SmartContractのデプロイは、他の言語と異なる点があります。
具体的には、デプロイには費用（ETH）が発生します。
これは、デプロイ先がEthereum Networkになるので
Ethereum Networkの使用料が発生するためです。

# 1. private netの構築

今回は、プライベートネットワークの構築に`Ganache`を使っていきます。

## Ganacheのインストール & 起動

[公式サイト](https://github.com/trufflesuite/ganache)に沿って、インストールを行っていきます。
※Windowsの方は、事前に[windows-build-tools](https://www.npmjs.com/package/windows-build-tools)のインストールが必要です。

- 1. Source codeをCloneする

```bash:clone
git clone https://github.com/trufflesuite/ganache.git
```

- 2. 必要なライブラリをインストールする

```bash:install
npm install
```

- 3. Ganacheを起動する

```bash:start
npm start
```

- 4. 起動したら、`QUICKSTART`をクリックする

<img width="1197" alt="スクリーンショット 2019-06-05 2.29.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/69ce6633-b439-b054-6f50-3504243239f3.png">

- 5. Ganacheが立ち上がれば、完了です

<img width="1201" alt="スクリーンショット 2019-08-31 21.10.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/63ebc013-dba7-c558-737a-39ef4cd0a74d.png">


# 2. IDEの設定を行なう

今回は、Web版のRemix（IDE）を使っていきます。
IDEにはいろいろありますが、Web版のRemix（IDE）は
サイトにアクセスするだけで開発がスタートできる手軽さがあります。

[Web版のRemix（IDE）を開く](https://remix.ethereum.org)

## 開発言語を選択する

まずは、言語を選択しましましょう。
今回は、`Solidity`を選択してください。

<img width="1440" alt="スクリーンショット 2019-06-19 23.42.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/a965d048-d0b7-5df2-442e-a726e5296b51.png">


## Ethereum Networkを設定する

### Environmentを選択する

②の`Environment`は`Web3 Provider`を選択してください

<img width="1440" alt="スクリーンショット 2019-06-19 23.30.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/c13ce742-bb56-1374-b912-1ebd19016f7b.png">

### `1. private netの構築`で起動した、GanacheのURLを設定する

- ダイアログが表示されたら、`OK`を選択します

<img width="1440" alt="スクリーンショット 2019-08-31 21.27.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/5ae20fc4-fa15-57fc-74d6-f2170f4075f7.png">

- ①: `Web3 Provider Endpoint`に`http://localhost:7545`を設定する
- ②: `OK`を選択する

※今回設定したEndpointは、Ganacheのデフォルトポートになっているので、ポートを変更している方はそれに合わせてポートを変更してください。

<img width="1440" alt="スクリーンショット 2019-08-31 21.28.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/6edaa527-16d2-47bf-2abf-bc5d3eb4f552.png">

接続できれば、これで開発環境構築は完了です！！
お疲れさまでした :bow: 

# Remixの使い方

使い方を簡単に説明しておきます。

## 新規作成

新しいファイルを追加してみましょう。
追加するステップは4ステップです。

<img width="1440" alt="スクリーンショット 2019-06-19 23.49.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/c1ee96d2-d601-6f2f-41dd-734f68081238.png">

1. ①のアイコンをクリックします。
2. ②のアイコンをクリックします。
3. ③に任意のファイル名を入力します。
4. ④の`OK`ボタンをクリックします。


## バージョンを指定



## コンパイル

|Platform|Command|
|:-:|:-:|
|⌘ + s|Ctlr + s|

### エラーも警告もない場合

赤線の部分にグリーンのチェックマークが表示されます。
※警告などがある場合、脆弱性やプログラムリクスになりなるので、警告もなくしましょう。

<img width="1440" alt="スクリーンショット 2019-06-20 0.09.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/d7686b24-e995-07d7-2586-294e6f515a33.png">


### エラーがある場合

赤線の部分にエラーが表示されます。

<img width="1440" alt="スクリーンショット 2019-06-20 0.07.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/91d8c648-778a-700b-6c99-26de44d329ed.png">

### 警告がある場合

赤線の部分に警告が表示されます。

<img width="1440" alt="スクリーンショット 2019-06-20 0.11.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/5655cfb8-6b08-a143-768c-f382614f3de1.png">


## デプロイ

### 単純デプロイ

`Run`タブ内の、`Deploy`ボタンをクリックするとデプロイ出来ます。

<img width="1440" alt="スクリーンショット 2019-06-20 0.15.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/b928bd6b-f71a-db5a-c959-0157f1e74c9e.png">

1. ①のアイコンをクリックします。
2. ②の`デプロイ`ボタンをクリックします。


### 送金額を指定してデプロイ

<img width="1440" alt="スクリーンショット 2019-06-20 0.18.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/0a1c683f-64c5-4170-5e29-5ae753f3c607.png">

1. ①のアイコンをクリックします。
1. ②に送金額を指定します。単位は、`wei` `gwei` `finney` `ether`から選択できます。
2. ③の`デプロイ`ボタンをクリックします。


## 関数の実行

デプロイが正しく完了すると、赤線の部分に関数の一覧が表示されます。

<img width="1440" alt="スクリーンショット 2019-06-20 0.27.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/04724461-3109-39b1-d344-cf7f0b75653e.png">


関数名をクリックすることで、関数が実行できます。

<img width="1440" alt="スクリーンショット 2019-06-20 0.27.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/95756158-333f-6730-7923-3cc10eb8a930.png">

実行結果は赤線内に表示されます。

<img width="1440" alt="スクリーンショット 2019-06-20 0.45.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65794/8b73276b-7864-49ac-0ecc-e30ba66c7cef.png">