Ethereum系Dapps(Decentralized Applications)を開発しようとすると、Truffleという単語を耳にすると思います。今回はTruffleとその仲間たちについてご説明します!
Truffle Suites
Truffle Suiteとは、TruffleとGanacheとDrizzleの総称です。
これから、それぞれ何をしているのか見ていきましょう。
Truffle
公式には次のように書かれています。
A world class development environment, testing framework and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM), aiming to make life as a developer easier.
つまり、世界クラスの環境開発で、Ethereum Virtual Machineを使って超簡単にテストとかもできるってことです。(雑)
Truffleの主な機能は次の3つでしょう。
- Compile:Solidityで書かれたスマートコントラクトをコンパイルします
- Migrate:コンパイルされたスマートコントラクトをデプロイします
- Test:デプロイされたスマートコントラクトの機能をテストできます。
この3つを、”truffle compile” “truffle migrate” “truffle test” みたいに連続するコマンドで次々にできて楽だね、ってことです。
しかし、別にTruffleを使わないとできないことはありません。Web3.jsというJavascriptライブラリ(とsolc, solidity compiler)を使えばコンパイルもデプロイも出来ます。MochaなどのJavaScriptのテスティングフレームワークを使えばWeb3と組み合わせてテストもできます。あくまでそれらが簡単にできる、ということです。
Ganache
Ganacheとは…
A personal blockchain for Ethereum development you can use to deploy contracts, develop your applications, and run tests. It is available as both a desktop application as well as a command-line tool (formerly known as the TestRPC). Ganache is available for Windows, Mac, and Linux.
これはわかりやすいですね!自分だけのブロックチェーンを簡単に作れるよ、という話です。
- 本物のブロックチェーンにデプロイするのはお金かかるし、時間かかって大変…
- かといってテストネットへのデプロイもFaucetでテストETHもらったり面倒…
というときに、Ganacheを使えば簡単に自分だけのブロックチェーンを作れます。マイニング間隔を15秒から好きな値に短縮できるので、マイニング待ちもなくなって開発が捗ります。Cli版もデスクトップアプリもあるので、わかりやすいです。
Drizzle
DrizzleとはEthereum networkの状態とRedux Stateを常に同期するライブラリです。
ReactとRedux stateは同期するので、ReduxとEthereumが同期すれば、簡単にリアルタイムDappsが作れちゃう!というライブラリですね。しかし、注意が必要なのは、Drizzleは比較的新しいツールであることもあって、バグが多いです。
こちらも同様なことをWeb3で実装できるのであえてDrizzleを使う必要はないように感じます。
こちらがTruffle Suiteのサイトです。上記2つの引用もこちらが出典となります。
スイーツ豆知識
なんでスイーツ?と思うかもしれませんが、Truffleはトリュフチョコレート、Ganacheはガナッシュチョコレート(いわゆる生チョコ)です!
Drizzleは「霧雨、小雨」という意味ですが、液体を細く垂らすこともdrizzleといいますので、チョコレートに細い線のデコレーションのために別のチョコレートをかけることをdrizzleといいます。スタバとかで上にチョコレートやキャラメルを細い線でかけてくれたりしますよね?あれもdrizzleです!よく見ると、Drizzleのロゴにも細い線が書かれていますよ