icon
icon

スマートコントラクトの開発で使う言語!Solidityとは【初心者向け】

初心者向けにSolidityとはどんな言語なのか詳しく解説しています。Ethereum(イーサリアム)上で動くスマートコントラクト開発の言語です。これからブロックチェーン技術を使って実装したい人はぜひ知っておきたい技術でしょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

この記事では、Solidityについて解説します。

Ethereum上で動くスマートコントラクトを実装したい方はぜひ知っておきたい技術でしょう。JavaScriptに似た構文を書いてプログラムが動くので、実際に書いて覚えていきましょう。

 

 

目次

1時間でできる無料体験!

 

田島悠介

今回は、Solidityという言語について勉強してみよう。

大石ゆかり

田島メンター!あまり聞いたことがない言語ですが、どういったものなんですか~?

田島悠介

これはスマートコントラクトを実装するための言語なんだ。具体的な特徴について説明しよう。

大石ゆかり

はい!お願いします!

 

Solidityとは

Solidityはコンパイル後、Ethereum(イーサリアム)上で実行可能なプログラム言語です。

Ethereum(イーサリアム)上で実行する場合、Ethereum(イーサリアム)ネットワーク上でコントラクトコードという状態でブロックチェーン上に記録されたコードが実行されることで処理することができます。

 

仮想通貨の口座開設

ビットフライヤー
Ethereum上で実装されたアプリケーションの利用をするためには、イーサリアム(ETH)で売買するサービスもあるため、仮想通貨の口座開設をしておきましょう。口座開設後、ビットコインやイーサリアムの売買が可能です。

bitFlyerGMOコイン

 

コントラクトコードとは、Ethereum Virtual Machine Code(イーサリアムバーチャルマシンコード)とも呼ばれます。

Ethereum Virtual Machine Codeとは、Ethereum(イーサリアム)仮想マシンで実行するためのコードという意味です。Ethereum Virtual Machine CodeはEVM Codeと略されることもあります。

Ethereum Virtual Machine Code自体は低級の機械言語と呼ばれます。

低級というのは、プログラムとしての水準が低いという意味ではなく、プログラムソースコードをみた時に、人間が理解しづらいものを低水準の言語と言います。

機械言語というのは、コンピューターがプログラムソースコードを読み取った際、そのまま実行することが出来る状態の言語を言います。

機械言語と呼ばれる、コンピューターがすぐに読み取り実行できる状態のコードをバイトコードと呼びます。

 

Ethereum Virtual Machine Codeが低級の機械言語であることに対して、Solidityは高級言語と呼ばれます。

高級言語とは、低級言語に対する言葉で、人間がプログラムソースコードをみた際、そのまま処理自体を理解することが出来る言語です。

高級言語は高水準言語とも呼ばれ、BASIC、FORTRAN、COBOL、C言語、C++、Java、Pascal、Lisp、Prolog、Smalltalk等の種類があります。高級言語を実行する場合、コンパイルという処理が必要になります。

Solidityをコンパイルする場合は、solcと呼ばれるSolidityコンパイラを介することで、コンピューターで実行可能なEthereum Virtual Machine Codeに変換することができます。

solcはSolidity標準で利用できるコンパイラですが、別にRemix(browser-solidity)というコンパイラも存在します。

Remix(browser-solidity)は、開発環境としても利用できるコンパイラのため、コマンドラインに慣れないエンジニアにとっては、solcよりも使用しやすいのが特徴です。

 

[PR] 無料で現役エンジニアから学べる

Solidityの特徴

Solidityは、JavaScriptの文法に似たプログラミング言語です。

その為、JavaScriptの実装経験があれば、Solidityを利用したEthereum(イーサリアム)上で動作するプログラムを作成することが可能という特徴があります。

JavaScript自体は、初心者でも習得しやすい言語と言えます。

JavaScriptの実行自体にはWebサーバー等不要で、Google Chrome等のブラウザとメモ帳等のテキストエディタさえあれば、実装も実行も可能です。

そういう意味でもJavaScriptに似ているSolidityを利用できるということは、プログラミング経験が浅いエンジニアにとっても、学習しやすいといえます。

 

田島悠介

Solidityという言語についての大まかな概要だね。

大石ゆかり

JavaScriptを学習していると比較的扱いやすい言語ということですね。

田島悠介

そうだね。C++やPythonを習得していても理解しやすいと思うよ。実際にどのように構成していくかも見てみようか。

 

Solidityの言語仕様

Solidityの言語仕組みを理解するために、簡単なコードを書いてみましょう。

基本のSolidityの文法

contractで宣言するソースコード

contract Contract名 {
   //処理を記述するブロック
}

解説

Solidityでは、contractと宣言することで、使用するContract名を宣言することができます。

この宣言の{ }で囲まれたブロックにSolidityで実際に処理するコード記載します。

なお、ここで言うブロックとは、ブロックチェーンのブロックではなく、ソースコード内での領域を意味するブロックです。

 

Hello World!!を表示するSolidityのコード

ソースコード

contract HelloWorld {
  function hello() constant returns (string retVal) {
    return "Hello World!!";
  }
}

表示結果

Hello World!!

このプログラムはhello( )という関数が呼び出された場合、表示結果のようにHello World!!を表示するプログラムです。

関数とは、便利な機能をひとまとめにしたプログラムの集まりです。

今回は、Hello World!!を表示するという部分を便利な機能と考え、関数化しています。

Solidityと文法が似ているJavaScriptの記事も合わせて参考にしてみてください。

 

解説

1行目の、contract HelloWorld {では、Solidityのcontract名としてHelloWorldを宣言しています。

2行目の、function hello( ) constant returns (string retVal) { で指定された値を返すことを意味しています。

function hello( ) でhello関数を定義しています。

constant は定数を意味します。

returnsは(string retVal) {を呼ぶことで、3行目の値を返します。

値を返すというのは、関数で戻り値と呼ばれ、関数を呼び出した結果、処理が実行された答えのようなものです。

3行目の、return “Hello World!!”;では、Hello World!!を返す処理をしています。

4行目の、}では2行目の処理を終了しています。

5行目の、}では1行目の処理を終了しています。

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

Solidityの機能

Solidityを使用することでEthereum(イーサリアム)上で何をするかと言うことですが、代表的な利用方法としてスマートコントラクトを実装することができます。

スマートコントラクトとは、ブロックチェーン上で契約関係のプログラムを動作させることができるという特徴があります。

スマートコントラクト以前のブロックチェーンでは、仮想通貨の送受金に関する情報のみをデータとして記録していました。

それだけでも、非常に有用ですが、この送受金の情報以外に、送受金に伴う契約内容を連動させることで、不動産契約や売買契約への活用が可能となります。

そして、スマートコントラクトをいち早く採用したブロックチェーンがEthereum(イーサリアム)です。

Solidityには、truffleやopen-zeppelinというスマートコントラクト開発フレームワークも用意されている点でも、スマートコントラクトを通じたブロックチェーンの学習言語としても環境が整っているといえます。

 

他のコントラクト開発言語

Vyper

VyperはPythonに似た文法で利用することが出来る言語でSolidityと同じくEthereum上でスマートコントラクトを実装することができます。

Vyperは、セキュリティを高め、エンジニアにとっても書きやすく読みやすいという特徴を持っています。

ただし、2018年初頭の段階では開発途中という印象ではあります。

Vyper

 

今回は、Solidityについて解説しました。

スマートコントラクトの実装をやってみたい方は、Solidityを使うのが今は一般的でしょう。これから多くの個人や企業が使う技術になる可能性が高いので、理解しておくと今後役立つでしょう。

 

田島悠介

Solidityの実際の記述例と、具体的な機能について説明したよ。

大石ゆかり

スマートコントラクトは契約を自動化するものでしたね。ちなみに開発環境はどういうものがあるんでしょうか?

田島悠介

すぐに触ってみたいならRemixというブラウザ上で使えるものもあるんだ。興味があったら調べてみよう。

大石ゆかり

そうですね、また見てみます。ありがとうございました!

 

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する