コンテンツをスキップ
アプリケーションの構築最適化サードパーティライブラリ

サードパーティライブラリ

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

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

はじめに

始めるには、@next/third-parties ライブラリをインストールします。

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

@next/third-parties は現在、積極的に開発中の**実験的**ライブラリです。より多くのサードパーティ連携を追加する作業を進めている間は、**latest** または **canary** フラグを付けてインストールすることをお勧めします。

Googleサードパーティ

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

Googleタグマネージャー

GoogleTagManager コンポーネントは、ページにGoogleタグマネージャーコンテナをインスタンス化するために使用できます。デフォルトでは、ページのハイドレーション後に元のインラインスクリプトをフェッチします。

すべてのルートにGoogleタグマネージャーを読み込むには、カスタム_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タグマネージャーを読み込むには、ページファイルにコンポーネントを含めます。

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>
  )
}

関数に渡すことができるさまざまな変数とイベントについては、タグマネージャーの開発者ドキュメントを参照してください。

サーバーサイドタグ付け

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

オプション

Googleタグマネージャーに渡すオプション。オプションの完全なリストについては、Googleタグマネージャーのドキュメントを参照してください。

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

Googleアナリティクス

GoogleAnalytics コンポーネントは、Googleタグ (gtag.js) を介してページにGoogleアナリティクス4を含めるために使用できます。デフォルトでは、ページのハイドレーション後に元のスクリプトをフェッチします。

推奨: Googleタグマネージャーがアプリケーションにすでに含まれている場合、Googleアナリティクスを別のコンポーネントとして含めるのではなく、それを使用して直接設定できます。タグマネージャーとgtag.jsの違いについては、ドキュメントを参照してください。

すべてのルートにGoogleアナリティクスを読み込むには、カスタム_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アナリティクスを読み込むには、ページファイルにコンポーネントを含めます。

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アナリティクスの開発者ドキュメントを参照してください。

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

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

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

: ページビューイベントを手動で送信する場合、データの重複を避けるために、デフォルトのページビュー測定を無効にしてください。詳細については、Googleアナリティクスの開発者ドキュメントを参照してください。

オプション

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

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

Googleマップ埋め込み

GoogleMapsEmbed コンポーネントは、ページにGoogleマップ埋め込みを追加するために使用できます。デフォルトでは、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マップ埋め込みに渡すオプション。オプションの完全なリストについては、Googleマップ埋め込みドキュメントを参照してください。

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

YouTube埋め込み

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任意ビデオコンテナにスタイルを適用するために使用されます。