スマートコントラクトの実装で必須!SolidityとRemix開発環境とは【初心者向け】
初心者向けにSolidityとRemix開発環境について解説しています。RemixはSolidityの統合開発環境です。最初にSolidityという言語の特徴について学習します。次にRemixの主な機能と、それぞれの活用方法について見ていきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
SolidityとRemix開発環境について解説します。
ブロックチェーン技術を活用したアプリケーションが増えていますが、Ethereum上でスマートコントラクトを実装する上では欠かせない知識になります。
ぜひ覚えておきましょう。
今回は、ブロックチェーンに関する内容だね!
どういう内容でしょうか?
SolidityとRemix開発環境について詳しく説明していくね!
お願いします!
Solidityとは
Solidiyとは、Ethereum上でスマートコントラクトを実装するための高水準言語の1つです。
通常、Ethereum上ではEVM(Ethereum Virtual Machine)上でスマートコントラクトを動作させる為には、「EVM Code」(バイトコード形式で低水準言語)で実行しますが、人間にとっては解りづらい言語であり生産性が低いので、人間にとって理解しやすい高水準言語としてのプログラミング言語とコンパイラとして代表格なので「Solidty」です。
Solidityは、JavaScriptに似ているとよく言われます。
しかし、そのJavaScriptもJavaが元ですしもっと先を言えばC++に似ています。ですので、オブジェクト操作ができるC++言語以降を使い慣れた方でしたら比較的慣れるのは早いと思われます。イベント処理などは、Javaそっくりです(が、最近はThrowなどが非推奨になっています)。
2018年4月27日現在、コンパイラ最新バージョンは0.4.24です。StableVersionは0.4.23なのでそちらが標準的な開発者向きとなっています。
現時点でブロックチェーンコースで使用しているSolidityは、Ver0.4.11となっています。しかし、かなり古いバージョンですので変数のスコープや推奨される関数が、最新版と異なっているので注意が必要です。
具体的には、
(1)functuonについて明示的にスコープ(PublicかPrivateか)することが必須
(2)対象オブジェクトのアドレス直参照は非推奨になり、アドレス型変数に代入してからプロパティなどを参照する
(3)エラー割り込み処理throwの使用は非推奨となり、require( )やrevent( )などを用いるようになった
(4)storageやmemoryと言ったブロックチェーン上資源を管理できるスコープが追加になった
などです。
開発環境としては、Remixと言われる統合開発環境やMist-Walletとgethと言った実際のEthereum上のプロダクトを使用した環境が使用できます。
Remix開発環境について
Remixとは
Remixとは、旧browser-solidityと言われていた統合開発環境(IDE:Intelligent Develop Environment)を言います。Localでも動作するバージョンがあるようです(使ったことないですが)。
コンパイラや実行(擬似的な)、デバッガなどが実装されていて、開発に必要なものが一通り揃ってはいます。教科書ではRemixを使用していますが、実際のコントラクト操作はWalletとgethになっていますので、コンパイルエラーを確認したり修正することに使うだけにした方が良いと思われます。
コンパイラバージョンが指定出来るので、古いバージョンでのコンパイルも可能です(しかし、geth上ではコンパイルエラーとなり動作しません)。
実行させるには、(1)JavaScriptVM(2)Injected Web3(3)Web3 provider があります。
gethを使用する場合には、(3)でgethと通信させて使用します。通信させるには、http通信となるので平文でインターネットに通信することになるので、個人的にはあまりお勧めはしません。
コンパイルエラーに対処するのであれば、ローカル環境で使用できる(1)や(2)がおすすめです。
Remixの機能
Remixの機能としては、以下のものがあります。
1. エディタ+コンパイラ
Solidity開発ができるエディタとコンパイラが装備されています。エディタは、コンパイラと連動しているのでSolidity予約語を候補表示することができます。コンパイラバージョンも指定できるので、古いバージョンでのコンパイルも可能です。
エディタは、使用しているWebブラウザからLocalPCにファイルを保存することが可能です。しかし、ブラウザからLocalPCのリソースへの権限付与はハッキングなどの原因になりかねないのでおすすめはしません。
WebブラウザからRemix上で登録したソースをコピーして、LocalPCのエディタにペーストするのが安全かと思います。
2. 実行
Solidityで開発したプログラムを実行できます。しかし、途中からシナリオファイル(JSONファイル)が必要になっているので、複雑なコントラクトを実行する方法は難しいようです。
3. デバッガ
実行しながら不具合を修正するデバッガが用意されています。
4. アナライズ
Ethereum上での資源使用やGAS使用の多少など、事前にどのような資源を消費して動作するかを確認することができるようです。
Remix上での開発が標準だと、ネット上の記事には書いてあることは多いですが実際に使用してみると結構面倒なことが多いので、講座ではWallet+gethで対応しているメンターの方も多いのではと思います。
開発環境がないとプログラム開発ができない訳でないので、実際の動作に近いWalletとgethがコントラクト操作もスムーズにできるのが良いのではと思います。
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
また、オンラインのプログラミングスクールTechAcademyでは、ブロックチェーンオンライン講座を開催しています。
ブロックチェーン技術の仕組みを理解し、実際に分散型アプリケーションを開発することができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。
また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。