そろそろDapp開発したいなと思ってきました

DappとはEthereumを利用した分散型アプリケーションのことです

そこで、DAppのフレームワークを調べて利用するものを決めたいと思います

<調査対象のフレームワーク>
  • Meteor
  • Truffle
  • Embark
  • Dapple

詳細は下記に述べますが、イケイケな感じであればデプロイ先にSwarmを選べるEmbark、
手堅く行くならTruffle という感じでしょうかDappleは最近のリリースすぎてあまりヒットせず。。

あとSolidityも使うという観点では Truffle ですかね

ということで、Truffle で行こうとおもいます

Meteor

URL
 https://www.meteor.com/
 
提供元
 Meteor Development Group

言語
 JavaScript

動作環境
 NodeJS , MongoDB

google検索結果件数
 約 128,000 件 

特徴
・汎用的なJSのシングルページWebアプリケーションフレームワーク
・フロントエンドとバックエンドを記述できる
・フルスタックフレームワーク(サーバの構築が不要)のためすぐに開発できる
 (サーバサイドで動かす場合、Node.jsが必要)

問題点

・フロントエンドとバックエンドの同期。Meteorはクライアントサイド側でストレージ
 を持っている(フルスタックだから)ため、クライアントからバックエンド側への
 同期が可能だが、完全分離されたコントラクトの場合、イーサリアムネットワークの
 変化はクライアント側へ同期されない

・アプリがほぼMeteor依存になってしまう

その他
・Ethereumの公式walletであるMistもMeteorを利用して開発されている

参考記事
フルスタックJSフレームワークMeteorのメリット&デメリット




Truffle

URL
 http://truffleframework.com/

提供元
 CONSENSYS

言語
 JavaScript
 Solidity

動作環境
 NodeJS

google検索結果件数
 約 48,700 件 

特徴

・Ethereum のためのフレームワーク
・コントラクトのコンパイル、リンク、デプロイ、バイナリ管理機能
・MochaとChai(ユニットテストツール)の自動コントラクトテストに対応
・スクリプトによるデプロイ、マイグレーション
・公開またはプライベートネットワークに対するデプロイ管理
・外部パッケージが利用可能(NMPやEthPM)
・Truffle の独自コンソールによるコントラクト管理
・外部スクリプトの呼び出し機能


Embark

URL
 https://github.com/embark-framework/embark

提供元
 Iuri Matias

言語
 JavaScript
 EmbarkJS

動作環境
 geth (1.6.7 or higher recommended)
 NodeJS (6.9.1 or higher is recommended)
 npm

google検索結果件数
 約 215,000 件

特徴
・Dapp開発デプロイのためのフレームワーク
・サーバレスのHTML5アプリケーション

<Blockchain (Ethereum)>
・JavaScriptによるMake、自動デプロイ
・コントラクトの変化の監視させることで自動再デプロイが可能
・JavaScriptによるテスト駆動開発(TDD)
・複数のブロックチェーンの管理 (e.g testnet, private net, livenet)

<分散ストレージ (IPFS)>
・EmbarkJSを利用して分散ストレージから簡単にデータの保存、取り出しが可能
・アプリケーションをIPFSまたはSwarm上にデプロイ


IPFS:P2P型の分散型ストレージ。詳細は下記で解説されています
   https://postd.cc/an-introduction-to-ipfs/

Swarm:特定のサーバにファイルをアップロードするのではなく、
   Ethereumの仕組みを使ってP2Pによりファイルを分散配置する。
   非中央集権的な分散ストレージ
   https://qiita.com/khayate/items/ff7738436a3f1e8a4d42


<分散コミュニケーション (Whisper, Orbit)>
・P2P through Whisper または Orbit を利用することでP2Pのメッセージ送受信が可能

<Web 技術>
ReactやFoundationを組み込むことができる
・ビルドのためのツール( grunt, gulp, webpack)も利用可能
 JSのビルドツールの説明は下記に詳しくかいてありました
  https://qiita.com/bakira/items/3c4e2d10aae085767817


Dapple

URL
 https://github.com/dapphub/dapple

提供元
 DappHub

言語
 JavaScript
 Solidity

動作環境
 NodeJS

google検索結果件数
 約 48,800 件

特徴

・Dapphub が内部開発ツールとして Dapple 、 Dappsys をリリース
 Truffle や Embark に似たフロントエンドのフレームワーク
 (Dappsys はSolidity コントラクトのフレームワーク)

・パッケージ管理
・コントラクト構築
・スクリプトによるデプロイ
・中央集権データモデルは、IPFSやEthereum のコントラクトアドレスにより定義されるdappfile