APIを使って、「SATORI」で何ができるか?

永井隼氏(以下、永井):よろしくお願いします。「今さら聞けないAPIの基本」ということで、自己紹介から。SATORI株式会社でエンジニアをしております、永井隼と申します。本日はマーケターの方が多いかと思います。どうぞよろしくお願いいたします。

突然ですが、「SATORI」のAPIを使っていますか? そもそもAPIとはなんでしょうか? Application Programming Interfaceの略で、プログラム同士が互いにやり取りするために使用するインターフェースとなっております。どんなものかというと、既存のソフトウェアやWebサービスをプログラムから利用するためのものです。

どんな時に利用されるか。例えば、システム同士の連携に利用されたり、手動での作業を省略できたりもします。ユーザー登録を例にしているのですが、システムにログインして、ユーザー追加画面を表示し、情報の入力、登録などの手動作業をAPIを実行するだけで登録を完了することができます。

APIはURLの形式になっていたり、プログラム上で関数のような形で提供されたりします。例えばこのような形式となります。

URLであれば、https://から始まるような形式となります。「SATORI」ではこのような形式で提供しています。HTTP/HTTPSを使って利用するAPIを、とくに「WEB API」といいます。WEB APIのイメージは、クライアントからリクエストして、サーバーからレスポンスをもらう形になります。

「SATORI」では、このWEB APIを提供しています。WEB APIの種類は、カスタマーの登録・更新・削除や、カスタマーの一括登録などがあります。今回は、上の2つについて説明しようと思います。

カスタマーAPIの使い方は、「SATORI」のヘルプページに載っていますので、のちほど閲覧してください。

カスタマーAPIについて、カッコ書きになっているのは最新バージョンとなります。こちらのv4が最新バージョンとなっています。これでできることは、データの登録・更新・削除です。特徴としては、APIの実行に成功したあと、カスタマーハッシュコードが得られるものとなっております。

こちらが利用例となります。API利用者から、インターネット経由で「SATORI」のサーバーにリクエストを投げることで、カスタマーの情報をデータベースに登録します。

データベースにデータを登録後、カスタマーハッシュコードをサーバーからAPI利用者に向けて返却します。

カスタマーAPIを使った業務効率化のヒント

永井:実際の使い方は、SATORI API利用システムからAPIを利用することで、「SATORI」のデータベースに対してカスタマーデータを登録し、SATORI API利用システムは、返却されたカスタマーハッシュコードを自社のデータベースに登録を行うことでカスタマーハッシュコードを利用できるようにします。

例えば、複数件を登録する場合はどうなるのか。矢印の数が増えているのですが、インターネットを経由する数が増えるということです。

赤い矢印で示した部分の処理は、すごく非効率です。リクエストを1回で済ませることにより、効率的に「SATORI」のデータベースにカスタマーデータを登録することができます。リクエストを複数回実行することで、ネットワーク障害などによってデータ登録に失敗してしまうこともあります。

そこで、一括で「SATORI」にデータを登録する方法があります。それが、カスタマーバルクAPIです。こちらも使い方は「SATORI」のヘルプページを閲覧してください。カスタマーバルクAPIでできることは、データの一括登録と一括更新になります。

特徴は、APIの実行に成功したあとでも、カスタマーハッシュコードを返却しないことです。代わりに、登録処理が開始されたかどうかのステータスコードを返却します。

こちらが利用例になります。カスタマーバルクAPI利用者から、「SATORI」のAPIサーバーにリクエストをした時、データベースに対して複数件のカスタマーデータを一括で登録します。

先ほど説明した、ステータスは、この図のように返却されます。

実際の利用例は、自社のAPIを利用しているシステムが、カスタマーのデータ登録などを行う場合、まず自社のデータベースにカスタマーデータを登録し、その日に登録されたデータを、1日に1回「SATORI」のカスタマーバルクAPIを利用して登録する、などがあります。

カスタマーAPIをまとめると、カスタマーハッシュコードを即時利用したい場合などに利用します。大量にカスタマー登録を行う際に利用するのは、何度もインターネットを経由するため非効率です。また、大量にカスタマー登録を行うと、「SATORI」のシステムにもAPI利用者側のシステムにも負荷がかかります。

カスタマーバルクAPIをまとめると、リクエスト回数が1回で済むため、データ登録までの効率が良いです。また、「SATORI」に即時カスタマーの情報が登録されてもされていなくても良い場合などにご利用ください。

まとめます。「SATORI」ではさまざまなAPIが利用できますが、きちんと用法を守った上でご利用をお願いいたします。ご静聴ありがとうございました。

司会者:このまま続けて次の発表をお願いいたします。

「SATORI」アカウントのセキュリティ対策

柿迫純一氏(以下、柿迫):こんにちは。私からは、「SATORI」アカウントのセキュリティ対策という内容について、お話しさせていただきます。私はSATORI株式会社の技術開発部に所属しております、柿迫と申します。開発業務に加えて、QAなどの業務も行っており、「SATORI」の品質を守る仕事をやっています。趣味は写真撮影で、好きな食べ物はいちごです。

今日は、「SATORI」を実際に使われているみなさまが集まっていらっしゃいますので、「SATORI」のアカウントの保護の話をします。一般的なWebサービスなどにおけるアカウントへの脅威は、少し考えるだけでもこのようなことがあります。

例えば、アカウントへの不正なログインが行われることにより、そのアカウントにログインしたあとに閲覧できるデータが漏洩したり、改ざん・削除されてしまうことがあります。また、アカウントにログインしたあとにできる操作によって、なりすましが起きる可能性があります。

そこで、「SATORI」ではアカウントを保護する5つの機能を提供しています。今日はこの5つの機能を、簡単にご紹介したいと思います。

まず1つ目は、強固なパスワード設定ルールです。例えば、アカウントに推測されやすい簡単なパスワードを設定してしまうことが考えられます。少ない文字数だったり、文字種の組み合わせが不十分だったりすることで、パスワードが推測されやすくなってしまいます。

「SATORI」では、パスワードを設定する部分で、パスワードの強度を測っています。例で挙げているこの「abcdef1234@」というパスワードは、十分長くて、強度が高いように見えるのですが、実際はアルファベット順になっていたり、数字が1234と並びになっていたりしていることから、「SATORI」では設定することができません。

「より複雑にしてください」という警告が出ます。このようにして、強固なパスワードを設定するようにシステムを設計しています。

ID・パスワードが不正使用されても、別の認証要素を設定可能

柿迫:次に、アカウントのロック機能です。例えば、アカウントに対して、すでに知られたIDリストを用いて、パスワードを総当たりするなどして、ログインを試行されることが起き得ます。一般的に、「ブルートフォースアタック」や「辞書攻撃」と呼ばれているものです。

「SATORI」では、このような攻撃に対して、ログインの失敗回数をカウントしています。一定の回数以上になると、アカウント自体がログインできないようにロックされて、そのアカウントの持ち主が実際にいる場合は、メールで「アカウントがロックされました」と通知されるようになっています。

新しい端末からのログイン通知。例えば、先ほど紹介したアカウントのロック機能は、一定回数の失敗が必要ですが、これは本当に1回でログインが成功した場合を想定しています。ログインに利用するID・パスワードが複数のWebサービスで使い回されていることで、それが流出して使われてしまうと、1回でログインできたりします。

ふだんとは異なる環境(からアクセスがあった)、例えばIPアドレスを使っているOSやブラウザが違う場合は、「新しいログイン元を検知しました」という通知をお送りしています。もしこれを受信された場合は、自分の意図や想定とは違うところからログインされている可能性があるので、注意が必要です。

また、アクセス元IPアドレス制限という機能もあります。

これは設定が必要で、例えば、「SATORI」へのログインは会社のみからで、自宅や社外からはログインさせないといった場合に、組織ごとに許可するIPアドレスを設定することが可能です。

次に、MFA(多要素認証)機能です。例えば、漏洩したIDやパスワードを使いまわしていて、「SATORI」でログインが試行されたとします。そして、ID・パスワードで単純にログインされてしまった場合に、安全性を十分に確保できない場合があります。その時「SATORI」では、ID・パスワードに加えてもう1つの認証要素として、ワンタイムトークンなどを生成するデバイスを用いた認証が可能になっています。

こちらは、MFAに対応したスマートフォンアプリなのですが、Google AuthenticatorやMicrosoft Authenticatorと呼ばれているソフトウェアを使って、アカウントをセットアップしておくことにより、追加の認証要素を設定して、よりアカウントの安全性を高めることができます。

今回5つの機能を紹介させていただきました。

一部のセキュリティを高める機能は、利用者自身が設定する必要があります。利用方法に合わせた対策を行うことで、利便性とセキュリティを両立した上で、アカウントを使っていただくことができます。

「SATORI」を活用して「あなたのマーケティング活動を一歩先へ」ということで、紹介させていただきました。ありがとうございました。

SATORIエンジニア1号が教える「JavaScript-APIの活用方法」

池上弘志氏(以下、池上):よろしくお願いします。NEXT LEVEL「SATORI」Utilizationですね。次のレベルの「SATORI」活用のお話をしたいと思います。

自己紹介なんですけど、SATORIのエンジニア職1号でやらせていただいてます。

今日は、小難しい話をしに来ました。みなさんは、「SATORI」をどのくらい使えていますか? けっこう自信あるよ、という人は手を挙げてほしいのですが、どうでしょうか。お、ちらほら。2、3人いる感じですかね。ありがとうございます。

今日はそういう(詳しい)人たちにも、「SATORI」を作っているエンジニアの視点から、「SATORI」の活用方法をご紹介するので、持ち帰っていただこうと思います。DMP(データマネジメントプラットフォーム)のJavaScript-APIの活用方法。さっき永井が話をしていたのはWeb APIなんですが、今回お話をするのはJavaScriptのAPIになります。

unknownとカスタマーの紐付きですね。なぜ実名化が起きているのか説明をします。全部テキストなので、わかりにくいところが多いかもしれないですが、しばしお付き合いください。

パラメータ値を引き渡すタグについて、「SATORI」のヘルプで検索をすると出てきます。活用方法として、JavaScriptでは、StDmpというオブジェクトがエクスポートされているので、addtionalParamsに「hobbyがgolfですよ」と入れると、URLに「hobby=golf」がつきます。あとで活用方法があるので、これはサラッと流します。

次は、SATORI計測タグの実行後のコールバック関数について。コールバック関数では、「SATORI」の計測タグが実行後、セグメントが戻ってきた時にキャッチアップして処理を走らせられる、JavaScriptのfunctionが定義できるようになっています。このStDmpに対してafterFunc、ここのfunctionのsegsに、配列のかたちでセグメントの値が入っています。

「item=aa」でセグメントして、このaaというセグメントキーが入ってたら、この人は車が好きなのかなというのが、alertの例です。

匿名顧客をどのように実名化しているか?

池上:3番目ですね。SPAをご利用のサイトで、SATORI計測タグを有効にする方法。SPAとはシングルページアプリケーションのことで、要はサーバーアクセスなしでページが遷移するものです。基本的にイベントベースです。ボタンを押したとか、そういうところで発火(動作)させます。そのAPIがちゃんと提供されていて、StDmpのところにStDmp.delay=trueとやると、ページをロードした時にDMPが勝手に走らなくなります。

これを行った上で、document.addEventListnerです。ちょっと触ったことがある人はピンと来るかもしれないです。ここにイベントを登録して、ページがロードされた時にボタンのこのエレメントを全部もってきて、ここに対してaddEventListnerされる。ボタンがクリックされたら、StSegsですね。これは、StDmpと名前が違うので注意が必要です。StSegs.execute、これをやるとDMPが動くようになっていて、ボタンをクリックしたら動きます。

次に、さっきの話と統合して、カスタマーの紐付きの真実をお話しします。前提として、以下のURLで「SATORI」の計測タグを踏めば紐づけられます。

こんな感じですね。example.comで、c=xxxxハイフンなんとかかんとかと。メールのトラッキングURL、あそこの後ろにC=と付いているものはこれです。この「C=XXXXXXXXXXX-00」が付いてるのが重要なわけですね。

この「C=」というのは一体何なのだという話をします。これは以下のような情報で構成されています。C=はパラメータ名ですね。そして、このxxxxという部分は、自分自身にSATORIからメールを送ってみるとわかります。ここにはなにかめちゃくちゃな文字列が入っています。あれがカスタマーハッシュコードといい、カスタマーの「SATORI」上のメールアドレスなどを識別するためのコードになります。

00は、メールのトラッキングURLではないよ、という識別子として使われています。カスタマーハッシュコードの取得は有料オプションになっているのですが、本日のユーザー会来場者の方に特別にプレゼントしたいのですが、どうでしょうか? 植山さん。いいですか? OKらしいので、希望者の方はあとでカスタマーサクセスチームなどに聞いてみてください。

ユーザーの行動から、どのくらいホットな状態かを判別

池上:このURLは、カスタマーハッシュコードがわかっていれば作れるんですね。DMPのJavaScript-APIと組み合わせることで、本来紐づかなかったケースでも紐づけることができるかもしれません。ダイレクトメールにQRコードを載せてアクセスしてもらうような、よくあるものですね。これはQRコードを作る時のURLです。C=を予め付けておくと、QRコードからのアクセスでも紐づいたりします。

例の(2)として、Webページにブラウザでは初来訪でも、以下の条件なら紐づくかもしれません。SSO(シングルサインオン)などで、サーバー側でグローバルな識別ができる場合は、ログインをしている場合です。「SATORI」のメール配信リンクからではないが、メールアドレスやIDがわかる場合。それはダイレクトメールであったり、「SATORI」とは関係ないところからメールを送った場合です。

応用の一例として、こんなこともできるようになります。SSOで個人がわかっている場合は行動履歴を紐づけたり、abテストによるコンテンツデリバリーで内容がランダムな場合、クリックコンテントでない情報で、情報を読んでからクリックしたのか、読まなかったのか、読んだ上でクリックしたのかが判別できるようになります。

これは実装例です。ちょっと長いんですけれども、15行ぐらいのJavaScriptですね。簡単に説明しましょう。「お饅頭」と書いてあるんですけれども、普通に広告やWebページに行った時に、Amazonの商品のページの写真の上にポチッとマウスオンすると、説明が出たりするサイトがあったとして仮定してください。すみません。本当はあればいいんですけど、作っていないので。

「お饅頭」のところにマウスオンをして、なにか説明が出るとしましょう。getTimeで、だいたい5秒ぐらいでマウスオンすると、「お饅頭」のコンテンツの情報を読んでいるだろうなと。そういう人に対しては、たぶん「お饅頭」に興味があるんじゃないか、とinterestを付けて送って、カスタマーハッシュコードは本当はURLにはなくても、内部で持っていればここで紐づけることができます。

こういうことをすることで、ただ来ただけではなくて、説明をすごく読んでから来てるのかどうかで、「ホットさ」に「差」が出てくると思います。

まとめると、c=のパラメータは、カスタマーハッシュコードがあれば作れます。DMPへのパラメータは追加することができます。JavaScriptやHTMLはあんまり怖くないです。これみなさん、Webなどで普通に検索してやれる範囲なので、ぜひやってみてください。

ぜひ楽しんでください。今後とも「SATORI」をよろしくお願いいたします。終わりです。

司会者:はい。永井さん、柿迫さん、池上さん、どうもありがとうございました。