この「Building on web3」の次のセグメントでは、Edge&Nodeの開発者関係エンジニアであるNader Dabitが、web3スタックを拡張し、開発者がweb3上で構築するさまざまな側面を概念化する方法について詳しく説明します。
私は10年ほどの間、伝統的なフルスタック開発者でしたが、2021年4月にWeb3に移行しました。これらの新しい技術やアイデアに没頭する中で、最初に知りたかったのは「Web3スタックとは何か?」でした。
従来のWebやモバイルアプリケーションを構築する際、私はしばしば仕事を終わらせるためにわずかな構築ブロックに頼ることがあります。
これらのコアコンポーネントを使用すると、私は、私が望むほとんどの種類のアプリケーションを構築したり、少なくともそのほとんどを手に入れたりできます。では、web3ではどのように見えましたか?
結局、これに対する答えはそう簡単ではないことがわかりました。
私にとっても、Web2の世界と同じように問題に取り組んでいたので、Web3アプリケーションの立ち上げと構築が理解しづらかったです。
働いたり、調査したり、実験したり、物を構築したりして過ごした過去8カ月ほどのことについて、私が学んだことを共有したいと思います。
web3スタックを定義する前に、web3を定義しようとしてみましょう。尋ねる相手によって無数の定義がありますが、私にとっては、これdefinition spot on:
Web3は、完全に分散化されたアプリケーションを可能にするプロトコルのスタックです。
With this decentralized tech stack, we can begin building out decentralized applications which have their own set implications and characteristics.
web3が可能にする特性のいくつかは次のとおりです:
分散型技術スタック上に構築されたアプリケーションの中には、以前のものに取って代わるものもありますが、ブロックチェーンによって可能になった新しいプリミティブによって、アプリの新しいパラダイムも可能になりました。
ネイティブデジタル支払いと公共のバックエンドインフラストラクチャー - 機械学習、モバイルデバイス、仮想現実、その他の技術的原始要素、プラットフォーム、およびビルディングブロックのような - これにより、想像されていない新しいタイプのアプリケーションが構築されるようになります。
これはすべてがWeb3に置き換えられることを意味するということですか?必ずしもそうとは限りません。分散型テックスタック上に構築することが特定の種類のアプリケーションにとってははるかに良い選択であると考えていますが、ほとんどの技術的な決定と同様に、それはあなたが構築しているものに依存します。
さあ、Web3スタックに入りましょう。このカテゴリに分かれたセットについて見ていきます。
構築するために選択できるブロックチェーンは数え切れないほどあります。 「最高」というものは1つではなく、代わりにそれらの間のさまざまなトレードオフを考慮するべきです。
新しいことを学ぶ際に私にとって重要なことの1つは、適用の考え方ですパレートの法則私が学んでいること、つまり、その時間と努力を最大限に活用する最も効率的な方法は何か。この考えに従うことで、新しいことを学ぶ際に最も多くのトラクションと勢いを得ることができます。
ブロックチェーンの世界で、Solidityと学ぶことEVM(またはEthereum仮想マシン)は、ブロックチェーン開発者としてスタートする際に最適な選択肢かもしれません。このスキルセット(およびテックスタック)を使用すると、Ethereumだけでなく、他のEthereum Layer 2、サイドチェーン、さらにAvalanche、Fantom、Celoなどの他のブロックチェーンを構築できます。
言うまでもなく、Rustはブロックチェーンの世界でますます人気を集めつつあり、Solana、NEAR、Polkadotなどが第一級のRustサポートを提供しています。おそらく、どちらを学んでも間違いはないと思いますが、初心者にとっては、今日誰かが私に尋ねるなら、Solidityの方がまだ良い選択肢だと言えます。
そのアドバイスを超えて、技術、ユーティリティ、コミュニティ、モメンタム、将来の生存性のバランスが取れたブロックチェーンの不完全なサンプルが以下に示されています:
ネットワークとやり取りする際には、RPCエンドポイントを使用する必要があります。
これを行う方法はいくつかあります。
パブリックRPCエンドポイントは、ネットワークによって提供されることがよくありますが、ほとんどの本番向けのdappsでは、本番向けには安定していないため、独自のエンドポイントを活用することが望ましいです。
RPCサービスプロバイダーは数多く存在し、以下はその一部です:
Web3 / 分散型ソリューションもあります。Pocket Networkそれは注目を集めているようです。
これらのオプションのいずれかは、おそらくネットワークと直接やり取りするのに適した選択肢です。
EVM開発には、いくつかの優れた開発環境が利用可能です:
Solana開発の場合、アンカー新しい開発者の入り口として急速になっています。それは、Solanaプログラムのスキャフォールディング、構築、テストのためのCLIを提供し、フロントエンドの構築に使用できるクライアントライブラリも提供しています。また、SolanaやRust開発を始める際に開発者がしばしば直面する複雑さを抽象化するDSLも含まれています。
web3で画像、動画、その他のファイルをどこに保存しますか?チェーン上にそれほど大きなデータを保存することは通常費用がかかりすぎるため、そこに保存することは避けたいと思うでしょう。
代わりに、われわれは数種類のファイルストレージプロトコルのうちの1つを使用することができます。
ファイルストレージやオンチェーンストレージに加えて、オフチェーンでデータを保存する必要があるかもしれません。これらの種類のソリューションは、従来のテックスタックでデータベースを使用する方法と同様に使用するかもしれませんが、代わりにそれらは分散型ネットワーク上のn個のノードに複製されるため、(少なくとも理論上は)より信頼性が高くなります。
いくつかのオプションがあります:
成熟度の観点から、オフチェーンストレージソリューションのエコシステムは、一部の開発者が望むよりも高度なユースケースを構築するために必要な水準にはまだ達していないというのが私の考えです。ここでのいくつかの課題は、リアルタイムデータ、競合検出と競合解決、書き込み認証、ドキュメンテーション、そして一般的な開発者の経験です。
ブロックチェーンプロトコルとオフチェーンデータソリューションの統合は、完全に分散型のプロトコルスタックを実現する前にクリアする必要がある最後の大きな障害の1つです。これにより、あらゆる種類のアプリケーションをサポートできるようになります。
私たちがブロックチェーンとデータベースを使った伝統的なテックスタックとのやり取りや構築方法には多くの違いがあります。ブロックチェーンでは、データは他のアプリケーションやフロントエンドから直接効率的かつ簡単に消費される形式で保存されていません。
ブロックチェーンは書き込み操作に最適化されています。しばしば秒間取引、ブロック時間、および取引コストを中心に起こる革新を耳にします。ブロックチェーンデータは時間の経過とともにブロックに書き込まれ、基本的な読み取り操作以外は不可能です。
ほとんどのアプリケーションでは、関係データ、ソート、フィルタリング、フルテキスト検索、ページネーションなどの機能が必要です。これらを実現するためには、データを効率的に取得するためにインデックス化および整理する必要があります。
従来、それは中央集権的なテックスタックでデータベースが行う作業ですが、その索引付けレイヤーはweb3スタックには存在しませんでした。
ザ・グラフこれは、ブロックチェーンデータの索引化およびクエリ処理のためのプロトコルであり、このプロセスを大幅に容易にし、そのための分散型ソリューションを提供しています。誰でも、サブグラフと呼ばれるオープンなGraphQL APIを構築および公開することができ、ブロックチェーンデータを簡単にクエリできます。
The Graphについてもっと学ぶには、ドキュメントをチェックしてくださいここまたは私のチュートリアルここ.
Identityは、web3で完全に異なるパラダイムです。web2では、認証はほとんど常にユーザーの個人情報に基づいています。この情報は通常、フォームを介して収集されるか、ユーザーにアプリケーションへのアクセスと引き換えに提供するよう求めるOAuthプロバイダーを介して収集されます。
web3では、アイデンティティは完全にウォレットという考えを中心に展開されます。公開鍵暗号方式.
「ウォレット」という名前はその目的を果たしていますが、Web3に新しく参加した人々にとっては、認証とアイデンティティに関連する用語が混乱を招くと感じています。将来的には、ウォレットが財務だけでなくアイデンティティや信用の側面を組み合わせていることを伝える別の方法を見つけることができればと願っています。
開発者として、ユーザーのウォレットやアドレスに様々な方法でアクセスしてやり取りする方法を理解する必要があります。
非常に基本的なレベルで(非常に一般的な要件でもあるが)、ユーザーのウォレットへのアクセスをリクエストしたい場合があります。これを行うためには、通常、ユーザーのウォレットにウィンドウコンテキスト(Webブラウザ)でアクセスしたり、何かを使用したりします。ウォレット接続またはSolanaのウォレットアダプター.
例えば、Ethereumウォレットが利用可能な場合、window.ethereumにアクセスできます。Solana(window.solana)、Arweave(window.arweaveWallet)なども同様です。WalletConnectは、モバイルWebやReact Nativeに適しており、ユーザーがデバイスから直接モバイルウォレットを使用して承認することを可能にします。
認証を自分で処理したい場合は、ユーザーにトランザクションにサインさせてから、どこかでデコードしてユーザーを認証することができますが、通常はサーバーが必要です。ここは、EVMウォレットを使用した場合にどのように見えるかの例です。ここSolana / Phantomでこれを行う方法の例です。
分散化された方法でユーザープロファイルを管理することはどうですか?セラミックネットワーク最も堅牢なプロトコルとツールスイートを提供しており、分散型アイデンティティを管理するための。最近リリースされましたブログ投稿最新の更新のいくつかを概説し、すべてのツールがどのように連携するかに関するいくつかのガイドラインを提供します。私はそこから始めて、それから探索します彼らのドキュメント始める方法を理解し、私のサンプルプロジェクトをチェックすることを検討してみてくださいここCeramicを使用するself.id.
ユーザーの取得をしたい場合は、ENSテキストレコード、ENSJSライブラリはユーザーデータを取得するための素敵なAPIを提供しています。
const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })
const content = await ens.name('sha.eth').getText('avatar')
SpruceIDまた、約束されているように見えますが、まだ試していません。
セラミックとスプルース両方とも実装するW3C DIDspecificiation、それ自体もWeb3の構築ブロックとして考えるものです。 と言っても、DIDの中央集権的な実装は、仕様が達成しようとしているアイデアに反しています。
JavaScriptフレームワークに関しては、クライアントサイドのブロックチェーンSDKはほとんどフレームワークに依存していないため、好きなものを使用して構築することができます。 とは言っても、Reactで構築されたプロジェクトや例が圧倒的に多数あります。 他にも、Gate.ioなどの数少ないライブラリもあります。SolanaウォレットアダプターReactに追加のユーティリティを提供するものがあるので、Reactの学習または理解はおそらく賢明な選択肢だと言えるでしょう。
EthereumのクライアントサイドSDKには、web3.jsそしてethers.js私にとって、Ethersの方がアクセスしやすく、ドキュメントも優れていますが、web3.jsの方が長く存在しています。
Solanaでは、おそらく以下で作業することになります @solana/web3.jsおよび/またはアンカー. Anchorクライアントライブラリを見つけたので、とりあえずSolanaプログラムの構築に使用しています。とにかくAnchorフレームワークを使用しているので、理解するのがはるかに簡単であるとわかりました@solana/web3.js.
オラクルにより、開発者はスマートコントラクト内から現実世界のデータや外部システムを読み取ることができます。
例えば、ほとんどの金融アプリケーションは、オフチェーンで起こる実世界のデータやイベントの知識を必要とするため、OraclesはDeFiにおいて特に重要です。
Chainlinkブロックチェーン技術固有のセキュリティおよび信頼性保証を維持しながら、リアルワールドデータへのアクセスとオフチェーン計算を可能にするOracleです。
フラックス経済的に安全なデータフィードへのスマートコントラクトへのアクセスを提供するクロスチェーンオラクルです。
ラジクルは、Git上に構築された分散型コードコラボレーションプロトコルです。これは、GitHubの分散型バージョンと考えることができます。
ライブピアは分散型ビデオストリーミングネットワークです。70,000以上のGPUがネットワーク上で稼働しており、成熟し広く利用されています。
この投稿は、私が学び、実験し、web3で構築する開発者からのフィードバックを収集する際に、私が追いつく生きたドキュメントになります。
もしここで見逃している何かについてフィードバックやアイデアがあれば、お知らせください。開発者が参加して活発に活動している様子を見るのはとてもexcitingです。インフラがまだ進化中ではありますが、大企業に権力とコントロールを与えることなく、人々が調整できる本当に分散化されたプロトコルやアプリケーションを構築するビジョンは重要です。このビジョンを実現することに近づいています。
この「Building on web3」の次のセグメントでは、Edge&Nodeの開発者関係エンジニアであるNader Dabitが、web3スタックを拡張し、開発者がweb3上で構築するさまざまな側面を概念化する方法について詳しく説明します。
私は10年ほどの間、伝統的なフルスタック開発者でしたが、2021年4月にWeb3に移行しました。これらの新しい技術やアイデアに没頭する中で、最初に知りたかったのは「Web3スタックとは何か?」でした。
従来のWebやモバイルアプリケーションを構築する際、私はしばしば仕事を終わらせるためにわずかな構築ブロックに頼ることがあります。
これらのコアコンポーネントを使用すると、私は、私が望むほとんどの種類のアプリケーションを構築したり、少なくともそのほとんどを手に入れたりできます。では、web3ではどのように見えましたか?
結局、これに対する答えはそう簡単ではないことがわかりました。
私にとっても、Web2の世界と同じように問題に取り組んでいたので、Web3アプリケーションの立ち上げと構築が理解しづらかったです。
働いたり、調査したり、実験したり、物を構築したりして過ごした過去8カ月ほどのことについて、私が学んだことを共有したいと思います。
web3スタックを定義する前に、web3を定義しようとしてみましょう。尋ねる相手によって無数の定義がありますが、私にとっては、これdefinition spot on:
Web3は、完全に分散化されたアプリケーションを可能にするプロトコルのスタックです。
With this decentralized tech stack, we can begin building out decentralized applications which have their own set implications and characteristics.
web3が可能にする特性のいくつかは次のとおりです:
分散型技術スタック上に構築されたアプリケーションの中には、以前のものに取って代わるものもありますが、ブロックチェーンによって可能になった新しいプリミティブによって、アプリの新しいパラダイムも可能になりました。
ネイティブデジタル支払いと公共のバックエンドインフラストラクチャー - 機械学習、モバイルデバイス、仮想現実、その他の技術的原始要素、プラットフォーム、およびビルディングブロックのような - これにより、想像されていない新しいタイプのアプリケーションが構築されるようになります。
これはすべてがWeb3に置き換えられることを意味するということですか?必ずしもそうとは限りません。分散型テックスタック上に構築することが特定の種類のアプリケーションにとってははるかに良い選択であると考えていますが、ほとんどの技術的な決定と同様に、それはあなたが構築しているものに依存します。
さあ、Web3スタックに入りましょう。このカテゴリに分かれたセットについて見ていきます。
構築するために選択できるブロックチェーンは数え切れないほどあります。 「最高」というものは1つではなく、代わりにそれらの間のさまざまなトレードオフを考慮するべきです。
新しいことを学ぶ際に私にとって重要なことの1つは、適用の考え方ですパレートの法則私が学んでいること、つまり、その時間と努力を最大限に活用する最も効率的な方法は何か。この考えに従うことで、新しいことを学ぶ際に最も多くのトラクションと勢いを得ることができます。
ブロックチェーンの世界で、Solidityと学ぶことEVM(またはEthereum仮想マシン)は、ブロックチェーン開発者としてスタートする際に最適な選択肢かもしれません。このスキルセット(およびテックスタック)を使用すると、Ethereumだけでなく、他のEthereum Layer 2、サイドチェーン、さらにAvalanche、Fantom、Celoなどの他のブロックチェーンを構築できます。
言うまでもなく、Rustはブロックチェーンの世界でますます人気を集めつつあり、Solana、NEAR、Polkadotなどが第一級のRustサポートを提供しています。おそらく、どちらを学んでも間違いはないと思いますが、初心者にとっては、今日誰かが私に尋ねるなら、Solidityの方がまだ良い選択肢だと言えます。
そのアドバイスを超えて、技術、ユーティリティ、コミュニティ、モメンタム、将来の生存性のバランスが取れたブロックチェーンの不完全なサンプルが以下に示されています:
ネットワークとやり取りする際には、RPCエンドポイントを使用する必要があります。
これを行う方法はいくつかあります。
パブリックRPCエンドポイントは、ネットワークによって提供されることがよくありますが、ほとんどの本番向けのdappsでは、本番向けには安定していないため、独自のエンドポイントを活用することが望ましいです。
RPCサービスプロバイダーは数多く存在し、以下はその一部です:
Web3 / 分散型ソリューションもあります。Pocket Networkそれは注目を集めているようです。
これらのオプションのいずれかは、おそらくネットワークと直接やり取りするのに適した選択肢です。
EVM開発には、いくつかの優れた開発環境が利用可能です:
Solana開発の場合、アンカー新しい開発者の入り口として急速になっています。それは、Solanaプログラムのスキャフォールディング、構築、テストのためのCLIを提供し、フロントエンドの構築に使用できるクライアントライブラリも提供しています。また、SolanaやRust開発を始める際に開発者がしばしば直面する複雑さを抽象化するDSLも含まれています。
web3で画像、動画、その他のファイルをどこに保存しますか?チェーン上にそれほど大きなデータを保存することは通常費用がかかりすぎるため、そこに保存することは避けたいと思うでしょう。
代わりに、われわれは数種類のファイルストレージプロトコルのうちの1つを使用することができます。
ファイルストレージやオンチェーンストレージに加えて、オフチェーンでデータを保存する必要があるかもしれません。これらの種類のソリューションは、従来のテックスタックでデータベースを使用する方法と同様に使用するかもしれませんが、代わりにそれらは分散型ネットワーク上のn個のノードに複製されるため、(少なくとも理論上は)より信頼性が高くなります。
いくつかのオプションがあります:
成熟度の観点から、オフチェーンストレージソリューションのエコシステムは、一部の開発者が望むよりも高度なユースケースを構築するために必要な水準にはまだ達していないというのが私の考えです。ここでのいくつかの課題は、リアルタイムデータ、競合検出と競合解決、書き込み認証、ドキュメンテーション、そして一般的な開発者の経験です。
ブロックチェーンプロトコルとオフチェーンデータソリューションの統合は、完全に分散型のプロトコルスタックを実現する前にクリアする必要がある最後の大きな障害の1つです。これにより、あらゆる種類のアプリケーションをサポートできるようになります。
私たちがブロックチェーンとデータベースを使った伝統的なテックスタックとのやり取りや構築方法には多くの違いがあります。ブロックチェーンでは、データは他のアプリケーションやフロントエンドから直接効率的かつ簡単に消費される形式で保存されていません。
ブロックチェーンは書き込み操作に最適化されています。しばしば秒間取引、ブロック時間、および取引コストを中心に起こる革新を耳にします。ブロックチェーンデータは時間の経過とともにブロックに書き込まれ、基本的な読み取り操作以外は不可能です。
ほとんどのアプリケーションでは、関係データ、ソート、フィルタリング、フルテキスト検索、ページネーションなどの機能が必要です。これらを実現するためには、データを効率的に取得するためにインデックス化および整理する必要があります。
従来、それは中央集権的なテックスタックでデータベースが行う作業ですが、その索引付けレイヤーはweb3スタックには存在しませんでした。
ザ・グラフこれは、ブロックチェーンデータの索引化およびクエリ処理のためのプロトコルであり、このプロセスを大幅に容易にし、そのための分散型ソリューションを提供しています。誰でも、サブグラフと呼ばれるオープンなGraphQL APIを構築および公開することができ、ブロックチェーンデータを簡単にクエリできます。
The Graphについてもっと学ぶには、ドキュメントをチェックしてくださいここまたは私のチュートリアルここ.
Identityは、web3で完全に異なるパラダイムです。web2では、認証はほとんど常にユーザーの個人情報に基づいています。この情報は通常、フォームを介して収集されるか、ユーザーにアプリケーションへのアクセスと引き換えに提供するよう求めるOAuthプロバイダーを介して収集されます。
web3では、アイデンティティは完全にウォレットという考えを中心に展開されます。公開鍵暗号方式.
「ウォレット」という名前はその目的を果たしていますが、Web3に新しく参加した人々にとっては、認証とアイデンティティに関連する用語が混乱を招くと感じています。将来的には、ウォレットが財務だけでなくアイデンティティや信用の側面を組み合わせていることを伝える別の方法を見つけることができればと願っています。
開発者として、ユーザーのウォレットやアドレスに様々な方法でアクセスしてやり取りする方法を理解する必要があります。
非常に基本的なレベルで(非常に一般的な要件でもあるが)、ユーザーのウォレットへのアクセスをリクエストしたい場合があります。これを行うためには、通常、ユーザーのウォレットにウィンドウコンテキスト(Webブラウザ)でアクセスしたり、何かを使用したりします。ウォレット接続またはSolanaのウォレットアダプター.
例えば、Ethereumウォレットが利用可能な場合、window.ethereumにアクセスできます。Solana(window.solana)、Arweave(window.arweaveWallet)なども同様です。WalletConnectは、モバイルWebやReact Nativeに適しており、ユーザーがデバイスから直接モバイルウォレットを使用して承認することを可能にします。
認証を自分で処理したい場合は、ユーザーにトランザクションにサインさせてから、どこかでデコードしてユーザーを認証することができますが、通常はサーバーが必要です。ここは、EVMウォレットを使用した場合にどのように見えるかの例です。ここSolana / Phantomでこれを行う方法の例です。
分散化された方法でユーザープロファイルを管理することはどうですか?セラミックネットワーク最も堅牢なプロトコルとツールスイートを提供しており、分散型アイデンティティを管理するための。最近リリースされましたブログ投稿最新の更新のいくつかを概説し、すべてのツールがどのように連携するかに関するいくつかのガイドラインを提供します。私はそこから始めて、それから探索します彼らのドキュメント始める方法を理解し、私のサンプルプロジェクトをチェックすることを検討してみてくださいここCeramicを使用するself.id.
ユーザーの取得をしたい場合は、ENSテキストレコード、ENSJSライブラリはユーザーデータを取得するための素敵なAPIを提供しています。
const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })
const content = await ens.name('sha.eth').getText('avatar')
SpruceIDまた、約束されているように見えますが、まだ試していません。
セラミックとスプルース両方とも実装するW3C DIDspecificiation、それ自体もWeb3の構築ブロックとして考えるものです。 と言っても、DIDの中央集権的な実装は、仕様が達成しようとしているアイデアに反しています。
JavaScriptフレームワークに関しては、クライアントサイドのブロックチェーンSDKはほとんどフレームワークに依存していないため、好きなものを使用して構築することができます。 とは言っても、Reactで構築されたプロジェクトや例が圧倒的に多数あります。 他にも、Gate.ioなどの数少ないライブラリもあります。SolanaウォレットアダプターReactに追加のユーティリティを提供するものがあるので、Reactの学習または理解はおそらく賢明な選択肢だと言えるでしょう。
EthereumのクライアントサイドSDKには、web3.jsそしてethers.js私にとって、Ethersの方がアクセスしやすく、ドキュメントも優れていますが、web3.jsの方が長く存在しています。
Solanaでは、おそらく以下で作業することになります @solana/web3.jsおよび/またはアンカー. Anchorクライアントライブラリを見つけたので、とりあえずSolanaプログラムの構築に使用しています。とにかくAnchorフレームワークを使用しているので、理解するのがはるかに簡単であるとわかりました@solana/web3.js.
オラクルにより、開発者はスマートコントラクト内から現実世界のデータや外部システムを読み取ることができます。
例えば、ほとんどの金融アプリケーションは、オフチェーンで起こる実世界のデータやイベントの知識を必要とするため、OraclesはDeFiにおいて特に重要です。
Chainlinkブロックチェーン技術固有のセキュリティおよび信頼性保証を維持しながら、リアルワールドデータへのアクセスとオフチェーン計算を可能にするOracleです。
フラックス経済的に安全なデータフィードへのスマートコントラクトへのアクセスを提供するクロスチェーンオラクルです。
ラジクルは、Git上に構築された分散型コードコラボレーションプロトコルです。これは、GitHubの分散型バージョンと考えることができます。
ライブピアは分散型ビデオストリーミングネットワークです。70,000以上のGPUがネットワーク上で稼働しており、成熟し広く利用されています。
この投稿は、私が学び、実験し、web3で構築する開発者からのフィードバックを収集する際に、私が追いつく生きたドキュメントになります。
もしここで見逃している何かについてフィードバックやアイデアがあれば、お知らせください。開発者が参加して活発に活動している様子を見るのはとてもexcitingです。インフラがまだ進化中ではありますが、大企業に権力とコントロールを与えることなく、人々が調整できる本当に分散化されたプロトコルやアプリケーションを構築するビジョンは重要です。このビジョンを実現することに近づいています。