2018年のDApp開発ツールまとめ


DAppsとは、Decentralized Apps(非中央集権型アプリ)の略で、主にブロックチェーン上で動作するアプリケーションのことを指します。DAppsを構築するのに最もよく使われているブロックチェーンがEthereumで、Ethereum上で動くDAppをスマートコントラクトとも呼びます。

さて、Ethereumのブロックが初めて採掘されてから早3年、スマートコントラクトを開発する環境もかなり整ってきました。それらツール群をご紹介したいと思います。

Geth

基本ですね。GethはEthereumクライアントと呼ばれる類のものです。ネットワークとブロックを同期し、Ethereumのノードをになることができます。ノードになると、チェーンからデータの読み取り(call)や、チェーンへのデータの書き込み(transaction、要手数料)ができるようになります。
同様のものに、Parityがあります。

Solidity

Ethereumとは切っても切れない関係のプログラミング言語、Solidityです。コントラクトを開発するための専用言語として設計されているのでスマートコントラクト開発の事実上の標準となっています。

Truffle

Solidityときたら次に挙がるのがTruffleでしょう。TruffleはSolidityでスマートコントラクトを開発するためのフレームワークです。コントラクトコードのコーディング、テスト、デプロイ(マイグレーション)のを簡単に行うための仕組みを備えています。Truffleがなくても開発することはできるのですが、導入することで、開発効率がぐんと上がります。

Ganache

先ほど「Gethがクライアントである」という紹介をしましたが、パブリックなチェーンと同期するクライアントではコントラクトが公開されてしまいますし、動作が遅かったり、手数料がかかってしまうため開発には向きません。一応ローカルだけでチェーンを構築するモードも備えているのですが、ブロック生成などは正規の手順できちんと行い、なかなかにリソースを食ってしまうので、開発段階では実用的ではありません。
そこで登場するのがこのGanacheです。Ganacheはローカルだけのチェーンをシミュレーションしてくれます。しかも、スマートコントラクト開発に必要無い部分を簡略化しているため、動作がとっても速いのです。また、マイニングなどせずとも、開発用にEtherの入ったアカウントを複数用意してくれたり、GUIが提供されていたりと、非常に開発を楽にしてくれます。

Drizzle

最後に紹介するのが、最近リリースされたDrizzleです。Drizzleは、ブラウザからGethなどのクライアントを経由してコントラクトに対する操作(call, transaction)を行うためのJavaScriptライブラリです。同じ役目を果たすツールとしてはweb3.jsが有名なのですが、コントラクトとの通信は基本的に非同期に行わないといけないのでコールバックやPromise地獄に陥りやすいのです。そこで登場したのがDrizzleです。Drizzleはweb3.jsをラップしたライブラリで、コントラクトの状態をローカルに持っておくことで、自分では非同期処理を行わずに素早いcallとsendを行うことができます。
もちろんweb3.jsの機能もそのまま使うことができるので、汎用性が高いです。

ちなみにTruffle, Ganache, DrizzleはConsenSysというEthereumでいろんなことをやっている会社が開発しているものです。いやー、ConsenSys様様ですよ。

ほかにもINFURA, Parity, Mythrilなど、スマートコントラクト開発のツール、サービスはたくさんあるので、興味ある方はぜひ調べてみてください。

今度これらを使ったHow To記事も書けたらなと思います。