On this page

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

Node.js Ampli Wrapper

Ampliは、JavaScript(ES6以降)とTypeScript(2.1以降)で記述されたNode.jsアプリをサポートしています。Ampliは生成されたトラッキングライブラリをCJSモジュールとしてパッケージ化します。

JavaScriptのリアルタイム型チェックを有効にする

JavaScriptは型セーフな言語ではないため、TypeScriptのように静的型チェックは組み込まれていません。一般的な IDE の中には、JSDoc に基づく JavaScript でのリアルタイムの型チェックをサポートしているものもあります。

より良い開発体験を提供するために、Ampli はすべてのメソッドとクラスに対して JSDoc を生成します。

VSCodeでJavaScriptのリアルタイム型チェックを有効にするには:

  1. 環境設定 > 設定に移動し、checkJsを検索します。
  2. JS/TS > 暗黙プロジェクト設定 > JSを確認を選択します。

有効化すると、タイプエラーがIDEに直接表示されるようになります。

JetBrains も同様のサポートを提供しています:

  1. 環境設定 > エディタ > 検査 > JavaScript と TypeScript > 一般 に移動します。
  2. 署名の不一致型の不一致で、必要な厳格さのレベルに基づいて重大度を「警告」または「エラー」に設定します。

Prettierによるリンティング

eslintとtslintのリンティングエラーを防ぐために、SDKが生成したファイルにはリンターを無効にするための以下のディレクティブが含まれています。

/* tslint:disable */

/* eslint-disable */

Prettier には対応する "コード内" の disable ディレクティブがありません。 代わりに、生成されたpath/to/ampli.prettierignoreファイルに追加してください。パスを取得するには、ampli pullを実行します。詳細については、Prettierドキュメントを参照してください。

クイックスタート

  1. (前提条件)Amplitudeデータでトラッキングプランを作成する

    Amplitudeデータでイベントやプロパティを計画しましょう。

  2. Amplitude SDKをインストールする

    bash
    npm install @amplitude/analytics-node
    
  3. Ampli CLIをインストールする

    bash
    npm install -g @amplitude/ampli
    
  4. Ampliラッパーをプロジェクトに組み込む

    bash
    ampli pull [--path ./src/ampli]
    
  5. Ampliラッパーを初期化する

    js
    import { ampli } from "./src/ampli";
    ampli.load({ client: { apiKey: AMPLITUDE_API_KEY } });
    
  6. ユーザーを識別し、ユーザープロパティを設定する

    js
    ampli.identify("user-id", {
      userProp: "A trait associated with this user",
    });
    
  7. 強力に型付けされたメソッドとクラスを使用してイベントを追跡する

    js
    ampli.songPlayed('ampli-user-id', { songId: 'song-1' });
    ampli.track('ampli-user-id', new SongPlayed({ songId: 'song-2' });
    
  8. アプリケーション終了前のイベントのフラッシュ

    js
    ampli.flush();
    
  9. CLIを使用して実装ステータスを確認する

    shell
    ampli status [--update]
    

Amplitude SDKをインストールする

まだインストールしていない場合は、コアとなるAmplitude SDKの依存関係をインストールしてください。

npm install @amplitude/analytics-node

Ampli CLIをインストールする

Ampli CLIは、HomebrewまたはNPMからインストールできます。

brew tap amplitude/ampli
brew install ampli

Ampliラッパーをプロジェクトに組み込む

Ampli CLI pullコマンドを実行してAmplitudeデータにログインし、トラッキングプラン用の強く型付けされたAmpliラッパーをダウンロードしてください。プロジェクトのルートディレクトリからAmpli CLIコマンドを実行します。

bash
ampli pull

API

Ampliは、便利なメソッドを提供するAmplitude SDK上に薄いファサードを生成します。また、Ampliラッパーは、ampli.clientを通じて、基盤となるAmplitude SDKのすべてのメソッドへのアクセスも提供します。詳細については、「Amplitude SDKのラッピング」を参照してください。

ロード

コードでAmpliを初期化します。load()関数は、SDKの動作を設定するためにオプションオブジェクトを受け取ります。

次の例では、loadで初期化してデフォルト設定を上書きします。

typescript
ampli.load({
  client: {
    apiKey: AMPLITUDE_API_KEY,
    configuration: {
      minIdLength: 10,
    },
  },
});

Identify

アプリ内のユーザーを識別し、今後のすべてのイベントをそのユーザーのIDに関連付けるか、ユーザーのプロパティを設定するには、identify()を呼び出します。

Ampliラッパーがイベントとそのプロパティの型を作成するのと同様に、ユーザープロパティの型も作成します。

identify()関数はオプションのuserId、オプションのユーザープロパティ、およびオプションのoptionsを受け入れます。

たとえば、トラッキングプランにroleというユーザープロパティが含まれているとします。プロパティのタイプは文字列です。

typescript
ampli.identify("user-id", {
  role: "admin",
});

オプションの引数を使用すると、この呼び出しのAmplitudeフィールドdeviceIdなど)を渡すことができます。

ts
ampli.identify(
  "user-id",
  {
    role: "admin",
  },
  {
    deviceId: "my-device-id",
  },
);

グループ

ユーザーをグループ(部署や会社など)に関連付けるには、setGroup()を呼び出します。setGroup()関数にはgroupTypegroupNameが必要です。

ts
ampli.client.setGroup("groupType", "groupName");

Amplitudeはユーザーをグループに割り当て、それらのグループに対して「ユニーク数」などのクエリを実行します。グループの少なくとも1人のメンバーが特定のイベントを実行した場合、そのグループもカウントに含まれます。

たとえば、orgId を使用してユーザーを組織ごとにグループ化したいとします。 ジョーはorgId10のグループに所属し、スーはorgId15のグループに所属しています。SueとJoeはどちらも特定のイベントを実行します。 イベントセグメンテーションチャートでその組織をクエリできます。

グループを設定する際には、groupTypegroupNameを定義してください。上記の例では、orgIdgroupTypeであり、10および15groupNameの値です。groupTypeのもう1つの例としては、sportがあり、そのgroupName値としてはtennisbaseballがあります。

グループを設定すると、groupType:groupNameもユーザープロパティとして設定されます。Amplitudeは、そのユーザーのgroupTypeに対する既存のgroupName値と対応するユーザープロパティ値を上書きします。groupTypeは文字列です。groupNameは、ユーザーが複数のグループに属することを示すため、文字列または文字列の配列にできます。たとえば、JoeがorgId 10および20に属する場合、groupName[10, 20]になります。

コードは次のようになります:

ts
ampli.client.setGroup("orgId", ["10", "20"]);

追跡

イベントを追跡するには、そのイベントに対応する関数を呼び出します。 トラッキングプラン内のすべてのイベントは、Ampliラッパー内で独自の関数を持っています。コール構造は次のようになります。

ts
ampli.eventName(properties: EventNameProperties, options: EventOptions)

properties引数はイベントプロパティを渡します。

options引数は、pricequantityrevenueなどのAmplitudeフィールドを渡します。

たとえば、次のコードでは、トラッキングプランにsongPlayedというイベントが含まれています。このイベントにはsongIdおよびsongFavoritedという2つの必須プロパティがあります。songIdのプロパティタイプは文字列で、songFavoritedはブール値です。

このイベントはAmplitudeフィールドを1つ定義します:deviceId。Amplitude フィールドの詳細については、『HTTP V2 API イベント配列キーリファレンス』を参照してください。

ts
ampli.songPlayed(
  {
    songId: "songId", // string,
    songFavorited: true, // boolean
  },
  {
    deviceId: "a-device-id",
  },
);

また、Ampli はイベントごとにクラスを生成します。

ts
const myEventObject = new SongPlayed({
  songId: "songId", // string,
  songFavorited: true, // boolean
});

Ampli trackを使用してイベントオブジェクトを追跡します:

ts
ampli.track(
  new SongPlayed({
    songId: "songId", // string,
    songFavorited: true, // boolean
  }),
);

フラッシュ

Ampliラッパーはイベントをキューに入れ、設定に基づく間隔で送信します。

保留中のイベントをすぐに送信するには、flush()を呼び出します。

flush()メソッドは、Promiseを返します。このPromiseは、Ampliが処理を続行する前にすべての保留中のイベントを確実に送信するために使用できます。アプリケーションを終了する前にflush()を呼び出します。

typescript
ampli.flush();

プラグイン

プラグインはAmplitudeの動作を拡張します。 たとえば、プラグインはイベントプロパティを変更したり(エンリッチメントタイプ)、サードパーティ製APIに送信したり(送信先タイプ)できます。

まずはプラグインを定義します。

import {
  Config,
  EnrichmentPlugin,
  Event,
  PluginType,
} from '"@amplitude/analytics-node"';
export class AddEventIdPlugin implements EnrichmentPlugin {
  name = "add-event-id";
  type = PluginType.ENRICHMENT as const;
  currentId = 100;
  /**
   * setup() is called on plugin installation
   * example: client.add(new AddEventIdPlugin());
   */
  setup(config: Config): Promise<undefined> {
    this.config = config;
  }
  /**
   * execute() is called on each event instrumented
   * example: client.track('New Event');
   */
  execute(event: Event): Promise<Event> {
    event.event_id = this.currentId++;
    return event;
  }
}

Ampli を初期化したあとでプラグインを追加してください。

typescript
ampli.client.add(new AddEventIdPlugin());

Ampli CLI

Pull

pullコマンドはAmpliラッパーコードをプロジェクトにダウンロードします。プロジェクトのルートからpullコマンドを実行します。

bash
ampli pull

プロンプトが表示されたらワークスペースにログインし、ソースを選択します。

bash
 ampli pull
Ampli project is not initialized. No existing `ampli.json` configuration found.
? Create a new Ampli project here? Yes
? Organization: Amplitude
? Workspace: My Workspace
? Source: My Source

詳細については、ampli pullを参照してください。

ステータス

status コマンドを使用して、イベントがコード内に存在していることを確認します:

bash
ampli status [--update]

出力にはステータスと、欠落しているイベントが示されます。

bash
 ampli status
 Verifying event tracking implementation in source code
 Song Played (1 location)
 Song Stopped Called when a user stops playing a song.
Events Tracked: 1 missed, 2 total

詳細については、ampli statusを参照してください。

@amplitude/nodeランタイム用にAmpli(レガシー)から移行する

以下の手順に従って、@amplitude/analytics-node用のAmpliから@amplitude/node用のAmpliに移行します。

  1. ソースランタイムを更新します。

    Webアプリで、「ソース」ページを開き、更新するNode.jsソースを選択します。モーダルで、ランタイムをTypeScript (Legacy)からTypeScriptに変更するか、またはJavaScript (Legacy)からJavaScriptに変更します。

  2. 詳細なセットアップと使用方法については、このページの手順に従ってください。

  3. プロジェクトからレガシーな依存関係を削除します。

yarn remove @amplitude/node

  1. 新しい依存関係を追加します。

yarn add @amplitude/analytics-node

  1. 最新のAmpli Wrapperをプルしてください。

ampli pull

  1. 検索と置換。

    Amplitudeはミドルウェアをサポートしなくなりました。新しいプラグインアーキテクチャへと置き換えられました。ミドルウェアからプラグインへの移行。

Was this helpful?