Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gaudiy Fanlinkを支えるアーキテクチャの変遷

Gaudiy Fanlinkを支えるアーキテクチャの変遷

Takuma Katsumata

September 14, 2022
Tweet

More Decks by Takuma Katsumata

Other Decks in Technology

Transcript

  1. Gaudiy Fanlinkを支える

    アーキテクチャの変遷
    勝又 拓真
    2022/09/15

    View Slide

  2. アジェンダ
    プロダクト全体のアーキテクチャ
    01.
    拡張性高い設計によるプロダクトへのレバレッジ
    02.
    NFTのユーティリティを開発しやすくするサービス化
    03.
    開発チームでアーキテクチャを作り上げる文化
    04.

    View Slide

  3. 1
    多種多様なドメインを扱うGaudiy Fanlink
    G a u d i y Fa n l i n k f o r a v a r i e t y o f d o m a i n s
    コミュニティを起点に、自律分散的なファンによる経済圏を実現し、ファンが自分のIPを常に感じて暮らせる社会を作ろうとしている
    SNS
    t 投稿・コメント・いいねなどの基本機q
    t チャットやDMなどのメッセージ機能
    SNS
    t 投稿・コメント・いいねなどの基本機q
    t チャットやDMなどのメッセージ機能
    SNS
    t 投稿・コメント・いいねなどの基本機q
    t チャットやDMなどのメッセージ機能
    ID連携・決済
    t 外部サービスとのID連携を低コストで実ˆ
    t サービスを横断したファン体験の構築
    ID連携・決済
    t 外部サービスとのID連携を低コストで実ˆ
    t サービスを横断したファン体験の構築
    ID連携・決済
    t 外部サービスとのID連携を低コストで実ˆ
    t サービスを横断したファン体験の構築
    現在準備中
    t メタバー©
    t De-Fª
    t グローバルローカライズ

    etc...
    現在準備中
    t メタバー©
    t De-Fª
    t グローバルローカライズ

    etc...
    現在準備中
    t メタバー©
    t De-Fª
    t グローバルローカライズ

    etc...
    NFT・ブロックチェーン
    t NFTの販売/配布/パブリックチェーンへの書き出Ð
    t 動画/音声/投票券など多様なユーティリティ付与
    NFT・ブロックチェーン
    t NFTの販売/配布/パブリックチェーンへの書き出Ð
    t 動画/音声/投票券など多様なユーティリティ付与
    NFT・ブロックチェーン
    t NFTの販売/配布/パブリックチェーンへの書き出Ð
    t 動画/音声/投票券など多様なユーティリティ付与
    ファン投票/DAO
    t ファン活動で得たNFTを使った投票が可q
    t ファンを意思決定に巻き込むDAO構築を実現
    ファン投票/DAO
    t ファン活動で得たNFTを使った投票が可q
    t ファンを意思決定に巻き込むDAO構築を実現
    ファン投票/DAO
    t ファン活動で得たNFTを使った投票が可q
    t ファンを意思決定に巻き込むDAO構築を実現
    トークングラフマーケティング
    t SNSやイベント、商品購入など

    様々なファン活動にNFTを配布。

    IP独自のトークングラフ形成と

    マーケティング活動が可能
    トークングラフマーケティング
    t SNSやイベント、商品購入など

    様々なファン活動にNFTを配布。

    IP独自のトークングラフ形成と

    マーケティング活動が可能
    トークングラフマーケティング
    t SNSやイベント、商品購入など

    様々なファン活動にNFTを配布。

    IP独自のトークングラフ形成と

    マーケティング活動が可能

    View Slide

  4. 2
    現在のGaudiy Fanlinkアーキテクチャ
    G a u d i y Fa n l i n k A r c h i t e c t u r e
    Frontend
    Next.js
    TypeScript
    Apollo Client
    BFF
    TypeScript
    Apollo Server
    Backend
    Kotlin Go
    Send Tx
    GraphQL REST・gRPC
    Sync On-Chain data
    Cloud Spanner
    Cloud Run
    Vercel
    Ethereum Polygon etc...
    NFT service
    BE services

    View Slide

  5. 3
    シード期のGaudiy Fanlinkアーキテクチャ
    G a u d i y Fa n l i n k a r c h i t e c t u r e i n t h e s e e d p h a s e
    圧倒的な初動の開発速度!

    開発が進むにつれてDBスキーマの変更され、アプリケーションが壊れやすくなってきた
    Firebase Hosting
    Cloud Firestore
    Cloud Function
    Frontend
    Next.js
    TypeScript
    SSR
    read/write data
    extends Firestore
    trigger by

    changing Firestore

    View Slide

  6. 4
    シード〜現在までの変化で重要なところ
    i m p o r t a n t
    ホワイトラベル化の必要性



    拡張性高い設計によるプロダクトへのレバレッジ


    NFTのユーティリティファーストへ変化



    NFTのユーティリティを開発しやすくするサービス化


    開発組織拡大でも自律的な文化を維持する



    開発チームでアーキテクチャを作り上げる文化

    View Slide

  7. 拡張性高い設計による

    プロダクトへのレバレッジ

    View Slide

  8. 5
    IPごとにホワイトラベルなコミュニティを形成するように変わった
    C h a n g e s t o f o r m w h i t e - l a b e l e d co m m u n i t i e s p e r I P
    IPごとにホワイトラベルなコミュニティを作っていくことで、

    様々なドメインの機能を開発したり、IP横断で利用できるような汎用性の高さが重要になってきた
    IPに特化した

    ホワイトラベル化
    旧Gaudiy
    コミュニティA
    コミュニティB
    コミュニティC
    旧Gaudiy
    コミュニティA
    コミュニティB
    コミュニティC

    View Slide

  9. 6
    様々なドメインを正しく理解することをDDDで加速させる
    A cce l e ra t e p r o p e r u n d e r st a n d i n g o f v a r i o u s d o m a i n s w i t h D D D
    ・多種多様なドメインが存在する1つのプロダクト

     ・ヒアリングを通して、正しくドメインを理解し、プロダクトの将来の方向性を見極めて設計によってレバレッジをかける
    決済・EC
    Gamification
    SNS NFT
    チケット・配信
    エンタメ

    キャンペーン

    View Slide

  10. 7
    採用しているDDDのプロセス
    D D D p r o ce s s
    ユーザー

    ストーリーマップ
    ユースケース

    洗い出し
    ユースケース

    洗い出し
    具体

    モデリング
    抽象

    モデリング
    データ

    モデリング
    実装

    View Slide

  11. 8
    具体→抽象へドメインモデルを磨いていく戦略的DDD
    St ra t e g i c D D D
    ドメイン

    エキスパート
    モデリングをやっていると「こういう設計のが良いな。。。」という気持ちが強くなる

     ドメインエキスパートの知識を簡略化したり軽視してしまうケースがあるので、システム設計的観点を少し抑えてヒアリングに注力する
    エンジニア
    エンジニア 具体

    モデリング
    抽象

    モデリング

    View Slide

  12. 9
    Server-Driven UIによる多種多様なIPのUIを表現
    S e r v e r- D r i v e n U I f o r a v a r i e t y o f I P s
    様々なIPのコミュニティやUIを表現する必要があるため、SDUIを利用し、複雑な表示の切り替えを可能
    GraphQL
    FE
    sections[0]
    nav
    sections[1]





    union =

    |

    Section
    TopicSection

    ChatSection

    UI is constructed with Section

    from GraphQL Response
    Logic to construct UI

    View Slide

  13. NFTのユーティリティを開発しやすくする

    サービス化

    View Slide

  14. 10
    NFTのユーティリティファーストへの変化
    C h a n g e t o N F T u t i l i t y fi r st
    NFT
    NFTを所有したユーザーしか得られないユーティリティをエコシステムとして作っていく
    旧Gaudiy
    NFT

    所有できる

    +

    2次流通 ユーティリティ

    限定チャット クーポン 電子書籍

    View Slide

  15. 11
    ブロックチェーンの複雑性を閉じ込めたサービス化
    S e r v i ce t h a t co n fi n e t h e co m p l e x i t y o f t h e b l o c kc h a i n
    ・GaudiyとしてはUXを考えたとき、「On-Chain Write・Off-Chain Read」を基本としたブロックチェーン設計をしている

    ・ブロックチェーン自体はそこまで検索性に優れたシステムではないため、on chainのデータをoff chain(gaudiy内のDB)に移し、サービス化している
    NFT service
    Frontend
    User Wallet
    Alchemy(Blockchain Node Provider)
    Send Tx

    On-Chain Write
    Sync On-Chain data
    Store On-Chain data
    Off-Chain Read
    Ethereum Polygon ・・・
    Spanner

    View Slide

  16. 12
    Gaudiy内のNFTサービスを利用した、ユーティリティサービス
    U t i l i t y s e r v i ce u s i n g N F T s e r v i ce i n G a u d i y
    特定のNFTを持つユーザーのみが参加可能な限定チャット
    check availability

    to join chat
    fetch NFT by User
    sync 

    On-Chain data

    Gaudiy NFT Contract
    3rd party NFT Contract
    NFT service
    Chat Service
    Spanner
    ユーティリティとNFTの関係性は

    サービス間の依存関係も同じ

    View Slide

  17. 開発チームで

    アーキテクチャを作り上げる文化

    View Slide

  18. 13
    組織拡大をしてもなお、チームでアーキテクチャを含む開発課題を改善していく
    A u t o n o m o u s c u l t u r e t o i m p r o v e d e v i s s u e s i n t e a m s
    ・Gaudiyは開発ロールはエンジニア以外存在しなく、基本的にフラットな組織形態



    ・この体制によってエンジニア一人一人が組織横断的な課題の解決を自律的に行うことができ、視座が高く保てる

     ・新しいアーキテクチャの導入・改善や開発横断の課題は解決策を各々がリーダーシップを持って提案をし、

      チームでブラッシュアップしてフォロワーシップを持って複数人で実行していく

    View Slide

  19. ありがとうございました

    View Slide