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

WYSIWYGウェブページビルダーを支える技術とSever Driven UIへの拡張

MysticHarbar
November 22, 2024
60

WYSIWYGウェブページビルダーを支える技術とSever Driven UIへの拡張

JSConfJP 2024 Track D

MysticHarbar

November 22, 2024
Tweet

Transcript

  1. 5 Engagement Platform(EGP) • 内製のマーケティングツール ◦ ポイント/クーポン management ▪ インセンティブの配布

    ▪ Push通知の送信 ◦ キャンペーンの作成 ◦ EGP Pages ▪ LPの作成、公開 • メルカリグループ全体の共通基盤(USを除く)
  2. 6 EGP Pages • LP作成のためのWYSIWYGエディタ • コンポーネント ◦ Text ◦

    Image ◦ Layout ◦ ItemList ◦ Lottie ◦ Entry Button ◦ 全28種類 • 条件付きレンダリング
  3. 8 Team • FE + PM • Tech Stack ◦

    React ◦ Next.js ◦ @reduxjs/toolkit ◦ MUI ◦ FireStore ◦ など
  4. 17

  5. 23

  6. 28

  7. 30 Native Bridge • Webview ⇔ Mobile間で双方向通信がしたい ◦ カスタムURLスキーム ▪

    単方向 ▪ セキュリティリスク有 • Onix(内製Native Bridge) ◦ Channel Messaging APIを利用した双方向通信をサポート ◦ OS, versionによるAPIの差分を吸収 ◦ Channel Messaging APIをサポートしていないバージョンの場合 Deep linkへfallback ◦ 今後はFlutterへも対応
  8. 38 前提 • 各プロダクトのtech stack ◦ Mercariアプリ => Swift および

    Kotlin ◦ Mercari shops, はたらくタブ => アプリ内Webview ◦ Mercari Hallo => Flutter ◦ Mercari Web => Web
  9. 39 メリット • 迅速な機能リリースが可能 ◦ サーバー側の変更でUIを更新できるため、アプリのアップデートを待 たずにリリースできる • クライアント側の実装を簡素化できる •

    クロスプラットフォームの一貫性を保ちやすい ◦ iOS, Android, Flutter, Web • Nativeで描画するため Webviewと比べてパフォーマンスが良い
  10. 41 Card UI Protocol • JSONベースの仕様 ◦ Tree Node ◦

    Style ◦ Event handler • クロスプラットフォーム UIを記述
  11. 43

  12. 45

  13. 46 まとめ • EGP Pagesとは ◦ WYSIWYGウェブページビルダー ◦ エディタで編集、最終的にはstaticなhtmlを配信 ▪

    Web => そのまま描画 ▪ Mobile => Webview経由で描画 • EGP Pagesの仕組み ◦ エレメントはschemaに沿ったjsonの塊。再帰的にreactで描画 ◦ Tailwindでスタイリング • Server Driven UI ◦ EGP cards ◦ EGP Pagesのエディタの仕組みを流用 ◦ Protocolに沿ったjsonを元にネイティブのUIとして描画