学習方法

Solidityについて徹底解説!学習方法まとめ【2019/3/4更新】

イーサリアムを使ったアプリケーション開発に興味を持った方が必ず耳にするであろう"Solidity"というスマートコントラクト開発言語について、開発環境やツールなども含め解説します。

Solidityについて徹底解説!学習方法まとめ【2019/3/4更新】

arrow_drop_down 目次

Solidityとは

Solidityの定義

Solidityの公式によって

“イーサリアムプラットフォーム上でスマートコントラクトを実装するために使われるコントラクト指向の静的型付高級言語”

であると定義されています。

噛み砕くと、イーサリアムというブロックチェーン上で実装するスマートコントラクトと呼ばれるプログラムを構築するために、独自に作られたプログラミング言語ということになります。スマートコントラクトの開発のために使われる言語の中でSolidityは最も使われています。


開発環境

イーサリアムのブロックチェーンを利用するにはクライアントアプリケーションを利用する必要があります。様々な言語での実装がありますが、ここでは代表的な二つを紹介します。


Geth (go-ethereum)

Go言語で実装されたクライアントアプリケーションです。最も使われているクライアントです。

Geth公式サイト:https://geth.ethereum.org/



Parity

Rustで実装されたクライアントアプリケーションです。Gethの次に使われているクライアントです。Gethよりも安定していて同期も早いものとなっています。

Parity公式サイト:https://www.parity.io/ethereum/



必要なツール

次にSolidityでスマートコントラクトを開発する際に必要なツールなどを紹介します。


Remix

ブラウザ環境でSolidityを実行できるツールです。ブラウザ環境で実行できるため、カジュアルに利用できます。

Remix公式サイト: https://remix.ethereum.org/



Truffle

スマートコントラクトのコードのコンパイル・リンク・デプロイ・バイナリ管理ができるプロジェクト管理フレームワークです。

Truffle公式サイト:https://truffleframework.com/



OpenZepplin

コントラクト開発のためのライブラリです。

OpenZeppelin公式サイト:https://openzeppelin.org/



Solidity以外のコントラクト開発言語

スマートコントラクトを開発するためにはSolidity以外にも以下のような独自に作られた言語を使用することができます。



Vyper

Vyperはよりシンプルでセキュアなスマートコントラクトなコントラクトを開発するためのPythonライクな言語です。読みやすいシンプルなコードを目指しており、コード監査が容易であるという特徴があります。

大きな資産を扱う可能性のあるイーサリアムのスマートコントラクトのコードには脆弱性があってはいけないため、デプロイ前のコード監査が重要です。そのためコード監査の容易なVyperは大きな可能性を秘めています。

Vyperは現在も開発中の言語であるため、Vyperでの実装事例はまだまだ多くありません。

Vyper公式サイト:https://vyper.readthedocs.io/en/latest/



Serpent

SerpentもPythonライクなスマートコントラクト開発言語ですが、重大な脆弱性が発見された後、開発自体もストップしているため、Serpentを使ってスマートコントラクトを開発するのは賢いとは言えないでしょう。

Serpent公式サイト: https://github.com/ethereum/serpent



LLL

LLLは”Low-level Lisp-like Language”の頭文字をとったスマートコントラクト開発言語です。文字通りLispに似た言語構文を持っています。

この言語は名前にもあるようにSolidityよりも低級な言語のため、 

・メモリやストレージへの直接的なアクセスができる
・EVMオペコードへの完全なアクセスができる
・Solidityよりも小さなバイナリにコンパイルできる

という利点があります。

そのため、LLLによって書かれたコードはわかりやすく簡潔になります。
LLLも現在開発中であり、ドキュメントも少ないので学習コストの高い言語です。

LLL公式サイト:https://lll-docs.readthedocs.io/en/latest/lll_introduction.html



初心者にオススメの本・学習方法

Solidityをこれから学習する方にオススメの本や学習方法をを紹介します。


『ブロックチェーンアプリケーション開発の教科書』

ブロックチェーンやイーサリアムの仕組みからスマートコントラクトの開発まで網羅的に学ぶことのできる一冊です。


『堅牢なスマートコントラクト開発のためのブロックチェーン技術入門』

タイトルの通り、セキュリティの高いコントラクトを開発するための一冊です。


Solidityの公式ドキュメント

全編英語で記述されていますが、公式ドキュメントは参照すべきでしょう。

Solidity公式ドキュメント:https://solidity.readthedocs.io/en/v0.5.2/



CryptoZombies

イーサリアムのサイドチェーンを開発するLoom Networkが運営するSolidity学習サイトです。日本語にも対応しており、無料で楽しみながら学ぶことができるProgateのようなサービスとなっています。

CryptoZombies:https://cryptozombies.io/




まとめ

Solidityについての解説、いかがだったでしょうか。

このSolidityという言語はスマートコントラクトの開発には欠かせない存在です。
紹介したCryptoZombiesなど手軽にかつ楽しく勉強できるツールもありますし、関心がある方はこの際に始めてみてはどうでしょうか。

最後までお読みいただき、ありがとうございました。