UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Shopify】OxygenとHydrogen

ShopifyのHydrogenやOxygenを知らなかったので調べた

Hydrogen

こちらが参考になった www.smashingmagazine.com

Hydrogenはオンラインストアのサイト(ストアフロント)構築の複雑さを解消し、ブランドを際立たせる体験の構築に集中させることを目的としたReact ベースのフレームワーク

Shopifyはオンラインストアの経験から商取引の未来は動的にパーソナライズされていることだと考え、動的な取引を有効にするには、サーバーとクライアントの緊密なインテグレーション、最適化されたストリーミングやデータフェッチ戦略、および大規模に動作するプラットフォームが必要ということでHydrogen開発に取り組んできたとのこと

オンラインストアはバックオフィス業務の接続から、A / Bテストおよび各顧客のパーソナライズなど動的でなければならないことが多いので、基盤はSSRで構築し、その上にキャッシングや事前レンダリング、エッジ配信などの機能を実装している

以下の記事では動的なパーソナライズのためのHydrogenの主な特徴の話をしている

shopify.engineering

Hydrogenの主な特徴は以下

  • Reactのサスペンスを利用した高速ファーストレンダリングのためのストリーミングサーバーサイドレンダリング
  • 効率的なレンダリング後のコンポーネントレベルの状態更新のためのReactサーバーコンポーネント
  • スマートキャッシュを使用した効率的なサーバーおよびクライアントデータフェッチプリミティブ
  • 動的なエッジ配信のための柔軟なページキャッシュとリクエストキャッシュ制御

Streaming SSRやReactサーバーコンポーネントについては以前まとめた

【Next.js】Next.js 12のNew Streaming SSR - UGA Boxxx

【Next.js】Next.js 12のReact Server Components - UGA Boxxx

Next.js以外にもReact18の機能を取り込もうとしているフレームワークがあることを知って驚いた

そして、Next.jsにおけるVercelと同じ?ようにキャッシュを使用してHydrogenを効率よく稼働するためのデプロイ環境がOxgenらしい

Oxygen

OxygenはHydrogenをデプロイするための shopify.dev

Oxygenは、Shopifyがホストする新しいV8 Isolateを利用したJavaScriptワーカーランタイム

OxygenにHydrogenをデプロイすると、Hydrogenサーバーコンポーネントはローカルホスト速度でStorefront APIにクエリを実行する

ファーストパーティのフェッチの場合は、ストアデータとレンダリングが同じサーバー側にあるためミリ秒単位で処理し、サードパーティのフェッチの場合は、スマートキャッシュとキャッシュ戦略で拡張された標準のFetchAPIを使うことで高速に処理することができる

いまのところOxygenは、一部の加盟店で早期アクセスプレビューを行っているだけで一般利用はできないとのこと

他参考

https://shopify.dev/custom-storefronts/hydrogen/framework/cache

https://rewired.cloud/shopify-hydrogen-first-look/