day18. hardhat – web3フレームワーク概説 –

ITの世界において、フレームワークとは、システムを開発するための機能群を提供するソフトウェアのことを言います。web3の世界でも様々なフレームワークが提供されており、ブロックチェーン開発者にとっての開発をよりしやすくしています。 このガイドではweb3のフレームワークについて解説します。

ITの世界において、フレームワークとは、システムを開発するための機能群を提供するソフトウェアのことを言います。web3の世界でも様々なフレームワークが提供されており、ブロックチェーン開発者にとっての開発をより容易にしています。
このガイドではweb3のフレームワークについて解説します。

目次

web3のフレームワークとは

本チュートリアルで解説するhardhatをはじめとするweb3のフレームワークは、開発者が行うそれぞれの工程を比較的容易なものにします。「比較的」と言っているのは、これらのソフトウェア群の助けなく開発する場合に比べて効率が良い、という意味で、です。

web3のフレームワークは具体的には、コントラクトの開発、テスト、デバッグ、デプロイといった開発の一連の流れにおけるそれぞれのステップで必要となる機能を提供しています。

ITの世界では、「車輪の再発明」という言葉があります。すでに広く知れ渡っており、他の誰かによって開発されている機能が存在するにも関わらず、一からから開発し直す場合に利用され、通常は「無駄な行為である」ことを端的に表現するために使われる言葉です。既存の機能よりも効率が良いなどの場合はありますが、こういった場合を除いて、あまり推奨されることではありません。
フレームワークを使いこなすことはこういった観点から重要になります(一から開発する場合に比べて効率的で、工数も少なくて済む)。

web3以前のwebの世界では、フレームワークは雨後の筍のように非常に多くのものが開発、発表されています。web3でもすでに多くのフレームワークがありますが、その中で自分にあったもの、かつ将来性があるものを選ぶことが非常に重要です。将来性=長きに渡ってフレームワークの開発が継続されることが重要です。通常は最も多くの人が使い、メジャーとされているものが長期間使い続ける上での最良の選択となる傾向があります。

採用の観点でもメジャーな技術スタックを採用することは重要になります。求職者は応募する対象の企業が増えますし、逆にチームを作っていくリーダーの立場の場合、より多くの求職者からの応募を集めることができるので、最良のチームを構成しやすい(オポチュニティが増える)といえます。

どのようなものがあるか

web3開発のためのフレームワークは、さまざまな言語や環境に対応したものがあります。以下に、いくつかの代表的なフレームワークを紹介します。

Hardhat:

  • javascript/typescriptベースのフレームワーク。
  • スマートコントラクトのコンパイル、デプロイ、テスト、デバッグ等の一連の機能を提供。
  • ローカルに擬似ブロックチェーンネットワークをシミュレートしている。
  • プラグインが充実。

Truffle:

  • javascriptベースのフレームワーク。
  • プロジェクト管理やスマートコントラクトの開発において広く使われるフレームワーク。
  • ローカル開発環境との統合、内蔵のテストフレームワークが特徴。
  • エコシステムが豊富で、多くのプラグインが利用可能。

Brownie:

  • Pythonベースのフレームワークで、簡潔な記述とテストの容易さが特徴。
  • インストールやセットアップが簡単で、開発者フレンドリーな文法を提供。
  • 高度なデバッグ機能やガス最適化もサポートしている。

Foundry:

  • Solidityベースのフレームワーク。
  • Web3開発のための比較的に新しいフレームワーク。
  • モダンな開発環境とモジュール性の高いアーキテクチャが特徴。
  • オンチェーンな開発サイクルやセキュリティへの注力があり、新しい技術トレンドに対応。

本チュートリアルでの選択

本チュートリアルでは、主に以下の2つの理由から、hardhatを選択しています。

1つには、javascript/typescriptベースである点があります。多くのケースでは、スマートコントラクトの開発に加えて、フロントエンド(ウェブ画面)の開発を伴いますが、フロントエンドで事実上デファクトスタンダードとなっているのが、javascript/typescriptで、同言語をベースにした開発ができるのは大きなメリットになります。

もう1つの理由は、同じくjavascriptベースであるtruffleと比較した場合、近年ではより利用数が多いのがhardhatであると推測できることです。次のグラフは、2つのフレームワークのトレンドを比較したものになります(npmというパッケージ管理ソフトにおけるダウンロード数の傾向)。

truffleとhardhatのダウンロード数の比較(npmtrends.comより転載)
truffleとhardhatのダウンロード数の比較(npmtrends.comより転載)

今後については継続して注視する必要がありますが、シェアが大きい(であろう)ことは選択する上での重要な要素になります(理由は前述のとおりです)。

状況によっては、他の選択肢もあり得ると思います。Pythonに習熟していれば、Brownieを選択することは効率的に思えますし、言語を統一したいということであればFoundryという選択肢が有力でしょう。

ご意見をお聞かせください!

web3チュートリアルシリーズについてのご意見を是非お聞かせください。

この記事、または、web3チュートリアル全体について、是非、あなたのご意見をお聞かせください。
アンケートはこちらからご回答いただけます。

無料相談承ります

ITの専門家が無料相談を受け付けます。web3以外のテーマでもOKです。

オンラインでの無料相談を承っています。ご希望の方は、お問い合わせフォームよりご連絡ください。
ITの専門家があなたのご質問にお答えいたします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

After joining IBM in 2004, the author gained extensive experience in developing and maintaining distributed systems, primarily web-based, as an engineer and PM. Later, he founded his own company, designing and developing mobile applications and backend services. He is currently leading a Tech team at a venture company specializing in robo-advisory.

コメント

コメントする

CAPTCHA


目次