プログラミング

定番フレームワークTruffle使えば簡単にdAppsがつくれますよ!

こんにちは、とだこうき(cohki0305)です

今回は、dApps のフレームワークである Truffle のチュートリアルである「ペットショップをつくる(ETHEREUM PET SHOP)」をやってみたので、作ったものと Truffle の紹介をしていきます。

dApps って難しい印象を根拠もなくもっていたのですが、少なくとも Truffle 使えばめっちゃ簡単だったので共有していきます。

チュートリアルで書いたコードは僕のリポジトリでも公開しています。
cohki0305/pet-shop – Github

Truffle(トリュフ) とは?

Truffle is the most popular development framework for Ethereum with a mission to make your life a whole lot easier.

Truffle とは、Ethereum を使ったアプリ(dApps)を作るためのフレームワークです。言語は JavaScript(node) です。

dApps を作る際は、Solidity で Contract を作り、他言語からも使いやすいようにコンパイルしたり、イーサリアムネットワークにデプロイするなど結構いろいろやることがあります。Truffle はこういった作業をそれぞれ 1 コマンドでできるように設計されており、dApp を作るのがかなり楽になります。

また、Contract はお金を扱うのでテストがおよそ必須になりますが、テストについても Truffle で実行できる環境が用意されております。

すでにいろんな会社で導入されていて、デファクトスタンダードになりそうな予感がしています。

truffle は イーサリアムの共同開発者の Joseph Lubin が立ち上げた会社である consensys 作ったフレームワークなので、dapp 作るなら truffle 使ってまず間違いないですね。

チュートリアルをやってみた

チュートリアルでは、ペットショップを作るというものが用意されています。僕は最後まで作ったのが下のやつです。

アプリのコンセプトが、ペットがほしい人が表示されている動物を Adopt (選ぶ)と、Ethereum ネットワーク上にて僕がそのペットを所有していることをブロックとして情報を残せるというものです。以下はペットの取引をする際に手数料を支払っている画面です。

対象者

対象者は、Javascript の基礎がわかっている人です。

npm を使ったことがあり、基礎的な javascript を書いたことがあれば、特に問題なく最後までできるかなという印象です。

Solidity やったことない人でも十分できるくらいに説明が親切なので大丈夫だと思います。

チュートリアルの内容

順を追って進めていけば最終的にはペットショップを作ることができるというものです。

0 から 1 を作ることを目的にするというよりは、dApps ってこんな感じで作っていくのだなーという雰囲気を知るためのものだと思ったほうが良いと思います。

実際、truffle の pet-shop という事前に用意されているコードを元にそれを修正していくのがメインの作業になっています。

以下のコマンドを打つことで、フロントエンドのコードがほぼ完成するようになっています。

説明の流れは、コードを書いて、それについての説明を読むというものです。一般的なチュートリアルの流れと一緒ですね。

ざっくりチュートリアルの内容を説明しておくと

  1. Contract を作成
  2. Contract を開発環境にデプロイする
  3. Contract をテストする
  4. デプロイした Contract をフロント(JS)で操作する

というものです。

学べるもの

このチュートリアルを通して、学べることをまとめておきますね。

  • Solidity で Contract を作成する方法
  • truffle によって Smart Contract のコンパイル、デプロイの流れ
  • truffle における Smart Contract のテスト
  • truffle のディレクトリ構成

と言った感じです。網羅的に学ぶことは出来ますが、広く浅くという感じなので、詳しくは truffle のドキュメントか他のチュートリアルを読み進めていきましょう。

感想

Truffle を使うことで、Contract を node 環境で自由に扱いやすくすることができるとわかった。これは、Contract さえ書いてしまえば、トランザクションに時間がかかること以外は dApp は普通の web アプリケーションを作るのと大して違いがないということを意味するのでは?

少なくとも、デプロイした Contract をいい感じに扱う JS ライブラリがあるので、フロントエンドの開発には苦労しなさそう。

今回のチュートリアルでは、以下のように 非同期処理のところのコードが複雑であったが、ES6 の async/await を使うことでかなりシンプルに書けるのではないかと思った…あと react や vue を使えばもっとキレイになりますね。

web エンジニアであれば誰でも dApps を作れると思うので、みなさんもチャレンジしてみてはいかがでしょうかー!

ETHEREUM PET SHOP

また、より基礎的なところ、たとえばブロックチェーンとは何?というところから、勉強したい方は以下の記事を参考にしてください。そういう方向けの Udemy でのオススメ授業を紹介しています。

あわせて読みたい
ブロックチェーン学ぶならこれ以上の教材はない!Udemyの Ethereum and Solidity が最高こんにちは、現役エンジニアのとだこうき(cohki0305)です! めっちゃいいやつ見つけた!これは良すぎる!! 最近仕事でブロック...

僕自身、Note にて dapps のチュートリアルを販売しています。JavaScript 経験者であれば、作成できるようになっているので、truffle の入門がしたい方にはオススメです。

ABOUT ME
cohki0305
25 歳にして実務経験 1 年でフリーランスエンジニアになり月収 3 倍になった男。独学のみで営業からエンジニアになった経験あり。 未経験からでもエンジニアになる術を多くの人に伝えたいと思ってます!
プログラマーになって年収1000万目指そう

学歴・職歴関係なく、数年間で年収 1000 万円を目指せる職業って何が思いつきますか??

僕はソフトウェアエンジニア(プログラマー)しか思いつかないです。

僕は実務一年でフリーランスになって年収1000万稼げるようになりましたが、別にこの業界なら普通です。学歴も職歴も関係ないです。

プログラマーを目指して稼ぎたい方は、僕が紹介している「プログラマーになるための最短ステップ 3」を是非読んでチャレンジしてください。

未経験からプログラマーになるための方法を知る