新たなLiquidセクションプロパティとデフォルトの画像タグ向け遅延ロード機能

技術的課題の定義と現状分析

Shopifyのフロントエンド開発において、ページ下部に位置するセクションにおけるimage_tagのパフォーマンス最適化は一部の技術者にとって課題でした。また、レイアウト位置に依存した他のWebパフォーマンス問題、特に上部コンテンツの遅延ロードや非同期CSSロードによるレイアウトシフトの修正をセクション設定に依存せずに行うことが求められてきました。

具体的な技術的ソリューションの提案

この問題を解決するため、Shopifyは新たなLiquidセクションプロパティを提供し、image_tagのデフォルトの遅延ロード機能を追加しました。これにより、ページ下部に位置するセクション内の画像はデフォルトで遅延ロードされ、パフォーマンスが最適化されます。また、新たに追加された以下のセクションプロパティを利用することで、レイアウト位置に依存したWebパフォーマンス問題の修正が可能になります。

  • section.index - セクションが所属する位置内での1始まりのインデックス
  • section.index0 - セクションが所属する位置内での0始まりのインデックス
  • section.location - セクションの位置(例:テンプレート、セクショングループタイプなど)

実装手順とコード例

新たに追加されたセクションプロパティを利用するためには、Liquidテンプレート内で以下のように使用します。


{% if section.index > 2 %}
  {{ image_tag src="..." loading="lazy" }}
{% else %}
  {{ image_tag src="..." }}
{% endif %}

上記の例では、セクションが3番目以降の位置にある場合にimage_tagを遅延ロードするように設定しています。

パフォーマンス・コスト分析

この新機能により、ページ下部に位置するセクションにおけるimage_tagのロードが遅延されるため、ページの初期ロード時間が短縮され、ユーザーエクスペリエンスが向上します。また、新たなセクションプロパティを利用することで、レイアウト位置に依存したWebパフォーマンス問題をセクション設定に依存せずに修正することが可能になり、開発効率が向上します。

実装時の注意点・ベストプラクティス

新たなセクションプロパティを利用する際には、各プロパティの意味を正確に理解し、適切な位置で使用することが重要です。また、image_tagの遅延ロードを設定する際には、上部コンテンツの遅延ロードを避けることで、ユーザーエクスペリエンスの悪化を防ぐことができます。

次のステップ・発展案

今後は、これらの新機能を活用し、Webパフォーマンス問題の解決だけでなく、さらなるパフォーマンス最適化やカスタマイズの可能性を開拓していくことが期待されます。また、Shopifyの開発者文書を参照し、新たなimage_tagの振る舞いや新たなセクションプロパティの使用方法を学ぶことをお勧めします。

参考記事: New Liquid section properties and default lazy loading for image tags