【Solidity入門#0】できること・特徴から開発環境まで紹介

Published
2022-12-08
Tags

「Solidity (ソリディティ) って何ができる言語なの?」「勉強方法や開発環境について知りたい」こんな人におすすめの記事です。

この記事では次世代のインターネット技術「web3.0」の開発言語として注目されているSolidityについて、「できること」から「勉強方法」「開発環境」まで解説していきます。

最後まで読めば、Solidityの特徴がよくわかりブロックチェーンを使ったアプリ開発のスタートラインに立つことができるでしょう。


スマートコントラクト(仲介者なしの契約)を実装できる

Solidityはイーサリアムでスマートコントラクト (直訳で賢い契約) を実装するために生まれた言語です。イーサリアムとはなんぞや?と早速思った人は以下の記事を参考にしてみてください。

スマートコントラクトは契約の手続きを仲介者なしで自動化するための仕組みです。事前に契約内容をSolidityでプログラムしておくことで、条件に至ったら契約内容が自動で履行されます。

これまでのシステムでは契約を結ぶ際、信用を得るために仲介者を通す必要がありそれが一般的でした。(銀行口座の開設が良い例) しかし、スマートコントラクトを使えば、信用なしで契約を履行することが可能になります。

なぜ信用が必要なくなるのか?端的に言えばイーサリアムに代表されるブロックチェーンを使った分散型のシステムでは、取引内容がオープンであり「正しい行動をとった方が得になる」ようにデザインされているからです。

そのためお互いの顔や名前を知らなくても契約を締結し、条件に達したら実行することができるというわけです。


Dapps (分散型アプリ) が作れる

スマートコントラクトの仕組みを利用することで、中央管理者を必要としないアプリを作ることができます。

これはDApps (Decentralized Applicationの略) と呼ばれていて、ここではその代表的なものを紹介していきますね。


DEX (分散型取引所)

DEX (Decentralized EXchange) は中央管理者のいない分散型の取引所で、利用者はお互い直接取引をすることが可能。

利用の際に審査が不要で、インターネットにつながってさえいれば誰でも利用することができます。また仲介者を介さないことで手数料が安くなるというメリットがあります。

既に運用されている代表的なものにUniswapPancakeSwapがなどあります。

SolidityではERC20という規格によってトークン(仮想通貨)を発行し、自由に取引することが可能です。


NFT (Non Fungible Token) ゲーム

NFTゲームでは独自のキャラクター (代替不可能なトークン) を発行し、それをプレイヤー自身で所有することができます。

これまでのゲームでは運営がサービスを終了させてしまうとそこで手に入れたアイテムやキャラクターも無くなってしまいました。しかしNFTゲームでは自分でアイテムやキャラを所有し、必要に応じて売買したりレンタルするこができます。

SolidityではERC721という規格を利用することでトークンに唯一無二の性質を待たすことが可能になります。


Solidityの他の言語にはない特徴

Solidityは静的型付け言語に分類され、文法はJavaScriptに似ていると言われています。ここではSolidityの他のプログラミング言語にはない特徴を紹介していきます。


関数を使用するたびにガス代 (ETH) を支払う必要がある

関数を実行するのには手数料がかかり、イーサリアネットワークで使用される通貨ETH (イーサ) が必要になります。

しかし、開発段階ではテスト用のイーサが無料で使えるので、実際にお金がかかることはありません。


関数が複数の値を返せる

関数の返り値に複数の値を設定することができます。他の言語でも配列にすれば複数の値を返せますが、Solidityでは別々の変数として返すことが可能です。


Solidityの勉強方法

ここまでSolidityとはどんな言語であるかなんとなく理解できてきたかと思います。それでは具体的にどのように学習するのが良いのでしょうか?おすすめの教材を紹介していきます。


CryptoZombies

CryptoZombiesはゾンビのNFTを作りながらゲーム感覚で勉強ができるオンライン学習サイトです。

海外発のサイトですが日本語にも対応(一部未対応あり)しており、英語がわからないという人でも安心です。

ただし、プログラミング完全初心者の人からすると、難しい用語が並んでいるため、Javascriptの基本をある程度学んでからトライすると良いでしょう。


DappUniversity

DaapUniversityはブロックチェーンを活用して作るアプリDAppsの作り方が学べる海外のYouTubeチャンネルです。

Solidity入門の動画も出しているので、英語ができる人はこちらでSolidityの基礎を身につけるのも良いと思います。

また、NFTマーケットプレイスやDEXの作り方などかなり発展的な内容も学ぶことができるので、本格的なDAppsを作ってみたい人にはおすすめです。


テクそら

これからこの記事を含めたSolidityの入門シリーズの記事を出していく予定です。初心者でもわかりやすく噛み砕いて解説するよう心がけるので、ぜひ参考にしてみてください。


Solidityの開発環境

それではSolidityで開発を始めるにはどのように環境構築すれば良いのでしょうか?3つ紹介していきます。


Remix

Remixはブラウザ上でコーディング、コンパイル、実行までを行うことができます。関数を実行するために必要なガス代となるETHも事前に用意されているため、ひとまずsolidityで簡単なプログラムを組んで学習してみたいという人におすすめです。

Solidity初心者やプログラムをあまり触ったことがない人はここから始めると良いでしょう。


Hardhat、Truffle

Hardhat、TruffleともにDappsを構築するためのフレームワークです。

スマートコントラクトのコンパイル、テスト、デプロイまでを自動化、またデバッグする機能を提供しています。

最近ではTruffeよりもHardhatの方が使いやすさの観点で人気が高く、多く利用される傾向にあるようです。

本格的なDappsを構築していきたいなら利用してみてください。


Geth

Geth(Go + ethereumの造語)は、Go言語によって実装されたCUIクライアントで、イーサリアムファンデーションによって提供されています。

以下のようなイーサリアムクライアントで実行可能な機能をほぼ全て利用可能になっています。

  • ETH (イーサ) の送金
  • ステーキング (ETHの採掘)
  • トランザクション (取引履歴) の生成
  • 独自チェーンの作成

Solidtyの使い方に慣れてきたら使ってみると良いでしょう。

インストール方法は下記公式ページを参照してください。


おわりに

今回はSolidity入門第0回としてSolidityの特徴や開発環境について解説してきました。

Solidityはスマートコントラクトを記述するための言語で、分散型アプリDAppsを構築することができる言語であると説明しましたね。

もしSolidityに興味を持ったらDAppsを作るための第一歩としてさっそく自分のオリジナルトークンを発行してみましょう。

次の記事ではSolidityの基本的な使い方をRemixを使ったオリジナルトークンの作成を通して解説していきたいと思います。