Ethereum-Developer-Tools-List 解説第二回

Ethereum-Developer-Tools-List 解説第二回

はじめに


ConsenSys社から、イーサリアム開発用ツールリスト(GitHub)が公開されています。ConsenSys社は、ブロックチェーン技術として主にイーサリアムベースの分散型アプリケーションの開発を幅広く手掛ける企業で、UPort、Balanc3、Gnosis、Singular等の開発に寄与するなど、世界規模のブロックチェーンベンチャー企業です。

本記事では、そんなConsenSys社が公表したイーサリアム開発に使用するツールを把握する事で、世界のイーサリアム開発手法や使用されているツール類のトレンドを学ぶ一助となるべく作成しました。 

第2回となる今回はフロントエンド Ethereum APIからブートストラップ/out of boxツールまでを紹介します。

本記事は、過去にコンセンサス・ベイスが主宰していたオンラインサロンの記事です。記事は2017年~2018年にかけて執筆されたため、一部は、既に古くなっている可能性があります。あらかじめご了承ください。

フロントエンド Ethereum API

Web3.js


web3.jsは、イーサリアムのブロックチェーンにアクセスするためのAPIです。JavaScriptで実装されており、ブラウザなどのクライアントからのEtherの送金、スマートコントラクトへのデータ読み書き、スマートコントラクトの作成などの操作が可能になります。node.jsで利用される事が多いです。

web3.js – github

https://github.com/ethereum/web3.js/

Eth.js


Eth.jsは、web3.jsの代替ライブラリです。web3.jsの代替=フォークしたプロジェクトと言うわけではなく、個別に独立したライブラリとなっています。Eth.jsは軽量であること、非同期処理のみであること、16進数のみを扱う設計になっていること、ブラウザ用に最適化されておりファイルサイズが僅か104kbと軽量である、といった特徴があります。

ethjs – github

https://github.com/ethjs/ethjs

(参考)

  New to Ethereum Development? Don’t forget EthJS =D : ethdev

Ethers.js


Ether.jsは、イーサリアムブロックチェーンとそのエコシステムと相互通信することを目的としたライブラリです。web3.jsが実行できることはether.jsでも行なうことができます。特徴として「安全な状態で自分の秘密鍵を自クライアント上に保管できる」や「デフォルトでENS(Ethereum Name Service)の設定がサポートされている」などが挙げられます。

ether.js – github

https://github.com/ethers-io/ethers.js/

Web3Wrapper


Web3Wrapperは、イーサリアムノード用のJSON-RPCクライアントで、TypeScriptで書かれた、web3.jsに取って代わるtype-safeな仕様になっているラッパーライブラリです。一貫性がありクリーンで、JavaScriptのPromise機能をベースとしたライブラリの提供を行なっています。

@0xproject/web3-wrapper – github

https://0xproject.com/docs/web3-wrapper#introduction

Ethereumjs


ethereum.jsは、イーサリアム JavaScript コミュニティで、web3.jsでカバーしきれていない部分を補うライブラリを開発しています。例えばethereum.jsのライブラリであるethereum-utilは様々なユーティリティメソッドを提供したり、ehtereum-txは自らトランザクションを作成・署名するときに利用するメソッドを提供しています。

EthereumJS – github

https://github.com/ethereumjs/

Drizzle


フロントエンド開発用ライブラリであるDrizzleは、Dapps開発でのエンジニアの負担を軽減します。DrizzleはRedux(JavaScript状態管理ライブラリ)を使用しており、Reduxの開発用ツールが利用できます。Drizzle Truffle Boxはスマートコントラクト開発に必要なものを取り揃え、その中には「drizzle」、「drizzle-react」、「drizzle-react-components」といったDrizzleの機能が含まれています。

Drizzle-box – github

https://github.com/truffle-box/drizzle-box

Subproviders


SubprovidersはLedger Nano S supportを加えるのに役立つLedgerSubproviderを含むいくつかの有用なweb3 subprovidersのことを指します。そのSubprovidersは0xプロジェクトから派生していることから0x.jsに特化していると想像する方もいると思いますが、0x.jsに限らず、どのアプリケーションにもレジリエンシー(対応力・復旧力)やユーザービリティーを提供できハードウェアウォレット機能もサポートしています。

@0xproject/subproviders – github

https://github.com/0xProject/0x-monorepo/tree/v2-prototype/packages/subproviders

web3-webpacked


MetaMask、Trustなどによってブラウザに導入するグローバルweb3オブジェクトを安全に管理するための堅牢な管理フレームです。Webpackedはインスタンス化されたweb3.jsインスタンスを公開、現在のネットワークやアカウントの状態を最新に保ちながら変数にその状態を格納したりします。また、EtherとERC20の残高を呼び出したり、npmパッケージを公開したりする汎用的ユーティリティ関数も含んでいます。

Web3: Webpacked – github

https://github.com/NoahHydro/web3-webpacked

Vortex


vortexは、DApp対応したRedux(JavaScript状態管理ライブラリ)のStore(Reduxオブジェクトの一種)で、トランザクションやスマートコントラクトなどを処理できます。Reactの利用が容易になりDappsの反応度が上がりweb3でのリクエスト量の減少を可能にします。 Vortexを利用することで、トランザクションの状態を正確に追跡できたり、Reactコンポーネントを通して全てのデータにアクセスすることができます。

vortex – github

https://github.com/Horyus/vortex

強い静的型付け言語 elm-ethereum


elm-ethereumは、web3.jsのようにイーサリアムブロックチェーンと相互通信を行ないます。また、Metamaskなどのwebウォレットに接続したり、トランザクションの生成も可能です。

elm-ethereum – github

https://github.com/cmditch/elm-ethereum

purescript-web3


purescript-web3は、purescriptのイーサリアムノードとの相互通信を可能にするライブラリです。全体数の中で大体のweb3APIのエンドポイントをカバーすると、トランザクションの送信やブロックチェーンデータへの要求が安定します。また、 purescript-web3-generatorを利用すると、スマートコントラクトabiからライブラリを生成することが可能になります。

purescript-web3 – github

https://github.com/f-o-a-m/purescript-web3

バックエンド Ethereum APIs

Web3.py


web3.jsのpython版です。web3はその名の通りJavaScriptで使うAPIですが、Web3.pyを使う事で、pythonでイーサリアムにアクセスできます。

Web3.py – github

https://github.com/ethereum/web3.py

Web3.php


web3.jsのphpバージョンです。web3.phpを利用することで、phpでイーサリアムネットワーク及びそのエコシステムにアクセスすることが出来ます。

web3.php – github

https://github.com/sc0Vu/web3.php

Ethereum-php


Ethereum PHPは、PHP-7.1で Ethereum JSON-RPC APIに接続するためのインターフェースです。現時点では全てのデータタイプをサポートすることは出来ていません。また、Ethereum-PHPは現時点で読み込みのみ可能となっており、Ethereumブロックチェーンに格納されているデータを取得することだけが出来る状態です。

Ethereum-PHP – github

https://github.com/digitaldonkey/ethereum-php

Web3j


web3jは、Web3 Java Ethereum Dapp APIの略称です。web3jはスマートコントラクトとの連動、イーサリアムクライアントノードとの同期のために必要になるAndroidライブラリです。Javaスマートコントラクトラッパーの自動生成やJavaのネイティブコードからスマートコントラクトを呼びだすことが出来ます。また、ENS(Ethereum Name Service)に対応しています。

web3j: Web3 Java Ethereum Ðapp API – github

https://github.com/web3j/web3j

Nethereum


web3.jsの.NET版です。Visual Studio を使用したマイクロソフト.net開発で、C#、Visual Basic 等でイーサリアムにアクセスできます。

Nethereum

https://nethereum.com/

Ethereum.rb


Ethereum.rbは、Ethereumのruby版ライブラリです。rubyから可能な限り高速で容易にイーサリアムブロックチェーンとの通信を可能にすることを目標として掲げています。特徴は「rubyのオブジェクトマッピングをSolidityに適用」や「ruby-eth gemでトランザクションに署名」などが挙げられます。

Ethereum Ruby library – Ethereum.rb – github

https://github.com/EthWorks/ethereum.rb

Web3.hs


Web3.hsは、JSON RPCを実行できるイーサリアムと互換性のあるHaskell APIです。関数型プログラミング言語 Haskell でWeb3の機能を使いイーサリアムにアクセスできます。

web3: Ethereum API for Haskell

http://hackage.haskell.org/package/web3

KEthereum


KEthereumは、Ethereum用のKotlinライブラリです。2011年発表された静的型付けのオブジェクト指向プログラミング言語 Kotlinでイーサリアムにアクセスできます。KEthereumはまだ完成版ではないですが、異なるアプリケーション間で共通のイーサリアムコードを”Don’t Repeat Yourself(DRY)”に則して共有することが可能です。

Kotlin library for Ethereum – github

https://github.com/walleth/kethereum

Pyethereum


Pyethereumは、Ethereumでの開発を支援するpythonのコアライブラリです。クライアントでありsolidityのようにスマートコントラクトを書くことはできません。pyethereumはsolidity、vyper、serspentで記述されたコントラクトをテストするのに有効です。Pyethereumはブロックチェーンに必要なロジックを取り揃えているので、ブロックチェーンを利用して何か実証したい場合などでpyethereumの強みを生かすことができます。

pyethereum – github

https://github.com/ethereum/pyethereum

Eventeum


Eventeumは、イーサリアムスマートコントラクトのイベント機能とバックエンドマイクロサービスとのブリッジとして機能します。Eventeumは指定のイベントがイーサリアムネットワークから発信されたら、それらのイベントを自分のミドルウェアレイヤーにブロードキャストしてくれます。それにより、明確なSoC(separation of concerns、関心事の分離)を提供し、自分のマイクロサービスでイベントの取得のためにイーサリアムノードへアクセスする必要が無くなります。

Eventeum – github

https://github.com/ConsenSys/eventeum

Ethereumex


Ethereumexは、プログラミング言語 Elixir を使ってイーサリアムブロックチェーンにアクセスすることが出来るJSON-RPCクライアントです。Elixir(エリクサー)は、古くから知られる堅牢な実行環境Erlang(アーラン)の仮想マシン上で動作するRubyライクなプログラミング言語です。汎用用途でElixirを古くから採用している企業も多く、そのままイーサリアムへアクセスできるのは魅力です。

Ethereumex – github

https://github.com/exthereum/ethereumex

EthContract


EthContractは、イーサリアムスマートコントラクトのクエリー実行に役立つヘルパーメソッドです。リクエスト処理のためにJSON-RPCを利用します。functionにウォレットアドレスの残高情報を取得するために必要な”account_balance(map)”や、呼び出されたスマートコントラクトの復号化に利用する”decode_data(data, abi, method, signatures_key \ “inputs”)”などがあります。

EthContract – github

https://github.com/AgileAlpha/eth_contract

ブートストラップ/out of box (すぐに使える)ツール

Truffle boxes


Truffle Boxesは、Dapps開発のテンプレート集です。Dappsを開発する際に必要なコントラクトやライブラリ、フロントエンドのビュー実装などが多数公開されており、これらを利用することで共通処理部分などの実装の負担を下げ、「どんなDappsを作るか?」という本来の目的にフォーカスすることができます。Dapps開発のチュートリアル的な「pet-shop」「tutorialtoken」や、代表的なフロントエンドフレームワークであるReact、Vue.js、Angular.jsを使ったサンプルなどもあり、これからDapps開発を学びたい人の足がかりとしても有用でしょう。

TRUFFLE BOXES – truffleframework

http://truffleframework.com/boxes/

Local Raiden


(※第一回記事と同じ内容です)Local Raiden は、送金速度が遅い等のスケーラビリティー問題を解決すべく開発が進んでいるプロジェクトの一つ Raiden Network をテストする為のローカル環境です。Dockerコンテナを使い簡単にテストネットを構築する事で、Ropsten Testnet を使うよりも簡単に実験出来る事を目標としています。但し、Raidenは開発者プレビュー段階にある為、利用には注意が必要です。

ConsenSys / Local-Raiden

https://github.com/ConsenSys/Local-Raiden

Private networks deployment scripts


(※第一回の記事より加筆) private-networks-deployment-scriptsは、Dockerコンテナを使って簡単にPoA(Proof of Authority)プライベートネットワークを構築する事ができるスクリプトです。PoAはマイニングを行わないコンセンサスアルゴリズムです。高速な承認を行うプライベートネットワークを素早く構築し、開発効率を高める事が期待できます。イーサリアムプライベートPoAネットワークでインストールや設定などの作業をあまり行わずに使用できます。Vagrant仮想マシーン、Dockerコンテナの二つのサンドボックスがサポートされており、そこで開発環境の構築やプライベートネットワークの初期化や動作を行なえます。private-networks-deployment-scriptsは現状開発中です。

ConsenSys / private-network-deployment-scripts – github

https://github.com/ConsenSys/private-networks-deployment-scripts

Parity Demo-PoA Tutorial


Parity Demo-PoA Tutorialは、Parityノード二つによるPoAチェーンテストを構築するために必要なことをステップバイステップに学べるチュートリアルです。チュートリアルでは、ローカルで二つのParityノードを立ち上げ、その二つのノード間でトランザクション送受信を行なう方法を学べます。

Demo PoA-Tutorial – Wiki

https://wiki.parity.io/Demo-PoA-tutorial.html

Local Ethereum Network


(※第一回記事と同じ内容です)プライベートPoWネットワークを利用可能とするための、すぐに使える構築手順です。gethのインストール、イーサリアムノードの初期化、他のイーサリアムノードとの通信、EOAの作成、マイニング、etherの送金、他のローカルネットワークノードへの接続方法が書かれています。

ConsenSys / local_ethereum_network

https://github.com/ConsenSys/local_ethereum_network

Kaleido


(※第一回記事と同じ内容です)Kaleido は、企業向けブロックチェーン SaaS サービスです。Enterprise Ethereum (Ethereum互換の企業向けスマートコントラクト技術) を採用しており、企業独自のブロックチェーンを簡単に構築でき実証実験を行う事が出来ます。

Kaleido

https://kaleido.io/

Cheshire


Cheshire(チェシャ)は、truffle boxで利用できるCryptoKittiesのWeb APIとスマートコントラクトのサンドボックスです。CheshireはDappsであるCryptoKittiesの迅速な開発を可能にします。特徴として、開発環境の構築・Dappsのブートストラッピング用のNode.jsフレームワークがサポートされています。

Cheshire – github

https://github.com/endless-nameless-inc/cheshire

Aragon CLI


Aragon CLI(Command Line Interface)は、Aragonアプリケーションの構築に必要なCLIツールです。Aragon は非中央集権型DAOプロジェクトの一種であり、Aragon CLI環境では、パッケージ管理システムAPM (Aragon Package Management protocol)が整備されてアップグレード性を確保しています。また、APM へアクセスする為のライブラリ apm.js 等も用意されています。

CLI usage – Aragon Developer Potal

https://hack.aragon.org/docs/cli-usage.html

ColonyJS


ColonyJSはColonyネットワークのスマートコントラクトとやりとりするためのAPIを提供しているJavaScript クライアントになります。ColonyJsはMonorepoベースのプロジェクトです。Monorepoとは共通のモジュールや開発環境の共有などのために使用される共通リポジトリのことです。

colonyJS – github

https://github.com/JoinColony/colonyJS

まとめ


今回は、ethereum-developer-tools-listの中から、Frontend Ethereum APIs ~ Bootstrap/out of box tools 迄をお届けしました

参考資料


ConsenSys/ethereum-developer-tools-list

https://github.com/ConsenSys/ethereum-developer-tools-list

免責事項


本記事に掲載されている記事の内容につきましては、正しい情報を提供することに務めてはおりますが、提供している記事の内容及び参考資料からいかなる損失や損害などの被害が発生したとしても、弊社では責任を負いかねます。実施される際には、法律事務所にご相談ください。

技術・サービス・実装方法等のレビュー、その他解説・分析・意見につきましてはblock-chani.jp運営者の個人的見解です。正確性・正当性を保証するものではありません。本記事掲載の記事内容のご利用は読者様個人の判断により自己責任でお願いいたします。

ブロックチェーン学習に最適の書籍の紹介


図解即戦力 ブロックチェーンのしくみと開発がこれ1冊でしっかりわかる教科書

本書は、ブロックチェーン技術に興味を持ったエンジニアや、その仕組みを学び、自分の仕事に活かしたいビジネスパーソンを対象にして、ブロックチェーンのコア技術とネットワーク維持の仕組みを平易な言葉で解説しています。この本を読んだうえで、実際にコードを書くような専門書、ブロックチェーンビジネスの解説書を読むことで、理解度が飛躍的に高まるでしょう。(はじめにより)

会社紹介


弊社(コンセンサス・ベイス株式会社)は、2015年設立の国内で最も古いブロックチェーン専門企業です。これまでに、大手企業の顧客を中心に、日本トップクラスのブロックチェーンの開発・コンサルティング実績があります。ブロックチェーンに関わるビジネスコンサル・システム開発・教育・講演などご希望でしたら、お気軽にお問い合わせください。

会社ホームページ

https://www.consensus-base.com/

ブロックチェーンの専門企業で働いてみませんか?

当サイトを運営するコンセンサス・ベイス株式会社では、エンジニア、プロジェクトマネージャー、ライターなど、様々なポジションで一緒に働いてくださる仲間を募集しています。

ブロックチェーン業界にチャレンジしてみたいあなたのご応募をお待ちしております!

イーサリアム(Ethereum)カテゴリの最新記事