「Mercari Web / Frontend meetup #1」に参加してきました

Modern Webを作ろう / Progressive Web Apps と AMP

ModernWeb

  • Modern Web is now mainstream
    • 去年のGoogleIOで繰り返し言われてた
  • アプリからWebに帰ってきた

ユーザが求めるもの

  • 速いWeb
  • 古いWeb
    • ロード遅い
    • レスポンシブじゃない
    • コンテンツ動き回る

速いとは?

Webサイトを早く表示するためのフレームワーク

AMP

アプリのようにリエンゲージ

  • ModernWebはホームに追加できる
  • アプリのように動く
  • スプラッシュ画面もある
  • manifest.jsonを書くとできるようになる
    • ServiceWorkerは必須
  • beforeinstallprompt
    • ホーム追加のプロンプトが出る直前に発火するイベント
    • プロンプト出したくない場面ではこれを監視しておくといい

オフライン対応

  • オフライン時はフォールバックページを返す
  • ServiceWorkerで実現

プッシュ通知

  • パーミッション求めるプロンプト出すタイミング注意
    • サイトに入ってすぐは悪い例

フォームの入力を自動で

  • CredentialManagementAPI
  • ブラウザに保存したID/PWを使って勝手にログインしておいてくれる

支払いフォーム

ModernWebとは

  • PWAとは
  • 新たなUXの基準
    • プッシュ通知
    • ホーム画面追加
    • パフォーマンス
    • 常にログオン
    • 簡単な支払い

Whats Next

  • ios11.3からServiceWorker使える
    • プッシュ通知はできないっぽい
  • MicrosoftStoreにPWAアプリを出せる

メルカリにおける PWA と AMP について

  • 小嶋 仁司氏(メルカリ)

Mercari Web

  • 流通量1日100万点
    • 商品の詳細画面が1日100万ページ増えるということ
  • アプリファーストから多様化へ

AMP

  • 2016/7詳細ページをAMP化
    • アクセス速度は向上した
    • でもgoogleの検索からアイテム詳細に遷移する導線が少ない
  • 2017/11カテゴリページをAMP化
    • 比較的検索されやすいところから
    • 自然検索流縫う45%増(他の要因もあるが)

PWA

プッシュ通知

  • 2017/8プッシュ通知を実装
    • 基本的にアプリと同一の内容
    • ブラウザ経由でnotificationの許可の難易度の高さ

オフライン対応

今後

  • US Webから着手
    • 通信弱いところから
  • JP Webは体制整い次第
  • mobile safariどうするか

これからのWebにおけるSSR / BFF について

BFF

BFFとは

  • Backends for Frontends
  • フロントエンドのためのバックエンドのこと
  • APIを束ねたりページを作ったり

なぜBFF?

組織的な話
  • これまでのWeb
    • モノリシック
    • Ajaxインタラクティブ
    • テンプレートからJSを呼び出してしまったり
    • JSでDOMの中ゴリゴリロジック書く
    • 暗黒のUIになる
  • Webアプリケーションフレームワークだからといってなんでもやるのはダメ
    • 権限を分離したい
  • データ管理はバックエンド
  • UIはフロントエンド
    • UI
    • BFF
歴史的な話
  • 名前がついただけで新しい話ではない
  • まずはフロントエンドとバックエンドに分ける
  • よりコンテクストを意識してマイクロサービス化を検討

SSR

SSRとは

  • Server Side Rendering
  • ClientSideでHTMLを作るのと同じロジックコンポーネントを使ってサーバ側でもやること

なぜSSR

SEOのため
  • googleのクローラは100%JSを実行してくれる保証はない
First View Performance
  • First View Performanceをより速くする
  • FirstMeaningfulPaintまでの速度を上げたい
    • SPAではFirstMeaningfulPaintとTimeToInteractiveはほとんど一緒
    • ClientSideRenderingだけでは時間が無駄
  • そこでSSR
  • BBF導入するときはSSRまでセットのほうがビジネス的メリットが大きい

実践例

まとめ

  • BFFはなんのため
    • 権限分離と開発しやすさ
  • SSRってSEOいらないならいらないんじゃ
    • FirstMeaningfulPaintを最適化するために必要
  • BFF/SSR難しいんじゃないか
    • 最初は設計難しい
    • Next.jsとかNuxt.jsとか出てきてる