はじめに
Solidityの開発環境がいまいちまとまっていなかったので、色々試した結果をまとめた。
自分のメモ的側面が強いが、誰かの役に立てば幸いである。
EthFiddle
https://ethfiddle.com/
EthFiddleはブラウザ上でコントラクトを記述できるので動作確認に便利で、共有する際にはURLを貼り付けるだけなので簡単。
また、chat機能がついていて質問もできる。
ここで一度コントラクトを簡単にテストした後に、gethでコンパイル、デプロイするのがいい。
一方で、実際のネットワークにgethを使わずにデプロイしたり、本格的な開発を行うには難しいかもしれない。
メリット
- 簡単に動作確認できる
- チャットルームがあって質問しやすい
- おしゃれ
デメリット
- ブラウザ上なので細かい設定ができない
- メインネットにデプロイできない
Intellij
https://plugins.jetbrains.com/plugin/9475-intellij-solidity
JetBrains製のテキストエディタ。
solidityはシンタックスハイライトのみ。
solidityを書くのみだったら他の機能が多すぎるので、オーバースペックという感じ。
実質エディタ+solcとそんなに変わりないけれど、PyCharm等のJetBrains製品に使い慣れていたり、Androidアプリ書いたり、solidityメインの製品じゃない時にいいかもしれない。
つまりSolidityだけ書くなら、他の方がいい。
メリット
- エディタらしく細かい設定が可能
- AndroidやJavaといった他の言語を使う開発にも使える
デメリット
- コンパイル等は結局solcを使ってやるしかない
- シンタックスハイライトしか機能がない
Remix
https://remix.ethereum.org/#optimize=false
Solidityの公式の開発環境。多機能。
ブラウザ上でコントラクトを記述できて、クライアントさえつけていれば接続してデプロイまでやってくれる。ただし、環境設定がわかりづらい。さらに、一部の環境では動作が不安定な時があったりして、なかなか落ち着いて開発しづらい。
動作確認だけならjavascript VMで動かせる。
メリット
- 公式なのでコンパイラをほぼ全種類選べる
- 多機能で出来ないことがほぼなさそう
デメリット
- 一部環境で正常に機能しない時があった
- ブラウザ上なのでカスタマイズできない
- 多機能が故にどの機能がどこにあるのか、分かり辛い
エディタ&solc
好きなエディタを使える。
筆者はEmacs + solcで開発を行っている。現状はこれで個人開発は完璧。ただ、チーム開発の際に環境が異なって動作しなかったり、何らかの不具合不都合が発生する可能性は否めない。
メリット
- 柔軟に対応できる
デメリット
- 複数人開発で環境が違って来たりする
まとめ
一通り簡単に触った結果なので、機能の見落としがあったりするかもしれないので、実際に使ってみて使いやすい環境というのが一番だと思います。solidityはgethで直接できたコンパイル機能を廃止したりしてるので、未だ開発環境が完全に落ち着いていない段階だと思います。代わりに登場したRemixは筆者が半年前に使ったときはsafari、firefoxで両方ともカクカクして作業にならなかったりしていたが、現在は直っているようなので使ってみようと思う。
結論としてはそこそこ大きなコントラクタは好きなエディタで書いてRemixでデプロイ、コンパイルを試す、という流れが一番良さそうだ。
チュートリアルのような簡単な物を書いているだけならEthFiddleが手軽に確認できるのでおすすめである。