Truffleとは – 全体像と開発の流れを簡単に把握しよう!

Truffleとは – 全体像と開発の流れを簡単に把握しよう!

はじめに

TruffleとはEthereumアプリケーション開発におけるデファクトスタンダードのフレームワークです。

TruffleはWeb開発のフレームワークに例えるとバックエンドの開発フレームワークのようなもので、スマートコントラクトのコンパイル・テスト・マイグレーション機能を備えています。

Truffleと一緒に用いられるツールとして、ローカル開発用のノードを構築できるGanasche, スマートコントラクトにアクセスするフロントエンドを簡単に構築するためのdrizzleがあります。これらのツールをまとめてTruffle Suitと呼びます。

また、TruffleはEthereumの開発に使える他に、エンタープライズEthereumの仕様に乗っ取りEVM上で動くQuorumの開発にも対応しています。

この記事では、Ethereum開発のフレームワークTruffleの概要について解説していきます。

Ethereum(Dapp)開発の全体像

Dappは大きく分ける次の三つの要素から成ります。

  1. スマートコントラクトを動かすノードとそのネットワーク
  2. ネットワークにデプロイされるスマートコントラクト
  3. スマートコントラクトの実行をリクエストするフロントエンド

1のノードとネットワークを主に扱うのがGanache、

2のスマートコントラクトの開発を扱うのがTruffle、

3のフロントエンドを扱うのがdrizzleとなります。

Truffle利用の流れ

Truffleは主に以下の流れで利用します。

  1. アプリケーションテンプレートの生成
  2. スマートコントラクトのコンパイル
  3. ローカル開発用ノードの立ち上げ(Ganacheでも可)
  4. スマートコントラクトのノードへのデプロイ
  5. スマートコントラクトのテスト

以下、それぞれの手順について解説していきます。

1.アプリケーションテンプレートの生成

Truffleでは、TruffleBoxというアプリケーションのテンプレートが利用できます。Truffle Boxでは仮想通貨の実装などよく利用されるアプリケーションの雛形が用意されており、雛形を元にスピーディーな開発を始めることができます。  

例えばtruffle unbox meteacoinのコマンドを実行する事で、以下の画像のようにMetaCoin.solという仮想通貨コントラクトのテンプレートを含むファイル群が生成されます。

2.スマートコントラクトのコンパイル

スマートコントラクトはSolidityで記述されますが、コントラクトがノードによって実行されるためには、EVMが実行可能な形式にコンパイルされる必要があります。`truffle compile`のコマンドで、`contract`ディレクトリ配下のSolidityファイルがコンパイルされます。

3.ローカル開発用ノードの立ち上げ

truffle developのワンコマンドで、ローカルにノードが立ち上がり、Ethを保有した10のアカウントが自動生成が発行されます。 このノードは本番のネットワークとは接続されないテスト用のノードで、先ほどコンパイルしたコントラクトをデプロイし動作をテストするために利用します。

ローカルノードの起動にはtruffle develepの代わりにGanacheを利用する事も可能です。Ganacheはローカルノードを起動するほか、UI上からノードの状況を確認し管理出来るデスクトップアプリケーションです。UIによる直感的な操作が可能なため、最初はGanacheの利用をするのがオススメします。

Ganacheのイメージ

4.スマートコントラクトのデプロイ

手順2でデプロイしたコントラクトを、手順3で立ち上げたローカルノードにデプロイします。

コントラクトのデプロイはマイグレーションによって管理されます。truffle migrateによって未デプロイのコントラクトがデプロイされます。

5.スマートコントラクトのテスト

truffle testコマンドによって記述したコントラクトをテストすることができます。 Truffleのテストコマンドでは、実行毎にノードの環境をクリーンに保つことができ、簡単にテストを実行することが可能です。

まとめ

以上がTruffleの全体像の説明でした。Truffleを活用すると、複雑なネットワークの設定やデプロイがワンコマンドで実行でき開発効率を大幅にあげることができます。

Truffleの使い方の詳細は公式サイトで解説されているので、実際に開発する際にはそちらを参考に開発をしていきましょう。

ブロックチェーンカテゴリの最新記事