
ZKRollupにおけるユーザーエクスペリエンス:開発者の視点からの考察
TechFlow厳選深潮セレクト

ZKRollupにおけるユーザーエクスペリエンス:開発者の視点からの考察
本稿はSolidityエンジニアの視点から、データ駆動型の回答を通じて、開発者視点における異なるZKRollupのユーザーエクスペリエンスを深く探る。
著者:Yiping, IOSG Ventures
TL;DR
Starknetは2022年11月29日にAlpha Mainnetをリリースした。
Scrollは2023年2月27日にGoerli Alpha Testnetをリリースした。
zkSyncは2023年3月24日にzkSync Era Mainnetをリリースした。
Polygonは2023年3月27日にzkEVM Mainnet Betaをリリースした。
これほど多くのZK Rollupが登場する中で、Solidity開発者として次のような疑問を持つかもしれない。
-
どのプロジェクトがより優れた開発者体験を提供しているか?
-
どのプロジェクトが求める開発者サポートを提供しているか?
-
もし自らのプロジェクトを立ち上げるつもりなら、どのZK Rollupが最も適しているか?
ZK Rollupの続々とした本番ネットワーク導入に伴い、ZK Rollupにおける開発体験を調査する最適なタイミングが到来している。すべてのZK RollupがEVM互換性を強調していることを踏まえ、ここではSolidityエンジニアの視点から開発者体験を探ることにする。データに基づいた答えを通じて、これらの疑問に深く迫っていこう。
ZK Rollupのオープンソースコード比較
オープンソースは品質・セキュリティ・協働を促進することで開発者体験を向上させる。その透明性により、世界中の開発者がバグやセキュリティ問題に対処でき、ソフトウェアの継続的改善が可能になる。GitHubは学習プラットフォームとして機能し、多様なコーディングスタイル、高度な技術、業界標準へのアクセスを提供することで、開発者の成長を豊かにする。開発者は特定のニーズに応じてコードをカスタマイズできる。多様なコミュニティによるオープンソースは協働と革新を奨励し、プロジェクトの発展を後押しする。
プロジェクトは通常、重要なマイルストーン達成後にコードをオープンソース化する。これはコードが少なくともAlpha版に達した段階で行われることが多い。まだ大量の開発が進行中のコードは、品質向上・セキュリティ強化・協働学習といった恩恵を十分に得られないため、オープンソースには適さない。そのため、オープンソース化されたコード量は一般的にプロジェクトの開発段階と関連している。
すべてのZK RollupはGitHub上で多数の作業を投入しており、提供内容は異なるものの、それぞれ注力している。

使用言語の選択
Rustは多くのプロジェクトにおいて、コンパイラ、ノード、ツールチェーン、CLIツール、仮想マシンの構築に選ばれる主要言語となっている。

開発ドキュメント
開発ドキュメントは開発者体験にとって極めて重要である。これらのリソースは、Layer2ソリューションの複雑さとイーサリアム仮想マシン(EVM)互換の開发生態系との間に存在するギャップを効果的に埋める役割を果たす。
各プロジェクトは若干異なる構造と内容のドキュメントを提供している。
zkSyncは、独自機能であるAAおよびLayer1とLayer2間通信について、詳細なドキュメントとリファレンスコードを提供している。
以下のような改善余地が見つかった。
-
ファイル名とパスの記載:コードブロックの冒頭で、ファイル名とそのパスを明記する。これにより、ユーザーはコードの置き場所や探し方を把握できる。
-
CLI実行結果の表示:コマンドラインインターフェース(CLI)の手順を示す際には、コマンドの出力例も含める。これにより、ユーザーは期待される結果を理解し、正しくコマンドを実行できたかを確認できる。
-
コード行の長さ制限:コード例に対して最大行数を設定する。これにより、横スクロールなしで読みやすいコードとなる。
-
現実的な例の使用:プレースホルダーや「xxx」ではなく、実際のコントラクトアドレスやキーなどのサンプルを提供する。これにより、ユーザーはどのようなデータを使用すべきかを明確に理解できる。
-
複雑なチュートリアルにはプロジェクトビューを提示:より複雑なチュートリアルの場合、サイドバーにプロジェクト全体のビューを表示する。チュートリアル進行に合わせて、対応するコード部分をハイライト表示する。
-
インタラクティブな例の導入:開発者の迅速な導入を支援するために、インタラクティブな例を含める。プレイグラウンド形式でコード断片を編集・実行できるようにしたり、クラウド開発環境を提供する。
-
ドキュメントの整理:ドキュメントが構造的でナビゲーションしやすいことを保証する。明確な見出し、目次を使用する。
-
最新化の維持:プロジェクトの進化に伴い、ドキュメントも常に最新の状態を保つ。スクリーンショットの更新、コード例の修正、新機能や変更点に応じた文章の書き直しなどが必要になる。

コミュニティとチームの貢献
貢献者の数は、オープンソースコミュニティの参加度を反映している。更新頻度と参加度は、最新かつ包括的なドキュメントを維持するために不可欠である。

貢献者数が多いほど、そのオープンソースコミュニティはより活発であることを意味する。多くのプロジェクトは、ローンチ直後にドキュメント更新頻度がピークを迎える。


コーディング体験
コーディング体験は、ツールチェーン、エディタ体験、フレームワークによって左右される。
関連ツールチェーンは、ローカル開発環境の構築、デバッグ、コード実行の容易さを決定する。
エディタ体験はコーディング速度に影響を与える。優れたエディタ体験には、明確な構文強調、定義ジャンプ、自動補完などが含まれる。
フレームワークは構造化された環境を提供し、開発プロセスを大幅に加速する。事前設定された機能や再利用可能なライブラリを備えており、開発者はすべてのコードをゼロから書くことなく、スマートコントラクトを効率的に作成できる。

Remix類似のソフトウェアサポートにより、自身でローカル環境を構築せずとも素早く開発を開始できる。現在、このクラウドネイティブな開発体験はバックエンドのスマートコントラクトに限定されている。Dapp開発(スマートコントラクト+フロントエンド)に対応するよう、さらなる改善が求められる。

Warpはパフォーマンスが芳しくない。KakarotはStarkNet上でEVM互換を実現する唯一のソリューションとなる。Kakarotは非常にスムーズなSolidity開発体験を提供する。既存のすべてのイーサリアムツール(コンパイラ、Remix、Hardhatなど)と互換性がある。
KakarotはCairoで記述されたEVMを提供する。EVMとして、KakarotはEVMバイトコードプログラムを実行でき、EthereumスマートコントラクトをStarkNet上で動作させることを可能にする。

テスト
テストはスマートコントラクト開発の重要な側面であり、品質・機能性・信頼性を確保する。このプロセスでは、各機能が期待通りに動作するか検証し、デプロイ前に修正が必要なバグや問題を特定する。徹底的なテストを行うことで、開発者はさまざまなシナリオや条件下でソフトウェアが正しく動作するという自信を持てるようになる。このプロセスは、ユーザー体験に影響を与える可能性のある障害を防ぐだけでなく、スマートコントラクトの完全性と安全性を維持するのにも役立つ。また、テストは潜在的な最適化の機会を明らかにし、スマートコントラクトの継続的改善に寄与する。
Tenderlyはスマートコントラクト開発における最高のデバッグツールの一つである。スマートコントラクト実行シミュレーション、デバッガー、ガスアナライザー、フォーク機能、警告機能などを提供し、Dapp開発を支援する。しかし、Tenderlyは現時点ではいかなるZK Rollupもサポートしていない。
近い将来、ZK Rollupをサポートするスマートコントラクト開発・デバッグツールがさらに増えることを願っている。それがブロックチェーン技術のさらなる発展と応用を推進することにつながるだろう。
デプロイ
デプロイプロセスはスマートコントラクト開発ライフサイクルにおいて極めて重要である。優れたデプロイツールは、開発からオンチェーン環境へのデプロイまでを自動化され、一貫性があり、信頼性の高い体験を提供する。優れたデプロイツールは、手動でのデプロイ作業の負担を大きく軽減し、納品時間を短縮するとともに人為的ミスを減少させる。
StarkNetのデプロイ手順はDeclareとDeployの2段階に分かれているため、時間がかかる。

Layer2の新機能
Layer2ソリューションは、スケーラビリティ・効率性・ユーザーエクスペリエンスの課題解決において極めて重要な役割を果たしている。ZK Rollupはまだ初期段階にあるが、開発者にとって新たな可能性を開く大きなポテンシャルをすでに示している。
ステート差分(State-diff)、シームレスなLayer1-Layer2通信、アカウント抽象化(Account Abstraction)といった画期的な革新を提供することで、ZK Rollupは開発者が革新的なプロジェクトを創出し、ブロックチェーン技術の限界を押し広げることを可能にする。これらの高度な機能は、分散型アプリケーションの能力を高めるだけでなく、ブロックチェーン技術の主流採用への道を開く。
ステート差分(State-diff)
StarkNetとzkSync Eraはステート差分技術を採用しており、理論上はより低い手数料が可能になる。取引の入力をすべて掲載するのではなく、ステート差分のみを公開することで、データ圧縮とストレージコスト削減を実現する。これはゲーム開発者にとって有益である。
Polygon zkEVMはオンチェーンにすべての取引入力を掲載し、今後数年以内にデータストレージコストが低下することを前提としている。
Layer1 <> Layer2 通信
ほとんどのZK RollupはLayer1とLayer2間の通信機能を提供している。例えば、zkSync EraはLayer1-Layer2通信を利用したガバナンスの例を提供している。Layer1上で、コントラクトがLayer2コントラクトの実行を起動できる。Layer2上では、Layer2コントラクトはLayer1コントラクトにメッセージを送信できるだけである。その後、Layer1で受信したメッセージを処理できる。同様に、PolygonはNFTブリッジがクロスチェーン通信を使ってL1とL2間で情報を共有するコード例を提供している。
アカウント抽象化(Account Abstraction)
アカウント抽象化はもう一つの魅力的な機能である。zkSync EraはネイティブなAAを提供する。zkSync EraのアカウントはEOAのように取引を開始できるが、同時に任意のロジックを内包することができ、まるでスマートコントラクトのようでもある。zkSyncがAAをネイティブに実装しているため、追加のプロキシコントラクトは不要である。普通のEOAであってもガス代無料のトランザクションが可能であり、これは単なるEIP-4337では不可能なことである。Polygon zkEVMとScrollはEVM互換のAAを実装している。StarkNetもアカウント抽象化に取り組んでいる。署名抽象化と支払い抽象化の実現を目指している。
開発者体験の今後の改善点
今回の調査を通じて、これらのZK Rollupプロジェクトが製品改善および開発者サポートの向上に多大な努力を重ねていることに強く感じた。しかし、ブロックチェーンアプリケーションの黎明期にあり、対象となる開発者層は依然として限られていることを考えると、開発者体験の向上に注力することは、将来的な開発者の獲得、ひいては業界の未来を形作ることにつながる。
以下は、開発サイクルのサポートを高めるための一般的な提案である。
1. ドキュメント:
-
高品質なドキュメント:包括的で明確かつタイムリーに更新されるドキュメントは、開発者体験を向上させるために不可欠である。ドキュメントの完全性、明瞭さ、具体例の包含、定期的な更新を保証する。
-
直感的なAPI設計:APIは一貫性があり、直感的で、しっかり文書化されているべきである。APIドキュメントの明快さとアクセシビリティ、および一般的なタスクを完了する容易さに基づいてAPI設計を評価する。
-
完全なAPIリファレンスと変更履歴:関数、パラメータ、戻り値、エラーコードを含む詳細なAPIリファレンスを提供する。更新内容、新機能、バグ修正、非推奨機能などを追跡する変更履歴を維持する。
-
ケーススタディ:製品の応用例を紹介し、開発者が効果的に問題を解決するのを啓発・教育する。
-
スムーズなスタート体験:環境セットアップの簡略化、コアコンセプトの説明、基本アプリ作成の促進を通じて、新規開発者の習得期間を短縮する。
2. 利用性と効率性:
-
ツールの使いやすさ:提供されるツールがユーザーフレンドリーで直感的であることを保証する。開発者が一般的なタスクを実行するために必要な時間を評価することで、使用の容易さを測定する。
-
エラーメッセージとデバッグサポート:有用なエラーメッセージと強力なデバッグサポートにより、開発者体験を向上させる。よくあるエラーを意図的に作り出し、システムの反応がどれほど助けになるかをチェックすることで、これを評価できる。
-
統合性と互換性:ツールまたはプラットフォームがエコシステム内の他の一般的なツールとどの程度統合されているかを評価する。
3. 透明性と更新:
-
製品のステータス:運用上の問題、メンテナンス計画、システム停止に関する情報をタイムリーに更新することで、開発者が業務を効果的に計画できるよう支援する。
Web3分野の技術が急速に進化する中で、一貫した高水準の開発者体験を拡張可能かつ持続可能な方法で維持することは、Web3プロジェクトにとって顕著な課題である。
この課題に対処するため、プロジェクトには二つの方向性を検討することを提案する。第一にAIを活用して自動化と生産性を高め、人的リソースの大量投入を減らすこと。第二にコミュニティの力を借り、貢献をインセンティブ化すること。
-
AIの活用:大量のドキュメントの生成と維持には膨大なリソースが必要となる。大規模言語モデル(LLM)は、高品質なドキュメントの作成と維持を支援できる。さらに、AI駆動のQ&Aチャットボットは開発者の質問に迅速かつ正確に回答し、体験をさらに向上させる。
-
コミュニティ参加のインセンティブ化:コミュニティの参加を促進するために、プロジェクトは財政的・非財政的インセンティブを含むさまざまな報酬を提供できる。例えば、バウンティプログラムをコード、コードベースのテスト、ドキュメント改善、翻訳作業、そしてユーザーからの貴重なフィードバックへの貢献にまで拡大できる。このようなフィードバックは、プロジェクトチームが製品改善の方向性を決める実際のニーズを反映している。このアプローチは、リソースの質の向上に加え、維持コストの削減にもつながる可能性がある。Discord、Substackなどの活発なコミュニティチャンネルを通じて貢献を公に認め、称賛を与える。
開発者中心の設計を重視し、コミュニティの協働によって魅力的な開発者体験を提供することで、Web3の世界に活力あふれ、包括的な開発者エコシステムを育てることができる!
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














