今回はweb3のプロダクト開発で気をつけるべき点について、受託者・発注者両方の側面からお伝えしていきます。web3ならではの注意点として「スマートコントラクト」に関連する事項にも触れています。web3のプロダクト開発を検討中の方は参考にしてみてください!
スピーカー:洪英高
ダイバーシーズ代表取締役
通貨不安定国向けWeb3版Patreonを開発中。ETH Online, ETC CC, Devconで累計$20000以上入賞経験あり。デジタルノマドとして世界中を暮らし回っている。
公式サイト: https://www.notion.so/Hidetaka-Ko-JP-d4b43ff09bef4467a00e59efc6edd98f
Twitter: @SoccerKinki
スピーカー:秋田谷 蘭
ガイアックス web3事業本部
ビジョンに共感し、熱意を持ったメンバーが集まり自立分散的に活動をしていくDAOの面白さに惹かれ、自ら手を挙げweb3事業本部にて活動。現在は、コンサルメンバーとして様々なDAOの組成やコミュニティ運用に携わっています。「DAO×◯◯」で人々の生活がもっと面白く豊かになるような仕組みをつくるのが直近の目標です。
web3のプロダクトの開発の注意点
みなさん、こんにちは。
ガイアックスweb3事業本部の秋田谷です。
今日はweb3の受託開発の注意点について、株式会社ダイバーシーズのHidetakaさんに ご質問させていただきます。
よろしくお願いします。
お願いします。
まず最初にお聞きしたいのは
web3の プロダクトの開発の注意点に関して、あれば教えていただけますでしょうか?
基本的にはweb3だからといって、従来のweb2におけるプロダクト開発の受託開発や、受注発注と大きく離れる事はないのではないかと考えています。
まずは要件を明確に定義し、適切なバッファーを持って見積もりを行い、お互いの期待値を調整することが大切。 開発が予定より遅れる可能性がある場合でも、お互いの期待値がズレないように調整する必要があります。 どちらの受託開発も経験してみて、納期を設定し、それが契約書に反映されているかをしっかり確認する事はとても重要だと感じています。
ありがとうございます。
ちなみにweb2と基本的には 同じという話だと思いますが、あえて違いを挙げていただくとしたら、ここは注意すべきとかはありますか?
テクニックなところの議論にはなってきますが、スマートコントラクトという技術が大きな違いです。スマートコントラクトは例えばプログラムがその処理を実行するための、契約書みたいなものですが、 普通の契約書は定期的に見直しや更新が行われます。家やお金を借りる場合や給与契約書、業務委託契約書なども定期的に見直され、更新されます。スマートコントラクトでも同様に、バグが見つかったり料金が変わったりする可能性があるため、更新可能にすることが重要です。更新可能にしておかないと、トラブルが生じる可能性があります。
また、Web2との違いとして、テストネットとメインネットがあります。Web2の場合、テスト環境とメイン環境もありますが、基本的にそのメイン環境ではデータは自社のデータベースやWebサイトに残りますが、外部からのアクセスはありません。しかし、メインネットで展開すると、データはブロックチェーンというパブリックなデータベースにのせる事になります。データをのせる仕組みを作るということなので、気にしないことも多いかもしれないですが、例えるとタトゥーのようにデジタルなところに 残ってしまう可能性がある為、注意が必要です。なので、まずはテスト環境で何回も実験することが重要かなと思います。
最後に、Web3はWeb2と比べてまだ開発途上の技術であり、バグが頻繁に発生します。バグが発生すると、エンジニアは問題を調査しますが、実際の問題はプロダクトやインフラの開発者によるバグであることがよくあります。そのバグは予測しにくい場合もあるため、見積もりや期待値の調整を長めに行う必要があります。問題が発生した場合も、相手側にも原因がある可能性も考慮し、Discordでリレーションしながら、コミュニケーションを取りながら解決することが重要です。そういったリレーションをマネージメントするエンジニアが存在し管理してくれるので、問題が発生した場合でも素早く対応してくれます。
相手側にも原因があるのではないかと 疑うくせを持つことが、開発スピードを早めて実装していく上で、とても重要なことかなと思います。
受注側で気をつけること
今のお話は受託側の気をつけること になるのかなと思いましたが、その他で何か受託をもしする場合に、ここ気をつけるべきだよというところがあれば、教えていただけますでしょう?
受託する時。 基本的には今いったところが、思いつく限りかなという感じです。
納期を長めに設定するというところだったり、あとはバグが起きた時に、自分達の部分以外の部分にも、原因がないのかというのを確認しに行く というところだったり、密にコミュニケーションを取りにいく みたいな3点になりますかね?
そうですね、そう思います。
発注する立場で気をつける点
では逆に発注する立場で 気を付ける点があれば、教えていただけたらと思います。
発注する立場からの視点では、非常に重要なのは要件を明確にすることです。これは当然のことですが、Web3を使用したい内容や、どのWeb3の技術を利用したいのか、アップグレードの必要性や期間など、具体的な要件を事前に明確にする必要があります。
また、余裕を持ったバッファーを考慮するなど、要件の前提条件を受注者と確認することも重要です。もし要件が明確でない場合は、要件定義から協力を仰ぐなど、双方が合意できる形でアラインメントを図ることが重要です。
発注する立場もやはり受託側が気をつけること、受注する側が気をつけることを 把握した上で発注する、みたいなところができると 良いのかなと思いました。
これまでの失敗事例
では、Hidetakaさんのもし 差し支えない範囲で構わないですけれども、何かこれまでの失敗事例があれば、参考にさせていただきたく 伺えると幸いです。
Web3に限らない話ですが、契約の形態や報酬体系についても明確にすることは非常に重要です。
請負契約なのか、準委任契約なのか、時給制なのか、また納品物がある場合は、具体的にどこまでが納品物とされるのか、その後のバグ修正や質問への対応は報酬に含まれるのかなど、これらの点を明確にする必要があります。
時々、このようなポイントを曖昧にすることで、どちらか一方にコストがかかったり、請求ができなかったりするといった失敗を過去に経験された方も多いかもしれません。そのため、契約に関する詳細を明確化し、双方が納得できる形で合意を形成することが重要です。
ありがとうございます。
ちなみに回数を重ねていくと、ここで失敗しそうだとか、ここが重要だというのが 分かってくると思いますが、結構、最近でもこうしておけば良かったな と思うことはありますか?
そうですね、お互いの認識を一致させるための可視化や契約書や契約書以外のアウトプットを通じて合意しておくことが重要です。具体的な機能や開発内容について、時間の見積もりや実際の開発にかかる時間を明確に示すことが必要です。
もっと分かりやすくするために、事前に整理しておけばよかったということはありました。具体的な機能の範囲や時間の見積もりに基づいて、次の作業や追加の要件についても明確にすることが重要です。
ありがとうございました。
それでは本日はweb3の 受託開発の注意点に関して、株式会社ダイバーシーズのHidetakaさんに お話を伺いました。
Hidetakaさんありがとうございました。
ありがとうございます。