DApps技術入門
最終更新: 2026年2月25日
分散型アプリケーション(dapp)とは、スマートコントラクトとフロントエンドのユーザーインターフェイスを組み合わせ、分散型ネットワーク上に構築されたアプリケーションです。 イーサリアムでは、スマートコントラクトはオープンAPIのようにアクセス可能で透明性があるため、他の人が書いたスマートコントラクトを含めることもできます。
前提条件
dappsについて学ぶ前に、ブロックチェーンの基本を学び、イーサリアムネットワークとその分散化の仕組みについて読む必要があります。
dappの定義
分散型アプリ(Dapp)は、分散型ピアツーピアネットワーク上で稼働するバックエンドコードを内包しています。 これはバックエンドコードが中央集権的なサーバ上で実行されているアプリとは対照的です。
分散型アプリ(Dapp)は、普通のアプリと同様に、任意の言語で書かれたフロントエンドコードとユーザーインターフェースを持ち、バックエンドを呼び出します。 さらに、フロントエンドはIPFS (opens in a new tab)のような分散型ストレージでホストすることも可能です。
- 分散型 - dappsは、特定の個人やグループが管理することのない、オープンでパブリックな分散型プラットフォームであるイーサリアム上で動作します
- 決定的 - dappsは、実行される環境に関係なく、同じ機能を実行します
- チューリング完全 - dappsは、必要なリソースがあれば、あらゆるアクションを実行できます
- 分離性 - dappsはイーサリアム仮想マシンとして知られる仮想環境で実行されるため、スマートコントラクトにバグがあっても、ブロックチェーンネットワークの正常な機能を妨げることはありません
スマートコントラクトについて
分散型アプリ(Dapp)の説明をするには、まずスマートコントラクトから始める必要があります。適当な言葉が見つからないため、スマートコントラクトは分散型アプリのバックエンドと考えてください。 詳細な概要については、スマートコントラクトに関するセクションを参照してください。
スマートコントラクトは、イーサリアムブロックチェーン上に存在し、プログラムされた通りに実行されるコードのことです。 一度ネットワークにデプロイされたスマートコントラクトを変更することはできません。 分散型アプリ(Dapp)は、個人や企業ではなく、コントラクトに書かれたロジックのみによって制御されるため、分散化することができます。 これはまた、スマートコントラクトを非常に慎重に設計し、徹底的にテストしなければならないことも意味しています。
dapp開発のメリット
- ゼロダウンタイム – スマートコントラクトがブロックチェーンにデプロイされると、ネットワーク全体で、コントラクトと対話しようとするクライアントに常にサービスを提供できるようになります。 そのため、個々の分散型アプリを対象としたサービス拒否攻撃を行えない。
- プライバシー – dappをデプロイしたり、dappと対話したりするために、実社会の身元情報を提供する必要はありません。
- 検閲耐性 – ネットワーク上の単一の主体が、ユーザーによるトランザクションの送信、dappsのデプロイ、ブロックチェーンからのデータの読み取りをブロックすることはできません。
- 完全なデータ整合性 – 暗号プリミティブにより、ブロックチェーンに保存されたデータは不変であり、議論の余地がありません。 トランザクションやすでに公開されているその他のデータを偽造することはできない。
- トラストレスな計算/検証可能な動作 – スマートコントラクトは分析可能で、中央機関を信頼する必要なく、予測可能な方法で実行されることが保証されています。 従来のモデルではトラストレスではなく、例えばオンラインバンキングシステムを使う場合などは、金融機関が個人の財務データを悪用したり、記録を改ざんしたり、ハッキングの被害に合わないと信頼しなくてはならない。
dapp開発の欠点
- メンテナンス – ブロックチェーンに公開されたコードやデータは修正が困難なため、dappsのメンテナンスは難しくなることがあります。 古いバージョンでバグやセキュリティ上のリスクが特定されている場合でも、デベロッパーがデプロイされた分散型アプリ(または分散型アプリが保存する基盤となるデータ)を更新することは困難。
- パフォーマンスのオーバーヘッド – パフォーマンスに大きなオーバーヘッドがあり、スケーリングが非常に困難です。 イーサリアムが目指すセキュリティ、完全性、透明性、信頼性のレベルを達成するために、すべてのノードが全トランザクションを実行および保存する。 これに加えて、プルーフ・オブ・ステークのコンセンサスにも時間がかかる。
- ネットワークの混雑 – 1つのdappが計算リソースを使いすぎると、ネットワーク全体が滞ってしまいます。 現在、1秒間に約10~15件のトランザクションのみ処理可能だが、それ以上のスピードでトランザクションが送られてくると、未確認のトランザクション数がすぐに膨らむ。
- ユーザーエクスペリエンス – 平均的なエンドユーザーにとって、真に安全な方法でブロックチェーンと対話するために必要なツールスタックを設定することは難しすぎる場合があるため、ユーザーフレンドリーなエクスペリエンスを設計するのはより困難になる可能性があります。
- 中央集権化 – イーサリアムのベースレイヤー上に構築された、ユーザーフレンドリーで開発者フレンドリーなソリューションは、結局のところ中央集権的なサービスのように見えてしまう可能性があります。 例えば、鍵やその他の機密情報をサーバ側に保存したり、集中管理されたサーバを使ってフロントエンドを提供したり、重要なビジネスロジックをブロックチェーンに書き込む前にサーバで実行することになるため、中央集権化されたアプリと類似してしまう場合がある。 中央集権では、従来のモデルに対するブロックチェーンのメリットの多くを失ってしまう。
映像で学びたい場合
dappsを作成するためのツール
Scaffold-ETH - スマートコントラクトに適応するフロントエンドを使用して、Solidityを素早く試せます。
Create Eth App - 1つのコマンドでイーサリアム搭載アプリを作成します。
One Click Dapp - からdappのフロントエンドを生成するFOSSツールです。
Etherflow - イーサリアムデベロッパーがノードをテストし、ブラウザからRPCコールを作成・デバッグするためのFOSSツールです。
thirdweb - あらゆる言語のSDK、スマートコントラクト、ツール、web3開発のためのインフラストラクチャです。
Crossmint - スマートコントラクトのデプロイ、クレジットカード決済やクロスチェーン決済の有効化、APIを使用したNFTの作成、配布、販売、保管、編集を行うための、エンタープライズグレードのweb3開発プラットフォームです。
参考リンク
- dappsを探索する
- Web 3.0アプリケーションのアーキテクチャ (opens in a new tab) - Preethi Kasireddy
- 分散型アプリケーションへの2021年ガイド (opens in a new tab) - LimeChain
- 分散型アプリとは? (opens in a new tab) - Gemini
- 人気のdapps (opens in a new tab) - Alchemy
役に立つコミュニティリソースを知っていますか? Edit this page and add it!