「PWA Night vol.10 ~PWA × 技術~」に参加してきました

  • PWA Night vol.10 ~PWA × 技術~に参加してきました。

pwanight.connpass.com

タイトル 発表者
とある個人開発PWAのSEO奮戦記 大岡由佳さん
PWA×クラウドゲーミング おりばーさん
コードサイズの大きなプログラムのロード時間:WebAssemblyの場合 @chikoskiさん
うわさのJAMStackでPWAをさわってみた のまどまんさん
Monaca × PWA × 3D VMT-Yamashitaさん

とある個人開発PWAのSEO奮戦記

  • 大岡由佳さん(@oukayuka)

Mangarel

  • 個人でPWAなアプリを作った
  • Googleで検索しても3件しかひっかからない
    • 1万ページ以上存在してるのに
    • 最近のクローラーはJS解釈してくれるんじゃなかったのか・・
  • Problem
    • ページがインデックスされない
    • タイトルや詳細が個別に表示されない
    • コンテンツがレンダリングされない

ページがインデックスされない

  • サイトマップを作って送った
  • 正常に処理されましたと返ってきたけど
    • 認識はされるけどExclusionに入ってる
    • 内部リンクされてないのが原因?
  • ページを増やして内部リンクを増やした
    • 少しずつインデックスされるページが増えてきた!

タイトルや詳細が個別に表示されない

  • React HelmetでHTMLヘッダを上書き
    • ブラウザからは書き換わってるけどGoogle上では変わってない
  • CloudFunctionsで動的にヘッダを書き換えた
    • ボットからのアクセスの時だけ発動するように

コンテンツがレンダリングされない

  • SearchConsoleで試してみたらFirestoreからデータをとってくるはずがとってこれてない
    • ページによっては運がよければ表示される
    • レンダリングに時間がかかると諦めてるっぽい
  • Lighthouseで計測したらパフォーマンス50点台
  • TreeShakingした
    • ビルド時に不要なコードを削除
  • CodeSplitting
    • 初回のレンダリング時には必要なJSだけロードしそれ以外は遅延ロード
  • Lighthouse60点台
  • 無限スクロール

PWA×クラウドゲーミング

  • おりばーさん@Black Inc.(@oliver_diary)

クラウドゲーミング

OOParts

  • 開発してるクラウドゲーミング
  • ゲームをWebブラウザでアクセスするときの残念なところ
    • アドレスバーが邪魔
    • 余白がもったいない
    • アクセスするまでの導線が長い
    • => PWA化で解決!
  • 他にも
    • 起動時の初期表示が速い
    • アプリと違って審査いらない
  • PWAとクラウドゲーミングの相性抜群

コードサイズの大きなプログラムのロード時間:WebAssemblyの場合

  • @chikoskiさん

WebAssembly

WebAssemblyのいいところ

  • JSあるのになぜWebAssembly?
    • エコシステム
      • 他の言語の資産を使える
    • パフォーマンス
      • 速いけどそれだけじゃなくてブレが少なくて安定感が高い
  • 音声ファイルの扱い
    • ファイルサイズでかいので圧縮してmp3にして扱いたいとか
    • でもJSだけではできないのでWebAssemblyが役立つ

WebAssemblyの注意点

  • コンパイルするとjsとwasmが出力される
    • ファイルサイズがでかい
    • キャッシュを活用する
    • ネイティブのコードはブラウザにキャッシュされる
  • キャッシュにのったコードをいかに使い続けるか
    • 不必要なコードの変更をしない
      • ドメインとファイルを対応づけて保存されている
      • コンテンツが変わったら破棄されてしまう
    • URLを変更しない
      • クエリも変わらないように
    • ステータスコードを正しく返す
      • 200が返ると新しいコンテンツが来たと認識する
      • 変わってなければ304を返す
    • wasmのファイルを小さくしすぎない
      • 小さすぎるとキャッシュが破棄される(150kb以下くらい)
    • 最適化オプションをつける
    • システムライブラリをシェアする
    • application/wasmをつける
      • 全部のデータをダウンロードする前にある程度溜まったらコンパイルするという動きをしてくれる

うわさのJAMStackでPWAをさわってみた

  • のまどまんさん

JAMStack

  • 動的なデータコンテンツを取り扱う静的サイト
  • 事前に静的ページを生成しておく

JAMStack作ってみた

PWA化してみた

  • GatsbyにPWAのプラグインがある
  • キャッシュ使ったらパフォーマンス上がった
    • コンテンツがユーザ単位などで頻繁に変わる場合はキャッシュが活かしきれないかも

Monaca × PWA × 3D

  • VMT-Yamashitaさん

Monaca

  • ハイブリット開発環境
  • PWAのテンプレートがある