コンテンツにスキップ
Pages Routerガイドサードパーティライブラリ

サードパーティライブラリの最適化方法

@next/third-parties は、Next.js アプリケーションで一般的なサードパーティライブラリの読み込みパフォーマンスと開発者エクスペリエンスを向上させるコンポーネントとユーティリティのコレクションを提供するライブラリです。

@next/third-parties が提供するすべてのサードパーティ統合は、パフォーマンスと使いやすさのために最適化されています。

はじめに

開始するには、@next/third-parties ライブラリをインストールしてください。

ターミナル
npm install @next/third-parties@latest next@latest

@next/third-parties は現在、活発な開発中の実験的なライブラリです。より多くのサードパーティ統合を追加する作業を進めているため、最新またはカナリアフラグを付けてインストールすることを推奨します。

Googleサードパーティ

Google がサポートするすべてのサードパーティライブラリは、@next/third-parties/google からインポートできます。

Google Tag Manager

GoogleTagManager コンポーネントを使用して、ページに Google Tag Manager コンテナをインスタンス化できます。デフォルトでは、ページでのハイドレーション後に元のインラインスクリプトを取得します。

すべてのルートで Google Tag Manager を読み込むには、カスタム _app にコンポーネントを直接含め、GTM コンテナ ID を渡してください。

pages/_app.js
import { GoogleTagManager } from '@next/third-parties/google'
 
export default function MyApp({ Component, pageProps }) {
  return (
    <>
      <Component {...pageProps} />
      <GoogleTagManager gtmId="GTM-XYZ" />
    </>
  )
}

単一のルートで Google Tag Manager を読み込むには、ページファイルにコンポーネントを含めてください。

pages/index.js
import { GoogleTagManager } from '@next/third-parties/google'
 
export default function Page() {
  return <GoogleTagManager gtmId="GTM-XYZ" />
}

イベントの送信

sendGTMEvent 関数を使用して、dataLayer オブジェクトを使用してイベントを送信することにより、ページ上のユーザーインタラクションを追跡できます。この関数を機能させるには、<GoogleTagManager /> コンポーネントが、親レイアウト、ページ、またはコンポーネントのいずれか、または同じファイルに直接含まれている必要があります。

pages/index.js
import { sendGTMEvent } from '@next/third-parties/google'
 
export function EventButton() {
  return (
    <div>
      <button
        onClick={() => sendGTMEvent({ event: 'buttonClicked', value: 'xyz' })}
      >
        Send Event
      </button>
    </div>
  )
}

さまざまな変数とイベントについて、Tag Manager の 開発者ドキュメント を参照してください。

サーバーサイドタグ付け

サーバーサイドタグマネージャーを使用しており、タグ付けサーバーから gtm.js スクリプトを提供している場合は、gtmScriptUrl オプションを使用してスクリプトの URL を指定できます。

オプション

Google Tag Manager に渡すオプション。オプションの完全なリストについては、Google Tag Manager のドキュメント を参照してください。

名前タイプ説明
gtmId必須GTM コンテナ ID。通常は GTM- で始まります。
gtmScriptUrlオプションGTM スクリプト URL。デフォルトは https://#/gtm.js です。
dataLayerオプションコンテナのインスタンス化に使用するデータレイヤーオブジェクト。
dataLayerNameオプションデータレイヤーの名前。デフォルトは dataLayer です。
authオプション環境スニペットの認証パラメーター (gtm_auth) の値。
previewオプション環境スニペットのプレビューパラメーター (gtm_preview) の値。

Google Analytics

GoogleAnalytics コンポーネントを使用して、Google タグ (gtag.js) を介してGoogle Analytics 4をページに含めることができます。デフォルトでは、ページでハイドレーションが発生した後に元のスクリプトを取得します。

推奨: Google Tag Manager が既にアプリケーションに含まれている場合は、Google Analytics を個別のコンポーネントとして含めるのではなく、Google Tag Manager を使用して直接設定できます。Tag Manager と gtag.js の違いについては、ドキュメント を参照してください。

すべてのルートで Google Analytics を読み込むには、カスタム _app にコンポーネントを直接含め、測定 ID を渡してください。

pages/_app.js
import { GoogleAnalytics } from '@next/third-parties/google'
 
export default function MyApp({ Component, pageProps }) {
  return (
    <>
      <Component {...pageProps} />
      <GoogleAnalytics gaId="G-XYZ" />
    </>
  )
}

単一のルートで Google Analytics を読み込むには、ページファイルにコンポーネントを含めます。

pages/index.js
import { GoogleAnalytics } from '@next/third-parties/google'
 
export default function Page() {
  return <GoogleAnalytics gaId="G-XYZ" />
}

イベントの送信

sendGAEvent 関数を使用して、dataLayer オブジェクトを使用してイベントを送信することにより、ページ上のユーザーインタラクションを測定できます。この関数を機能させるには、<GoogleAnalytics /> コンポーネントが、親レイアウト、ページ、またはコンポーネントのいずれか、または同じファイルに直接含まれている必要があります。

pages/index.js
import { sendGAEvent } from '@next/third-parties/google'
 
export function EventButton() {
  return (
    <div>
      <button
        onClick={() => sendGAEvent('event', 'buttonClicked', { value: 'xyz' })}
      >
        Send Event
      </button>
    </div>
  )
}

イベントパラメーターについて、Google Analytics の 開発者ドキュメント を参照してください。

ページビューのトラッキング

Google Analytics は、ブラウザの履歴状態が変更されると、自動的にページビューを追跡します。これは、Next.js ルート間のクライアントサイドナビゲーションが、設定なしでページビューデータを送信することを意味します。

クライアントサイドナビゲーションが正しく測定されていることを確認するには、管理パネルで "拡張測定" が有効になっており、"ブラウザの履歴イベントに基づいたページ変更" チェックボックスが選択されていることを確認してください。

注意: ページビューイベントを手動で送信することにした場合は、重複データを回避するためにデフォルトのページビュー測定を無効にしてください。Google Analytics の 開発者ドキュメント を参照してください。

オプション

<GoogleAnalytics> コンポーネントに渡すオプション。

名前タイプ説明
gaId必須測定 ID 。通常は G- で始まります。
dataLayerNameオプションデータレイヤーの名前。デフォルトは dataLayer です。
nonceオプションnonce

Google Maps Embed

GoogleMapsEmbed コンポーネントを使用して、Google Maps Embed をページに追加できます。デフォルトでは、loading 属性を使用して、画面外の埋め込みを遅延読み込みします。

pages/index.js
import { GoogleMapsEmbed } from '@next/third-parties/google'
 
export default function Page() {
  return (
    <GoogleMapsEmbed
      apiKey="XYZ"
      height={200}
      width="100%"
      mode="place"
      q="Brooklyn+Bridge,New+York,NY"
    />
  )
}

オプション

Google Maps Embed に渡すオプション。オプションの完全なリストについては、Google Map Embed のドキュメント を参照してください。

名前タイプ説明
apiKey必須API キー。
mode必須マップモード
heightオプション埋め込みの高さ。デフォルトは auto です。
widthオプション埋め込みの幅。デフォルトは auto です。
styleオプションiframe にスタイルを適用します。
allowfullscreenオプション一部のマップ部分をフルスクリーン表示できるようにするプロパティ。
loadingオプションデフォルトは lazy です。埋め込みが画面内にあることがわかっている場合は、変更を検討してください。
qオプションマップマーカーの位置を定義します。マップモードによっては必須の場合があります
centerオプションマップビューの中心を定義します。
zoomオプションマップの初期ズームレベルを設定します。
maptypeオプション読み込むマップタイルの種類を定義します。
languageオプションUI 要素およびマップタイル上のラベルの表示に使用する言語を定義します。
regionオプション地政学的な機密性に基づいて、表示する適切な境界線とラベルを定義します。

YouTube Embed

YouTubeEmbed コンポーネントを使用して、YouTube 埋め込みを読み込んで表示できます。このコンポーネントは、lite-youtube-embed を使用して、バックエンドで高速に読み込みます。

pages/index.js
import { YouTubeEmbed } from '@next/third-parties/google'
 
export default function Page() {
  return <YouTubeEmbed videoid="ogfYd705cRs" height={400} params="controls=0" />
}

オプション

名前タイプ説明
videoid必須YouTube 動画 ID。
widthオプション動画コンテナの幅。デフォルトは auto です。
heightオプション動画コンテナの高さ。デフォルトは auto です。
playlabelオプションアクセシビリティのための、再生ボタンの視覚的に非表示のラベル。
paramsオプション動画プレーヤーのパラメーターは こちら で定義されています。
パラメーターはクエリパラメーター文字列として渡されます。
例: params="controls=0&start=10&end=30"
styleオプション動画コンテナにスタイルを適用するために使用されます。