イーサリアムの開発言語Solidity(ソリディティー)とは?初心者向けにその特徴を解説

▼おすすめの取引所ランキング

本記事ではSolidity(ソリディティー)について解説していきます。

Solidityとは、イーサリアム上でスマートコントラクトを開発する為の言語であり、イーサリアムの根幹となるプログラミング言語です。

Solidityとは?

Solidityとは、一言で言うと…
イーサリアム上でスマートコントラクトを開発して実装する為の開発言語の事

Solidityはイーサリアムで用いられる開発言語であり、スマートコントラクトやDappsなどの実装に使用されています。

その内容について、ノンプログラマーにとっては少々複雑かもしれませんが、イーサリアムを機動する為の重要な言語となるので抑えておきましょう。

では、以下よりSolidityについて初心者でも分かるように解説していきます。

Solidityの特徴

Ethereum Virtual Machine Code(EVM Code)

そもそもスマートコントラクトや分散型アプリケーション(Dapps)は「コントラクトコード」と呼ばれるコードが実行される事で初めて動きます。

そして、イーサリアム上で動くこのコントラクトコードの事を「Ethereum Virtual Machine(EVM) Code」と呼んでおり、このEVM Codeによってコントラクトが処理されます。

EVM Codeはバイトコード形式で記述されていきますが、そのような形式は機械語に近い「低級言語」であり、プログラムのソースコードが人間では理解し難くなっています。

機械言語はコンピューターが直ぐにコードを読み取って実行に進む事が出来ますが、人間が見たときにそれを理解する事に苦しみます。

そこで、コントラクトを記述する事に特化して更に抽象度の高いコーディングが可能となる高級言語がSolidityです。

高級言語とは、人間が使う言語に近いものを指しており、これによってプログラマーが書いたコードがEVC Codeに翻訳されます。

SolidityはJavaScriptに似た言語

先程Solidityは高級言語であると説明しましたが、高級言語は他にも「C++」「Python」「JavaScript」などと言ったようなメジャーな言語が存在しています。

  • 「C++」とは、C言語を拡張したプログラミング言語
  • 「Python」とは、少ない文量で簡単にプログラムを作成できるのが特徴のプログラミング言語
  • 「JavaScript」とは代表的なプログラミング言語であり、主にブラウザなどでスクリプトを動かす為の言語

Solidityは特にJavaScriptと似た性質を持った「コントラクト指向言語」であり、EVN上で実行されます。

Solidityをコンパイルする場合

さて、このような高級言語の処理を実行する場合はまず「コンパイル」と呼ばれる処理を行う必要があります。

コンパイルとは、プログラミング言語で入力されたソースコードをコンピューター上で実行できるように形式を変更する方法であり、コンパイルを行うソフトウェアの事を「コンパイラ」と呼んでいます。

Solidityでも同様にコンパイラを通してEVM Codeを実行出来るように形式を変更するのですが、Solidityでは「solc」といったコンパイラを利用します。

なお、solcの他にも「Remix(旧browser-solidity)」と呼ばれるコンパイラが存在しており、比較的簡単にコーディングやデプロイを始めやすく、コンパイラに加えて統合開発環境(IDE)であるのが特徴です。

Solidityの基本的なコード例

では、Solidityの基本的なコードを簡単に解説していきます。
まず初めに、contractを宣言するコードを見てみましょう。

Contract

Solidityにおいて、まず冒頭でcontractと記述する事でContract名を宣言出来ます。

solidityにおけるContractは、他のプログラミング言語におけるクラスの概念に似ています。

クラスとは、変数と関数が定義された小さなプログラムコードのまとまりのことです。

Ethereumでは、このContractを誰でも呼び出し可能なようにブロックチェーン上に書き込むことができるのです。

Hello World

ここでは簡単なsolidityの例を紹介します。

上記のコードでは、HelloWorldという名前のContractを定義しています。

また、get()関数(function)が定義されています。

get()関数は呼び出されると、”Hello World!!”を返すようになっています。

HelloWorldクラスをEthereumのブロックチェーン上に公開(デプロイ)することで、このget関数を誰でも実行することができるようにすることができます。

Ethereumは、solidityで記述されたプログラムの公開や実行の際に支払う燃料としての役割を持った仮想通貨なのです。

Solidityを学習できるサービス

このようなSolidityを実際に学習できるサービスがここ最近で誕生するようになりましたが、本記事ではSolidityが学べる「CryptoZombies」と「Tech Academy」を紹介します。

CryptoZombies

画像引用:CryptoZombies

CryptoZombiesとは、ゾンビを生み出しゾンビ軍団を立ち上げるといったゲームを開発しながらSolidityでスマートコントラクトの構築を学べるサービスです。

このゲームは多言語に対応している事から日本語での学習も可能となっており、尚且つ学習全て無料です。

なお、全世界でのユーザー数は15万人を超える程となり、グローバル展開をする人気なゲーム学習サービスです。

これからSolidityを学びたいという方は、ゲーム感覚で学ぶ事が出来るのでおすすめです。

▼CryptoZombies(クリプトゾンビーズ)とは?

引用: クリプトゾンビーズはゲーム感覚でsolidityを学べる ブラウザ上でコードを書けるので、開発環境を作る必要がない

Tech Academy

画像引用:TechAcademy

TechAcademyとはプログラミングやアプリ開発を学習できるオンラインスクールですが、それ以外にもブロックチェーン技術やスマートコントラクトの開発を学ぶ事が出来るコースが存在しています。

そのように同サービスでは「スマートコントラクトコース」があり、Solidityやイーサリアムが提供するクライアントソフト「Go Ethereum(Geth)」などに関する技術を学習する事が出来ます。

▼ブロックチェーンをTechAcademy(テックアカデミー)で学ぶ

みなさんはブロックチェーンと言うと仮想通貨をイメージしますよね。 2017年にビットコインを始めとした仮想通貨は軒並み暴騰。TVのニュース

まとめ

Solidityを要約すると以下の通りです。

  • Solidityとは、イーサリアム上でスマートコントラクトを開発して実装する為の開発言語
  • SolidityはsolcやRemixといったコンパイラを介してEVM Codeに変換できる

以上がSolidityについての解説でしたが、ブロックチェーンに関するコードを書ける人材の市場価値は今後のイーサリアム等の需要に伴い高まって行くのではないかと筆者は考えます。

上述した通りSolidityの言語はJavaScriptと似ている事から、これから学習しても十分熟練のスマートコントラクト開発者となる事も可能かもしれません。

なお、中国版イーサリアムと呼ばれている分散型プラットフォーム「NEO」は本家イーサリアムとは違ってSolidityを用いず基本的なJavaやPythonを採用しており、開発者にとっての開発難易度を低くしています。

しかし、今後も現在のようなイーサリアムの優位性が覆る事が無ければ、このSolidityは覚える価値のあるコードとなるでしょう。


Dapps アルトコイン イーサリアム (ethereum) 仮想通貨