Dapps フレームワーク「truffle」

木内智史之介(シャッチョー)
ミンカさんけっこんしてくださいおねがいします(ズザー SEGAさん、DIVAの筐体ください(ズザー

先日、「Solidityの開発環境を構築する」という記事を書きました。
そのときは、ethereum印のフレームワーク「populus」を選んでみましたが、どうも色々調べていると、Truffle というフレームワークが現段階では最有力のようです。

Populusと何が違うのか、使い心地をサラッと確かめてみましょう!

インストール

trufflenpmで簡単にインストールできるようなのですが、やはりここはdockerで用意したいと思います。
populusと違って、いくつか使えそうなdockerイメージがすでにあるのですが、勉強も兼ねているので、自ら用意します。

docker/truffle/Dockerfile
FROM node:8-alpine
RUN npm install -g truffle
ENTRYPOINT ["truffle"]
docker-compose.yml
services:
truffle:
# 上記のDockerfileを DockerHub に上げてあります
image: 8823scholar/truffle
working_dir: /app
volumes:
- ./src:/app:cached
$ docker-compose run truffle
Truffle v4.1.13 - a development framework for Ethereum
Usage: truffle <command> [options]
Commands:
init Initialize new and empty Ethereum project
compile Compile contract source files
migrate Run migrations to deploy contracts
deploy (alias for migrate)
build Execute build pipeline (if configuration present)
test Run JavaScript and Solidity tests
debug Interactively debug any transaction on the blockchain (experimental)
opcode Print the compiled opcodes for a given contract
console Run a console with contract abstractions and commands available
develop Open a console with a local development blockchain
create Helper to create new contracts, migrations and tests
install Install a package from the Ethereum Package Registry
publish Publish a package to the Ethereum Package Registry
networks Show addresses for deployed contracts on each network
watch Watch filesystem for changes and rebuild the project automatically
serve Serve the build directory on localhost and watch for changes
exec Execute a JS module within this Truffle environment
unbox Download a Truffle Box, a pre-built Truffle project
version Show version number and exit
See more at http://truffleframework.com/docs

うーん、簡単に入ってしまった。最近は環境構築が楽でいいですね…。docker最高!

そして、この出力を見る限り…、poppulusより色々な事ができそう…!!(歓喜)

初期化

よーし、早速プロジェクトの作成をして、dappsの開発の最初の一歩を踏み出す事にしましょう!

$ docker-compose run truffle init
Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!
Commands:
Compile: truffle compile
Migrate: truffle migrate
Test contracts: truffle test

テスト

ものは試しにテストを走らせてみると…

$ docker-compose run truffle test
Compiling ./contracts/Migrations.sol...
0 passing (2ms)

うん、実行できてる…!中身は空だけど(笑)

ただ、./contracts/Migrations.sol がコンパイルされてましたね。
populusの時は、コンパイルのためにわざわざsolcをインストールしたわけですが、今回は特に入れていません。
どうやってコンパイルしてるんだろう?

solc-js

ほーん。こいつか。 truffleインストール時同時に入るわけですね。なるほど。これは、色々populusより捗りそうだ。

振り返り

今回は、Dapps開発用のフレームワーク「Truffle」の表面をサラッとなでるだけですが触ってみましたが、すごくいい感じですね…!
パッとした印象の話をしてしまうと、現段階では色々truffleの方が優れていそうですね…!

しばらくは、Truffleを使い込んでみようと…「そう思いますねぇ!