Slide 1

Slide 1 text

Gaudiy Fanlinkを支える アーキテクチャの変遷 勝又 拓真 2022/09/15

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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独自のトークングラフ形成と
 マーケティング活動が可能

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

4 シード〜現在までの変化で重要なところ i m p o r t a n t ホワイトラベル化の必要性 ↓ 拡張性高い設計によるプロダクトへのレバレッジ NFTのユーティリティファーストへ変化 ↓ NFTのユーティリティを開発しやすくするサービス化 開発組織拡大でも自律的な文化を維持する ↓ 開発チームでアーキテクチャを作り上げる文化

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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 チケット・配信 エンタメ
 キャンペーン

Slide 10

Slide 10 text

7 採用しているDDDのプロセス D D D p r o ce s s ユーザー
 ストーリーマップ ユースケース
 洗い出し ユースケース
 洗い出し 具体
 モデリング 抽象
 モデリング データ
 モデリング 実装

Slide 11

Slide 11 text

8 具体→抽象へドメインモデルを磨いていく戦略的DDD St ra t e g i c D D D ドメイン
 エキスパート モデリングをやっていると「こういう設計のが良いな。。。」という気持ちが強くなる  ドメインエキスパートの知識を簡略化したり軽視してしまうケースがあるので、システム設計的観点を少し抑えてヒアリングに注力する エンジニア エンジニア 具体
 モデリング 抽象
 モデリング

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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次流通 ユーティリティ … 限定チャット クーポン 電子書籍

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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の関係性は サービス間の依存関係も同じ

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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は開発ロールはエンジニア以外存在しなく、基本的にフラットな組織形態 ↓ ・この体制によってエンジニア一人一人が組織横断的な課題の解決を自律的に行うことができ、視座が高く保てる  ・新しいアーキテクチャの導入・改善や開発横断の課題は解決策を各々がリーダーシップを持って提案をし、   チームでブラッシュアップしてフォロワーシップを持って複数人で実行していく

Slide 19

Slide 19 text

ありがとうございました