API 連携の最大活用
学習の目的
この単元を完了すると、次のことができるようになります。
- REST API と SOAP API のベストプラクティスに従う。
- API と、AMPscript、サーバーサイド JavaScript、ガイドテンプレート言語を併用する。
- 使用可能な SDK を実装する。
API のその他のヒントとリソース
REST API と SOAP API を使用した認証と操作の基本事項を習得しました(素晴らしい!)。次はいよいよ、API 連携を実装し、最高のパフォーマンスを実現しながら、エラーも処理する最適な方法をいくつか見ていきます。
セキュリティ
資格情報や顧客データの処理においてセキュリティが最重要事項であっても驚くことではありません。次のヒントに従って、Marketing Cloud Engagement とのインタラクションが可能な限り安全なものになるようにします。
- OAuth トークンにタスクの達成に必要な権限のみが含まれるようにします。
- 更新トークンは Salesforce アカウントの資格情報と同様に取り扱い、その安全性を確保します。
- Marketing Cloud Engagement API に要求を実行するときは TLS 1.2 を適用します。
- ユーザーのセッション管理では、フレームワークのセッション管理機能を使用するなど、安全な手順に従います。
- 開発者が構築したどのアプリケーションでも、ユーザーのセッションレベルや権限レベルを検証します。
- ユーザーが各自の任務の遂行に必要なもののみにアクセスできるようにします。
- スタック追跡やデバッグログを制限し、この情報を必要とする人のみが表示できるようにします。
- クロスサイトリクエストフォージェリ (CSRF)、HTML インジェクションやクロスサイトスクリプティング (XSS)、任意のリダイレクト、リモートコード実行のような一般的な攻撃を阻止するようにシステムや要求を構成します。
- セキュリティの脆弱性を回避するために、すべてのライブラリやフレームワークを頻繁に更新します。
- パスワード、財務データ、その他の個人識別情報のような機密データを保存するときは、業界標準のベストプラクティスに従います。
要求の計画
いかなる場合も成長の余地があるため、将来処理するデータやデータソースを増やせるように API 連携を計画します。そのヒントは次のとおりです。
- データへのアクセス、データの移動、データの更新などのステップ数を少なくして、API リソースへの要求回数を減らします。
- Web サイトやシステムで定期的に多数のアクティビティが発生することがわかっている場合は、そのピーク時を念頭に置いて計画を立て、API 連携で処理できるようにします。
- コードを本番環境に移行する前にステージング環境でテストします。
データ管理
トラフィックを軽減するために、複数の API 要求で 1 つのデータエクステンションを同時に更新しないようにします。代わりに、必要な情報をすべて含む 1 つの要求を使用します。
日時値を処理するときは、協定世界時 (UTC) のオフセットを使用し、その情報を取得するときに時刻値を変換します。
AMPscript、サーバーサイド JavaScript、ガイドテンプレート言語の利用
Marketing Cloud Engagement では開発者が API のほかに、次の 3 種類のプログラムスクリプト言語を使用できます。
- AMPscript: 専有のスクリプト言語で、顧客向けのコンテンツのパーソナライズ、動的コンテンツの表示、購読者情報の更新を目的に設計されています。
- サーバーサイド JavaScript (SSJS): JavaScript によく似た構文と関数を使用して AMPscript 機能を模倣するように設計された言語です。
- ガイドテンプレート言語 (GTL): Handlebars 式と Moustache 式の構文を使用してコンテンツやメッセージを構築する目的で設計された言語です。
開発者であれば、データエクステンションからの要求に含まれるメッセージやコンテンツの中でこうしたプログラミング言語を目にすることがあるでしょう。たとえば、メールメッセージに動的コンテンツを含めるために、メッセージに GTL を使用してデータエクステンションから情報を取り込むことがあるかもしれません。こうしたスクリプトもデータエクステンションに保存できます。
また、AMPscript と SSJS は、Marketing Cloud Engagement でメッセージの構成やオブジェクトの作成を行う API 機能をコールすることも可能です。次の AMPscript の例は、SOAP API を使用して送信可能データエクステンションを構築します。
%%[ /*CREATE THE DATA EXTENSION*/ Set @de = CreateObject("DataExtension") SetObjectProperty(@de,"Name","API-Created Data Extension") SetObjectProperty(@de,"CustomerKey","XXXXXXXX") SetObjectProperty(@de,"Description","Data Extension Created via API") SetObjectProperty(@de,"IsSendable","True") SetObjectProperty(@de,"IsTestable","False") /*DE Folder ID - mouse over in app to get this ID */ SetObjectProperty(@de,"CategoryID","123") /* THIS IS THE SENDABLE FIELD */ Set @deFields = CreateObject("DataExtensionField") SetObjectProperty(@deFields,"FieldType","EmailAddress") SetObjectProperty(@deFields,"IsRequired","true") SetObjectProperty(@deFields,"IsPrimaryKey","true") SetObjectProperty(@deFields,"IsNillable","false") SetObjectProperty(@deFields,"MaxLength","100") SetObjectProperty(@deFields,"Name","email_address") AddObjectArrayItem(@de,"Fields",@deFields) SetObjectProperty(@de,"SendableDataExtensionField",@deFields) Set @deFields = CreateObject("DataExtensionField") SetObjectProperty(@deFields,"FieldType","Text") SetObjectProperty(@deFields,"IsRequired","true") SetObjectProperty(@deFields,"IsPrimaryKey","false") SetObjectProperty(@deFields,"IsNillable","false") SetObjectProperty(@deFields,"MaxLength","100") SetObjectProperty(@deFields,"Name","subscriber_key") AddObjectArrayItem(@de,"Fields",@deFields) Set @deFields = CreateObject("DataExtensionField") SetObjectProperty(@deFields,"FieldType","Text") SetObjectProperty(@deFields,"IsRequired","false") SetObjectProperty(@deFields,"IsPrimaryKey","false") SetObjectProperty(@deFields,"IsNillable","false") SetObjectProperty(@deFields,"MaxLength","50") SetObjectProperty(@deFields,"Name","first_name") AddObjectArrayItem(@de,"Fields",@deFields) Set @deFields = CreateObject("DataExtensionField") SetObjectProperty(@deFields,"FieldType","Text") SetObjectProperty(@deFields,"IsRequired","false") SetObjectProperty(@deFields,"IsPrimaryKey","false") SetObjectProperty(@deFields,"IsNillable","false") SetObjectProperty(@deFields,"MaxLength","75") SetObjectProperty(@deFields,"Name","last_name") AddObjectArrayItem(@de,"Fields",@deFields) /* This field sets how the data extension field above relates to the all subscribers list */ SET @ts_attr = CreateObject("Attribute") SetObjectProperty(@ts_attr, "Name", "Email Address") SetObjectProperty(@ts_attr, "Value", "Email Address") SetObjectProperty(@de,"SendableSubscriberField",@ts_attr) Set @StatCode = InvokeCreate(@de, @StatMessage, @ErrorCode) ]%% Status = %%= v(@StatMessage) =%% -- %%= v(@ErrorCode) =%%
この場合も、コードやスクリプトをリリースする前にテストして、各自のニーズに最も適したバージョンを使用します。
Marketing Cloud Engagement SDK の実装
いよいよ連携に必要なコードを 1 つにまとめます! 作業の開始時に参照して時間を節約できるリソースはたくさんあります(自力でゼロから始める必要はありません)。開発仲間や Marketing Cloud Engagement コミュニティから情報を収集し、すぐに使える SDK を活用して、スタートダッシュを切りましょう。手際よく連携を始める方法を模索します。
GitHub では、コミュニティがサポートする各種言語の SDK を利用できます。以下の SDK には、ソースコード、サンプル、ドキュメントが揃っているため、すぐ作業に取りかかることができます。
さらに、MobilePush や Content Builder で作業している場合は、アプリケーション固有の SDK も確認してください。
上記のヒントやリソースを活用すれば、独自の連携をすぐカスタマイズできるようになります! そして、ご存じのとおり、Salesforce 開発者コミュニティがいつでも相談にのります。