Web3に関連する開発に、JavaScriptが多く用いられていることをご存じですか?

本記事では、Web3エンジニアの仕事内容や求められるスキルなどを踏まえたうえで、JavaScriptを使えるエンジニアがWeb3エンジニアに向いている理由を解説します。

さらに、実際にJavaScriptエンジニアがWeb3エンジニアを目指すための具体的なステップも紹介します。ステップごとに役立つ教材も紹介しますので、これからWeb3エンジニアを目指す方はぜひ参考にしてみてください。

Web3エンジニアとは

Web3エンジニアとは、Web3関連のソフトウェア開発やプロジェクトに携わるエンジニアの総称です。

具体的な仕事の例としては、ブロックチェーンやスマートコントラクト、NFT(Non-Fungible Token:非代替性トークン)といったWeb3関連技術を用い、DeFi(Decentralized Finance:分散型金融)やGameFi(Game Finance)のようなdApps(Decentralized application:分散型アプリケーション)開発などが挙げられます。

※「Web3エンジニア」について、現時点において明確に定義をすることが難しいことから、上記はあくまでも本記事における暫定的な定義であるということについてご了承ください。(今後、この定義は変更される可能性があります)

Web3やWeb3エンジニアについては以下の記事でも詳しくご紹介していますので、宜しければ併せてご覧ください。

Web3エンジニアの募集内容に見る、仕事内容や年収、必要な経験

Web3エンジニア向けの案件情報や求人募集要項によると、Web3エンジニアの主な仕事内容として、dAppsの開発、Web3関連の開発をサポートするためのフレームワークやプラットフォームの開発、新規ブロックチェーンの開発などがあります。

求人の割合としては、特にDeFi関連のdApps開発が多い傾向にあります。
また「Web3エンジニア」という名称で募集する案件ばかりではなく、「フロントエンドエンジニア」として募集するWeb3案件も散見されます。

Web3エンジニアの平均年収は、開発するソフトウェアや扱う言語などによって差があります。全体の傾向としては、Solidity(ソリディティ)やRust(ラスト)といったスマートコントラクトを開発可能な言語を扱えるエンジニアの方が、一般的なWebエンジニアの報酬に比べて高いという特徴があります。

一方で、Web3関連の開発経験や、スマートコントラクトの使用経験を問わない案件も少なくありません。その中には、スマートコントラクトエンジニアの平均年収とそん色のないJavaScriptエンジニア募集案件もあります。

また、Web3エンジニアの募集においてSolidityなどのスマートコントラクト言語を必須要件に挙げる案件はごく少数であり、むしろJavaScriptやReact(リアクト)などを用いたフロントエンド開発経験が必須要件として挙げられていることが大半です。

このことからも、JavaScriptとWeb3との親和性が高いことが見て取れます。

JavaScriptエンジニアがWeb3エンジニアに向いている理由

JavaScriptエンジニアがWeb3エンジニアに向いている理由は、大きく3つあります。

JavaScriptの経験が前提として求められる

Web3開発案件では、JavaScriptを使用したフロントエンド開発の経験が前提として求められることが多い、というのがまず1つ目の理由です。

特にdApps開発ではその傾向が顕著で、Web3プロジェクト向けの開発環境を提供するMoralis(モラリス)によれば、「オンチェーン(ブロックチェーン上で処理される)ソフトウェアは、全体の5~10%」だと言います。その他のオフチェーンなソフトウェアは、従来のWeb開発と基本的に同じ方法で開発されるのです。

そのためWeb3エンジニアになるには、JavaScriptをはじめとするWeb開発言語の学習や開発経験が必要になります。こうした状況から、すでにJavaScriptの開発経験があるWebエンジニアは、JavaScriptの経験がないエンジニアに比べて有利と言えるのです。

参照:

ライブラリや開発環境が充実している

現在もっとも利用されているブロックチェーンプラットフォームであるEthereumにおいて、JavaScriptライブラリやJavaScriptベースの開発環境が充実している点も、JavaScriptエンジニアがWeb3エンジニアに向いている理由のひとつです。

web3.jsやethers.jsといったJavaScriptライブラリを利用すれば、従来のWeb開発と同様の方法で開発したフロントエンドを、ブロックチェーンに連携することができます。

さらに、Lisk SDK(リスク ソフトウェア開発キット)のように、ブロックチェーン固有の言語を使用せずJavaScriptやTypeScriptのみでブロックチェーンやブロックチェーンアプリ開発を可能にする開発環境も登場しています。

参照:

スマートコントラクト言語の習得が早い

Ethereumでスマートコントラクトを記述する際に用いられる言語Solidityは、JavaScriptに似ているため一般にJavaScriptエンジニアは習得が早いとされています。

マイクロソフト本社でWindows95やInternet Exploreの開発に携わり、現在はフルオンチェーンのWeb3プロジェクトを推進する世界的プログラマーの中嶋智さんは、「Solidityを手足のように使える」レベルに、わずか2か月強で到達できたことを自身の著書「中学生にも分かるWeb3」で語っています。

Web3の開発において活躍するJavaScriptのライブラリ

次に、Web3開発においてよく用いられる主なJavaScriptのライブラリをご紹介します。

web3.js

web3.jsは、イーサリアム財団が構築した、LGPLv3ライセンスのJavaScriptライブラリです。通常のJavaScriptコードからEthereum APIをアドレス指定することができ、JavaScriptベースで開発したフロントエンドを、Ethereumブロックチェーンに接続できます。

web3.jsは、主に次の5つのモジュールから構成されています。

  • web3.eth:EthereumブロックチェーンやEthereumスマートコントラクトとやりとりするためのモジュール
  • web3.bzz:分散型ファイルストアであるswarmとやりとりするためのモジュール
  • web3.shh:ブロードキャスト用のwhisperプロトコルとやりとりするためのモジュール
  • web3.utils:文字列を16進数に変換したり、Ether値をWeiに変換したりといった、EthereumのdAppsや他のweb3.jsパッケージのためのユーティリティ関数を含んだモジュール
  • web3.*.net:ネットワークIDやピア数など、Ethereumノードのネットワークプロパティを操作できるモジュール

web3.jsの導入方法や、web3.jsを使用してEthereumブロックチェーンと通信する方法の詳細は、下記チュートリアルをご覧ください。

ethers.js

ethers.jsは、ソフトウェア開発者のRichard Mooreが開発した、MITライセンスのJavaScriptライブラリです。web3.jsより後に開発され、dApps開発においてweb3.jsの代替となりうるライブラリとして注目されています。web3.jsと同様に、EthereumブロックチェーンおよびEVM(Ethereum Virtual Machine:イーサリアム仮想マシン)互換のブロックチェーンで利用できます。

総ダウンロード数ではweb3.jsの方が多いものの、直近のダウンロード数はethers.jsの方が上回っており、本記事執筆時点(2022年8月18日)において、web3.jsが52,762,621回、ethers.jsが52,033,514回と、総合的なダウンロード数の差はほとんどありません。

ethers.jsは、主に次の4つのモジュールから構成されています。

  • ethers.provider:Ethereumブロックチェーンとやりとりするためのモジュール
  • ethers.contract:スマート コントラクトとやりとりするためのモジュール
  • ethers.utils:web3-utils のように機能し、dAppsの構築をサポートするモジュール
  • ethers.wallet:既存のEthereumアドレスに接続してやりとりするためのモジュール

ethers.jsの導入方法や、ethers.jsを使用してEthereumブロックチェーンとやりとりする方法の詳細は、下記ethers.jsドキュメントの入門者向けチュートリアルをご覧ください。

参照:

JavaScriptエンジニアがWeb3エンジニアになるためのステップ

続いて、JavaScriptエンジニアがWeb3エンジニアを目指す上でのステップについて、その一例をご紹介します。一つの目安として、ぜひ参考にしてみてください。

公開されているdAppsをチェックする

JavaScriptを使用するWeb3案件の一つにdApps開発が挙げられますが、dApps開発と一口に言っても、DeFi、NFT、GameFiなどその種類はさまざまです。そこでまずは、すでに公開されているdAppsにどのようなものがあるか確認してみましょう。

下記リンク先では、ethereum.orgに登録されたdAppsを確認することができます。

興味のある分野でどのようなアプリが公開されているのか、どのような機能が実装されているのかなど確かめながら、自分が開発するアプリをイメージしてみましょう。

ブロックチェーンやスマートコントラクトの基礎を学ぶ

開発したいアプリやプロジェクトのイメージができたら、Web3関連技術の基礎を学習しましょう。Lisk SDKのように、JavaScriptだけでブロックチェーンとの連携までを可能にする開発環境も登場してきていますが、それでも使用する技術に対する理解は最低限必要です。

EthereumやCardano(カルダノ)、Solana(ソラナ)など、既存の主要ブロックチェーンのドキュメントに目を通しておくと良いでしょう。

・Ethereumドキュメント

・Cardanoドキュメント

・Solanaドキュメント

また、Web3に関連する技術について体系的に学習したい場合は、下記のような教育サービスが提供する一連の講座を利用するのもおすすめです。

スマートコントラクト言語を学ぶ

基礎を学んだ上で、さらにスマートコントラクト言語について学ぶことで、Web3エンジニアとしての価値をより高めることができます。

まずは、EthereumブロックチェーンやEVM(Ethereum Virtual Machine:イーサリアム仮想マシン)で役立つSolidityを学習すると良いでしょう。Solidityは、JavaScriptに似ていて学習しやすいだけでなく、開発言語としての汎用性が高く需要の大きい言語でもあります。

Solidityの学習には、次のような方法がおすすめです。

SolidityとEthereumによる実践スマートコントラクト開発
Solidityを用いたスマートコントラクト開発について、体系的に学べる書籍です。ただし掲載されたコードは古くなっているため、各ツールの具体的な使い方は公式の最新チュートリアルを参照しましょう。

クリプトゾンビは、暗号からゾンビを生み出すゲームアプリを実際に開発する形式で、Solidityを用いたスマートコントラクト構築を学習できる無料のオンラインチュートリアルです。

Solidityの公式ドキュメントです。書籍やチュートリアルによる学習と合わせて目を通すことで、より理解が深まります。

開発環境やツールに慣れる

Solidityを学習したら、ブラウザから直接スマートコントラクトを作成、編集、実行できるRemix IDEを使用して、スマートコントラクトを実際にデプロイしてみましょう。Remix IDEの扱いに慣れたら、dAppsをゼロから開発して、web3の開発環境を一通り体験しておくことも大切です。

dAppsの開発環境をゼロから構築する方法については、プログラミング学習サイトのfreeCodeCampが提供するこちらの記事で詳しく解説されています。

React、Ethers.js、Solidity、Hardhat(ハードハット)、Metamask(メタマスク)などを使用して、dAppsの開発環境を構築する方法が解説されています。

プロジェクトに参加してポートフォリオを構築する

ここまで学習を進め、さらに自身でWeb3開発の経験を積むことができれば、現在求人のあるWeb3案件のなかでも実際に参加できる案件が出て来ます。一般的な求人プラットフォームのほか、下記のようなWeb3に特化した求人サイトも利用して、興味のあるプロジェクトを見つけましょう。


もし、いきなり業務としてWeb3開発へ参加するのに抵抗がある場合は、Web3プロジェクトのコミュニティに参加することから始めるのも良いでしょう。

現在、Web3関連の情報はTwitterに集まる傾向があります。そこで、主だったdApps創設者のTwitterアカウントをフォローするなどして情報を収集し、興味のあるプロジェクトがあれば積極的に参加してみましょう。

また、Web3プロジェクトでは、一般的に独自のDiscordサーバーを構築してコミュニティを形成しています。そのため、まずは興味のあるコミュニティのDiscordサーバーに参加して、コミュニティ内でどのようなやりとりが行われているのかを実際に体験してみることもおすすめです。

まとめ

本記事では、JavaScriptエンジニアがWeb3エンジニアに向いている理由や、Web3エンジニアを目指す上での具体的なステップについて解説しました。

現在求人のあるWeb3プロジェクトの多くは、従来のWeb開発+スマートコントラクトという構成で開発されているため、Web開発経験のあるJavaScriptエンジニアにとって、全く未知の領域というわけではありません。

開発環境次第では、JavaScriptだけでブロックチェーンとの連携まで可能であり、主要なスマートコントラクト言語であるSolidityの習得も、JavaScriptエンジニアには有利です。

まずはドキュメントやチュートリアルに目を通して知識を取り入れた上で、Remix IDEなどを用いて実際に手を動かしながらスマートコントラクトの構築から始めてみてはいかがでしょうか。

toiroフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。

エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。