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 SDK
Amplitude Node.js SDKは、Amplitude向けの初のバックエンドSDKであり、TypeScriptで記述されています。
クライアント側のSDKは、単一のユーザーまたはデバイスのセッションとアトリビューションの追跡向けに最適化されています。Node SDKは開発者の体験に重点を置いており、バックエンドサービスが多くのユーザーやソースからイベントを確実に正確に送信できるように支援しています。
Node SDKは以下を提供します。
- イベントのバッチ処理により、同じリクエストで複数のイベントを送信できます。
- ネットワークリクエストが失敗した場合や、Amplitudeがペイロードを制限または拒否した場合に対処する、リトライ処理メカニズム。
- インストルメンテーションに関する問題をデバッグするのに役立つユーティリティと型定義。
SDKの初期化
計装を行う前に、AmplitudeプロジェクトのAPIキーを使用してSDKを初期化してください。 初期化によってデフォルトのインスタンスが作成されます。 文字列名を指定してgetInstanceを使用することで、さらにインスタンスを作成できます。
// Option 1, initialize with API_KEY only
Amplitude.init(AMPLITUDE_API_KEY);
// Option 2, initialize including configuration
var options = {};
Amplitude.init(AMPLITUDE_API_KEY, options);
SDK を設定する
| 名前 | 概要 | デフォルト値 |
|---|---|---|
debug | boolean。 SDKがデバッグモードで起動するかどうか。デバッグモードでは、logLevelが指定されていない場合、警告レベル以上のログが生成されます。 | false |
logLevel | LogLevel。 SDKのログ出力の詳細レベルです。Noneはログを生成しません。ErrorはSDK内部エラーを生成します。Warnは危険な機能や廃止された機能に関する警告を生成します。VerboseはSDKのすべてのアクションをログに記録します。 | LogLevel.None |
maxCachedEvents | number。 バッファ内の最大イベント数。 | 16000 |
retryTimeouts | number[]. 失敗したイベントを送信するための再試行回数と、各再試行の待機時間(ミリ秒)を決定します。 空の配列は再試行を行わないことを意味します。 | [100, 100, 200, 200, 400, 400, 800, 800, 1600, 1600, 3200, 3200] |
optOut | boolean。 イベントの送信をオプトアウトするかどうか。 | false |
retryClass | Retry。 イベントの再試行を処理するクラス。 | null |
transportClass | Transport。 イベントを転送するクラス。 | null |
serverUrl | string。 プロキシサーバーを使用している場合は、その URL をここに設定してください。 | https://api2.amplitude.com/2/httpapi |
uploadIntervalInSec | number。 イベントのアップロード間隔(秒単位)。 | 0 |
minIdLength | number。 user_idおよびdevice_idフィールドに許容される最小長を設定するオプションのパラメータです。 | 5 |
requestTimeoutMillis | number。 タイムアウトはミリ秒単位で設定可能です。 | 10000 |
onRetry | (response: Response, attemptNumber: number, isLastRetry: boolean) => boolean). @paramresponse:指定された再試行からの応答。@paramattemptNumber:この再試行の前にAmplitudeが待機した時間を示すretryTimeouts内のインデックスです。0から始まります。@paramisLastRetry:attemptNumber === retryTimeouts.length - 1の場合にTrueになります。再試行後に実行されるライフサイクルのコールバック。 {@link Retry.sendEventsWithRetry}で呼び出されます。 | null |
バッチ処理の動作を設定する
高パフォーマンス環境をサポートするために、SDK はイベントをバッチで送信します。 SDKは、logEventメソッドがメモリに記録するすべてのイベントをキューに入れ、その後、イベントをバックグラウンドでバッチ処理でフラッシュします。maxCachedEventsおよび uploadIntervalInSecを使用してバッチ動作をカスタマイズできます。 デフォルトでは、serverUrlはhttps://api2.amplitude.com/2/httpapiです。一度に大量のデータを送信するには、バッチモードを使用します。サーバーの URL をニーズに合ったバッチイベントアップロード API に設定します。
- 標準サーバーバッチAPI:
https://api2.amplitude.com/batch。 - EU居住サーバーバッチAPI:
https://api.eu.amplitude.com/batch。
通常モードとバッチモードの両方で、同じイベント アップロードしきい値とフラッシュ タイム間隔を使用します。
Amplitude.init(AMPLITUDE_API_KEY, {
// Events queued in memory will flush when number of events exceed upload threshold
// Default value is 16000
maxCachedEvents: 20000,
// Events queue will flush every certain milliseconds based on setting
// Default value is 0 second.
uploadIntervalInSec: 10,
});
EU域内のデータレジデンシー
AmplitudeのEUサーバーにデータを送信するには、初期化時にサーバーURLを設定してください。
client = Amplitude.init(AMPLITUDE_API_KEY, {
serverUrl: "https://api.eu.amplitude.com/2/httpapi",
});
イベントを送信
このSDKはHTTP V2 APIを使用しており、イベントに対しても同じ制約に従います。SDKに記録されるすべてのイベントにevent_typeフィールドと、device_idまたはuser_idのうち少なくとも1つが含まれていることを確認し、これらの各フィールドに対するHTTP APIの制約に従ってください。
計装に関する問題を防ぐために、デバイスIDとユーザーIDは、5文字以上の文字列である必要があります。 イベントに短すぎるデバイスIDまたはユーザーIDが含まれている場合、AmplitudeはそのイベントからID値を削除します。イベントにdevice_idまたはuser_idの値がない場合、Amplitudeはアップロードを400ステータスで拒否することがあります。 デフォルトの最小長である5文字を上書きするには、リクエストにmin_id_lengthオプションを渡します。
import * as Amplitude from "@amplitude/node";
const client = Amplitude.init(AMPLITUDE_API_KEY);
client.logEvent({
event_type: "Node.js Event",
user_id: "datamonster@gmail.com",
location_lat: 37.77,
location_lng: -122.39,
ip: "127.0.0.1",
event_properties: {
keyString: "valueString",
keyInt: 11,
keyBool: true,
},
});
// Send any events that are currently queued for sending.
// Will automatically happen on the next event loop.
client.flush();
ミドルウェア
ミドルウェアを使用すると、すべてのイベントで一連のカスタムコードを実行することでAmplitudeを拡張できます。このミドルウェアパターンは柔軟性があり、イベントの拡張、変換、フィルタリング、サードパーティの宛先へのルーティングなどをサポートしています。
各ミドルウェアは次のシグネチャを持つ関数です。
function (payload: MiddlewarePayload: next: MiddlewareNext): void;
payloadにはeventと、独自のミドルウェア実装にカスタムデータを渡すことができるオプションのextraフィールドが含まれています。
キュー内の次のミドルウェアを呼び出すには、next関数を使用します。ミドルウェア チェーンを継続するために next(payload) を呼び出してください。ミドルウェアが next を呼び出さなかった場合、現在のミドルウェアが完了した後にイベント処理が停止します。
client.addEventMiddleware()を使用してミドルウェアを Amplitude に追加します。 必要な数のミドルウェアを追加できます。 各ミドルウェアは、追加した順序で実行されます。
const loggingMiddleware: Middleware = (payload, next) => {
console.log(`[amplitude] event=${payload.event} extra=${payload.extra}`);
// continue to next middleware in chain
next(payload);
}
const filteringMiddleware: Middleware = (payload, next) => {
const {eventType} = payload.event;
if (shouldSendEvent(eventType)) {
next(payload)
} else {
// event will not continue to following middleware or be sent to Amplitude
console.log(`Filtered event: ${eventType}`);
}
}
client.addEventMiddleware(loggingMiddleware)
client.addEventMiddleware(filteringMiddleware)
例については、TypeScriptとJavaScriptを参照してください。
Was this helpful?