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

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

`@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タグマネージャーをロードするには、ルートレイアウトにコンポーネントを直接含め、GTMコンテナIDを渡します。

app/layout.tsx
import { GoogleTagManager } from '@next/third-parties/google'
 
export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <GoogleTagManager gtmId="GTM-XYZ" />
      <body>{children}</body>
    </html>
  )
}

単一のルートでGoogleタグマネージャーをロードするには、ページファイルにコンポーネントを含めます。

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

イベントの送信

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

app/page.js
'use client'
 
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アナリティクスを別のコンポーネントとして含めるのではなく、それを使用して直接Googleアナリティクスを設定できます。タグマネージャーと`gtag.js`の違いについては、ドキュメントを参照してください。

すべてのルートでGoogleアナリティクスをロードするには、ルートレイアウトにコンポーネントを直接含め、測定IDを渡します。

app/layout.tsx
import { GoogleAnalytics } from '@next/third-parties/google'
 
export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <body>{children}</body>
      <GoogleAnalytics gaId="G-XYZ" />
    </html>
  )
}

単一のルートでGoogleアナリティクスをロードするには、ページファイルにコンポーネントを含めます。

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

イベントの送信

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

app/page.js
'use client'
 
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アナリティクスの開発者向けドキュメントを参照してください。

オプション

``コンポーネントに渡すオプション。

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

Googleマップ埋め込み

`GoogleMapsEmbed`コンポーネントは、ページにGoogleマップ埋め込みを追加するために使用できます。デフォルトでは、`loading`属性を使用して、スクロールしないと見えない領域の埋め込みを遅延ロードします。

app/page.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`を使用することで、より高速に読み込みます。

app/page.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オプションビデオコンテナにスタイルを適用するために使用されます。