EthereumでDappsを開発するときに使ったツール概論

📅 April 10, 2019

⏱️4 min read

Dappsとは

Dapps(ダップス)は分散型アプリケーションのことで、ざっくり言うと ブロックチェーンとデータをやり取りしながら動くアプリケーション のことを指します。

EthereumはDappsが開発できるブロックチェーンとして最も有名なのではないでしょうか。Ethereum以外にも、EOSTRONなどでも開発ができるようです。

通常のアプリケーションとの違いはといえば、 アプリケーションがデータの一部またはそのすべてを ブロックチェーン上で管理し、記録・読み取りをAPIを通して行うこと にあると考えています。

Dappsの開発

実際にDappsを開発しよう!と思ったときに、開発スタックなど全体像の把握に苦労したので、まとめておこうと思います。

ポンチ絵で申し訳ないですが、自分がDappsを開発するときに使用した環境は以下のようになっています。

ethereum img 1

ひとつひとつ、何をしているか簡単に説明します。

Ethereum

Ethereumは、今現在も稼働している ブロックチェーン です。

Ethereumがプラットフォームとして機能しているので、最終的に開発者はここに スマートコントラクト と呼ばれるコントラクトをデプロイすることでDappsを作り上げます。

ただ、スマートコントラクトを本番環境のEthereum(メインネット)にデプロイのには 本物のEthereum が必要になるので、一般的に開発段階では Etherehmのテストネット(Rinkebyなど) を使用するか、 Ganache(ガナシュ、後述)のようなローカル環境で利用できる開発用のブロックチェーン を利用して開発します。

スマートコントラクトを記述するのに使用するのが、 Solidity と呼ばれる言語です。

Solidity

Solidity is a contract-oriented, high-level language for implementing smart contracts. (Solidityはコントラクト志向の、スマートコントラクトを実行するための高級言語です) solidity documentation

Solidityは、つまりはEthereum用の言語です。

スマートコントラクトとよばれるコードを記述して、 非中央集権的に管理したいデータ・ロジック を定義します。

C++やPython、JavaScriptの影響を受けているようで、いずれかの言語を触ったことがあるのであれば、すぐに慣れることができるのではないでしょうか。

上記の言語で当たり前のようにするように、変数や関数の定義をすることができます。記述して、コンパイルし、ブロックチェーンにデプロイします。

ブロックチェーンのコンパイルやデプロイを便利にできるようにしてくれるのが Truffle です。

Truffle

TruffleはEthereumのDappsの開発環境で、非常に便利です。

コントラクト開発環境の初期化、テスト、コンパイル、デプロイまですべてやってくれます。

Ethereumのスマートコントラクトを開発するのであれば、ぜひ利用したいツールです。

Ganache

Ganacheは、 開発用のブロックチェーン です。

スマートコントラクトを書き終わったら、スマートコントラクトを実際にブロックチェーンにデプロイしたいですよね。でも、先程も書いたようにEthereumメインネットにスマートコントラクトをデプロイするのには 本物のEthereum がかかってしまいます。

スマートコントラクトの書き方にもよりますが、500円前後かかってしまうとイメージしてもらってかまいません。お小遣いがなくなってしまいますよね。

そこで便利なのがGanache。ローカル環境にブロックチェーンを起動でき、かつデフォルトで100ETH持ったアカウントを10つ作ってくれるので、安心して何度もブロックチェーンにデプロイすることができます。

Metamask

Metamaskは ブラウザの拡張機能として利用できるウォレット で、Dappsをブラウザで利用する際に利用します。

スマートコントラクト上にデータを記録する際や、送金する際はMetamaskを通して行われます。 Metamaskを利用することでGas代などをユーザー側が指定でき、非常に便利です。

おまけ: Web3.js

Web3.jsは、 EthereumのJavaScript API で、フロントエンド側からブロックチェーンにアクセスする際に、利用します。