M1 MAC: Solidityの環境構築(RemixIDE)

# はじめに

M1 MACでのsolidity環境構築に関する記事が少なかったので書いてみました．ここではlocal環境で動作するRemixを入れていきます．
前提はgitが入っていることのみとさせていただきます．

# 自己紹介

今年IT系の会社に入社した新卒一年目です．他の記事を見ていただければわかると思いますが，大学院時代は量子コンピュータを，最近は人工知能に興味を持っています．更なるスキルアップとしてブロックチェーンの勉強を初めて見ました．実際に実装してキャッチアップしていく予定です．

## 読んだ書籍，講座

ブロックチェーン関連で読んだ書籍を紹介したいと思います．

[60分でわかる! ブロックチェーン最前線](https://www.amazon.co.jp/60%E5%88%86%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8B-%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E6%9C%80%E5%89%8D%E7%B7%9A-%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E7%A0%94%E7%A9%B6%E4%BC%9A/dp/4774197610)
本当に60分(強)で読むことができました．概要を掴むには問題ないと思います．
[ブロックチェーン・レボリューション](https://www.amazon.co.jp/%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%83%BB%E3%83%AC%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-%E2%80%95%E2%80%95%E3%83%93%E3%83%83%E3%83%88%E3%82%B3%E3%82%A4%E3%83%B3%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E3%81%A8%E7%B5%8C%E6%B8%88%E3%80%81%E3%81%9D%E3%81%97%E3%81%A6%E4%B8%96%E7%95%8C%E3%82%92%E5%A4%89%E3%81%88%E3%82%8B%E3%81%AE%E3%81%8B-%E3%83%89%E3%83%B3%E3%83%BB%E3%82%BF%E3%83%97%E3%82%B9%E3%82%B3%E3%83%83%E3%83%88/dp/4478069964/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%83%AC%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&qid=1628325496&s=books&sr=1-1)
ブロックチェーンの意義などを含めて学ぶことができます．何故期待されているのか，何処に期待できるのか．等が詳しく書かれています．（若干分量が多いですが．．．笑）
[Pythonで動かして学ぶ！あたらしいブロックチェーンの教科書](https://www.amazon.co.jp/s?k=python+%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3&i=stripbooks&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&ref=nb_sb_noss_1)
実際にブロックチェーンを軽く実装して見たいと思い，購入しました．解説についてはそこまで詳しくはないのですが，実際に実装してみることで理解が深まった点もありました．また，Pythonで出来るのでとりあえず実装してみたいという方にはおすすめです．
[ブロックチェーンアプリケーション開発の教科書](https://www.amazon.co.jp/gp/product/4839965137/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1)
これから読み進めようとしている本です．

ブロックチェーン関連で視聴した講座を紹介したいと思います．

[ブロックチェーンの仕組みをひとつひとつ図解 - 仕組みを紐解きながら最新状況・今後の活用方法まで体系的に](https://www.udemy.com/share/101ZQG2@PkdKbF1eTlMIcE5KEktNfRRHSg==/)
Udemyの講座です．解説がとても丁寧で技術的側面を実装なしで学びたいと言う方にお勧めできます．実装する前にこの講座をみてもいいかもしれません．私は電車の中で視聴してました．

# 目次

1. 環境
1. 事前準備
1. Remixのインストール
1. 最後に

# 環境

MacBook Air (M1, 2020)
OS: macOS Big Sur version11.4
CPU: Apple M1
メモリ: 8GB

# 事前準備

## homebrewのインストール

[homebrew](https://brew.sh/)をインストールします．M1 macを使用している方はバージョン3.0.0以上をインストールする必要があります．

![スクリーンショット 2021-08-07 17.57.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558839/ab069e5d-f26c-8b02-1d2b-52a8f810ef0a.png)

```
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

homebrewが入っているか確認してみましょう．

```
$ brew -v
```

ここでバージョンが表示されない場合はpathは通っていない可能性があります．下記のコマンドを実行してpathを通します．

```
$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
```

これでhomebrewのインストールは完了です．次にnodebrewのインストールです．

## nodebrewのインストール

次のコマンドを実行．安定版をインストールします．

```
$ nodebrew install-binary stable
```

下記のようなエラーが発生する場合がありますが，

```
Fetching: https://nodejs.org/dist/v7.10.0/node-v7.10.0-darwin-x64.tar.gz
Warning: Failed to create the file 
Warning: /Users/whoami/.nodebrew/src/v7.10.0/node-v7.10.0-darwin-x64.ta
Warning: r.gz: No such file or directory

curl: (23) Failed writing body (0 != 941)
download failed: https://nodejs.org/dist/v7.10.0/node-v7.10.0-darwin-x64.tar.gz
```

次のコマンドを実行し，再度インストールを行えば解消できます．

```
$ nodebrew setup
```

次にインストールされたnodeを有効化します．
まず，以下のコマンドを実行してインストールされたバージョンを確認します．

```
$ nodebrew ls
```

結果

```
v16.0.1

current: none
```

インストール直後はcurrent: noneとなっているため，必要なバージョンを有効化します．

```
$ nodebrew use v16.0.1
```

これで有効化されます．
最後に環境パスを通します．

```
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zprofile
```

最後にインストールされたか確認します．下記コマンドを実行してください．

```
$ node -v
```

バージョンが表示されれば成功です．

## npmのインストール

今までの手順を踏んでいれば入っています．確認してみましょう．


```
$ npm -v
```

バージョンが表示されていれば成功です．Remixのインストールに移ります．

# Remixのインストール

nx CLIが必要なのでnpmでインストールします．

```
$ npm install -g @nrwl/cli
```

こちらの[github](https://github.com/ethereum/remix-project)をクローンします．

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

先ほどインストールしたRemixをビルドします．下記三つのコマンドを実行します．

```
$ cd remix-project
$ npm install
$ nx build remix-ide --with-deps
```

ビルドに成功すると可愛いログが出てきます．

![スクリーンショット 2021-08-07 19.21.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558839/25df3186-c436-091d-79a4-be2edb826e26.png)

最後にローカルサーバーを起動させましょう．

```
$ nx serve
```

[http://127.0.0.1:8080/](http://127.0.0.1:8080/)にアクセスするとRemixが出てきます．

# 最後に

Solidityに関する記事はまだまだ少なく環境構築もどれが正しいの，どれが自分に適しているのか悩みどころが多かったです．しかし，ブロックチェーン，スマートコントラクトは今後伸びてくる技術であることに間違いはないと思うのでしっかりキャッチアップしていきたいです．