Looker は、あらゆるユーザーやお客様がデータにアクセスできるようにする点で優れています。言ってみれば、Looker は「データの民主化」を支援します。また、アナリストがダッシュボードを手動で作成しなくても、ユーザーが自分でレポートを確認できるようにすることができます。Looker を使用すると、ユーザーが独自の分析を行うこともできます。これを行う 1 つの方法は、Looker の署名付き埋め込み機能を使用することです。このページでは、署名付き埋め込みを実装するための Looker API と Looker の埋め込みソフトウェア開発キット(SDK)の 2 つの方法について説明します。
たとえば、会社独自のアプリケーションや内部システムにレポートを統合し、すべてのユーザーに Looker 認証情報を提供したくないとします。これは、Looker の署名付き埋め込み機能を使用して実現できます。これは、Looker インスタンスに統合できる LDAP や SAML などの SSO ワークフローの一般的な資料とは異なります。
署名付き埋め込みの署名付きとは、埋め込み URL が作成され、リクエストがブラウザから送信されると、ユーザーの Looker セッションが開始され、ログインされることを意味します。これらの URL は署名され、1 回のみ使用できます。この URL を使用すると iframes が作成され、デベロッパーは Explore、Look、ダッシュボードなどのコンテンツを会社のウェブサイトやアプリケーションに埋め込むことができます。URL を使用する場合、ユーザーが既存のアカウントを持っていない場合は、URL に渡されたパラメータに基づいてアカウントが作成されます。
デベロッパーは、Looker API または Looker API SDK を利用して、iframe を動的に作成できます。テーマを適用することや、会社や特定のユーザー グループのニーズに合わせてコンテンツのカスタマイズが可能です。Looker をコンテンツに埋め込むこと広がる可能性について詳しくは、こちらの完全なデモで、これらのコンセプトを適用する方法をご確認ください。
開始方法
ここでデモを見終わり、アプリケーションに iframe を追加する場合を考えてみましょう。何から始めればよいでしょうか?また、ユースケースに適した方法はどれでしょう?
Looker では、このコンテンツを生成する主なオプションを複数用意しており、アプリケーションやウェブサイトのなかに配置できます。
- さまざまなプログラミング言語(C#、Python、Node.js、Python、Ruby、PHP)で作成されたスクリプトの Looker サンプル リポジトリ
- HTTP リクエストまたはいずれかの SDK からアクセスできる、REST API に含まれている
Create Signed Embed Url
エンドポイント - Looker の埋め込み SDK
通常は、スクリプトではなく Embed SDK と REST API エンドポイントをお客様に提供することをおすすめします。SDK と REST API は両方ともデベロッパーによって頻繁に更新され、スクリプトと比較して URL が短縮されるからです。(URL が短い方が管理はやや簡単になります。)Embed SDK と REST API エンドポイントが提供するセキュリティ機能もいくつかあります。これらの機能については、このページで後ほど説明します。
アプリケーション ユーザーが、顧客アプリケーションのデータページで Looker のダッシュボードを確認できるようにするとします。一般的な埋め込みワークフローは次のようになります。
- ユーザーがアプリケーションにログインします。SAML サービスを使用するか、メールまたはパスワードのみを使用して、アプリにログインできます。
- アプリケーションは、認証情報が正しいこと、およびユーザーがコンテンツに正常にアクセスできることを確認します。
- ログイン ワークフローからのレスポンスに基づいて、ユーザーの情報が関数に渡されます。この関数は、サンプル スクリプトのいずれかを使用して署名付き埋め込み URL を作成します。このスクリプトには、ユーザーの権限、グループ ID、埋め込みシークレット、ホスト URL、ユーザー属性(名や姓など)、アクセス フィルタ、セッションの長さ、ユーザーにアクセスを許可する URL が必要です。これらの情報はすべて Looker に送信され、署名付き URL が作成されます。
- ユーザーがアプリケーションのデータページに移動すると、この署名付き URL が iframe に配置されます。次に、ブラウザは iframe URL でリクエストを処理します。ダッシュボードはカスタマイズされたエクスペリエンスとともに伝播し、ユーザーはアプリケーション内の Looker からデータにアクセスできます。
Create Signed Embed Url
エンドポイント
Looker の REST API またはいずれかの SDK を使用することで、デベロッパーは一連のパラメータに基づいてエンコードされた署名付き URL を生成できます。これは POST リクエストです。API リクエストの送信元サーバーは、管理者の権限で Looker を認証できる必要があります。このエンドポイントを使用する主な利点の一つは、このエンドポイントを使用するのに埋め込みシークレットが必要ないということです。エンドポイントは、現在の埋め込みシークレットを取得するようにすでに構成されています。このエンドポイントへの呼び出しも、API レート制限にカウントされません。一般に、API 認証情報は埋め込みシークレットよりもローテーションが容易です。複数の API 3 認証情報を同時に有効にできますが、1 つのインスタンスで一度に使用できる埋め込みシークレットは 1 つのみです。これにより、サービスが中断されることなく、簡単に認証情報を交換できます。また、Create Signed Embed Url
エンドポイントでは、署名付き埋め込み URL スクリプトのサンプル リポジトリのサンプル スクリプトと比較して、短く簡潔な URL が作成されます。
Create Signed Embed Url
エンドポイントを使用するワークフローの例を次に示します。
- ユーザーがアプリケーションにログインしようとします。多くの場合はユーザー名とパスワードの組み合わせを使用するか、または ID プロバイダ(IdP)を経由して試行します。
- アプリケーションに正常にログインすると、
Create Signed Embed Url
エンドポイントが実行されます。開発チームによって作成された関数が、ユーザー固有の認証情報をこのエンドポイントに渡すと、署名付き URL が Looker からサーバーに返されます。 - ユーザーは、アプリケーションのデータタブをクリックすることもできます。[データ] タブにアクセスすると、このページはサーバーから署名付き URL をリクエストして、ページ上の iframe に配置します。
- Looker ダッシュボードには、ライブデータを使用して、アプリケーション内にシームレスに配置された iframed が表示されます。
Embed SDK
Looker の Embed SDK は、デベロッパーが Looker コンテンツを簡単に埋め込めるようにパッケージ化された JavaScript 関数のコレクションです。Embed SDK を使用すると、特定の HTML 要素を作成せずに、Looker コンテンツをアプリケーションやウェブサイトのページに追加できます。この SDK を使用すると、デベロッパーは HTML ページと Looker コンテンツの間に安全なポイントツーポイント通信を作成できます。Embed SDK では iframe がカプセル化されるようになりました。つまり、お客様が iframe の作成や管理を行う必要がなくなります。Embed SDK はブラウザアプリ専用ですが、署名付き URL を生成するヘルパー ユーティリティ関数が含まれています。これらはどちらも TypeScript と Python で使用できます。Embed SDK は nmpjs レジストリに含まれていますが、Node.js ウェブサーバーを使用する必要はありません。
Embed SDK の特徴的な機能の一つは、Looker コンポーネントを活用できることです。Looker コンポーネントは、Looker の設計システムの実装を目的として作成された、再利用可能なコードブロックのコレクションです。
Embed SDK のもう一つの利点は、開発チームの多くの作業を不要にする事前構築済みの関数の数です。主な例の一つは、クリックのキャンセルです。Embed SDK では postMessage
ではなく MessageChannel
API を使用します。つまり、同じページで実行されている 2 つのスクリプトは、postMessage
API を使用して互いに通信できます。これにより、他の関数が iframe と通信したり、他の関数が iframe と通信したりできるようになります。
Embed SDK のワークフローの例を次に示します。
- ユーザーがアプリケーションにログインしようとしています。
- ログインが成功すると、その情報がアプリケーションを実行するサーバー上の
Node.js
ヘルパー ユーティリティに送信されます。これにより、Looker インスタンスに必要な情報が渡され、署名付き URL が返されます。 - ユーザーは、埋め込み SDK を使用してアプリケーション内に表示される iframe の配置先ページに移動します。Embed SDK は JavaScript で記述されているため、
LookerEmbedSDK.createDashboardWithId
を使用して、ページ上の特定の DOM 要素(通常はスパンまたは div)をターゲットとして iframe(署名付き URL)を末尾に追加できます。 - ページが読み込まれると、署名付き URL によって Looker インスタンスからダッシュボードが読み込まれます。
最適な方法
開発チームが使用する方法は、個々のユースケースによって異なります。
前の図に示すように、Create Signed Embed Url
エンドポイント メソッドと Embed SDK メソッドの両方を使用することで、開発チームが Looker がアプリの統合方法ではなく、プロダクトの方に集中できるようになります。どちらの方法でも、ネイティブ アプリケーションで高度なデータ エクスペリエンスを実現できます。
Create Signed Embed Url
エンドポイント メソッドは、埋め込み SDK メソッドと次の点で異なります。
- 埋め込みシークレットは必要ありません。
- このプロセスは、他の REST API を使用する場合と同様です。
- エンドポイントはサーバー側を呼び出す必要があります。
埋め込み SDK メソッドには次の機能があります。
- JavaScript ベースで、特定の DOM 要素をターゲットにできます。
- Looker コンポーネントとやり取りして UI のスタイルを設定できます。
- ヘルパー ユーティリティ関数と統合されており、クライアント側で開発を行えます。
開発やアーキテクチャの要件について不明な点がある場合は、Looker プロフェッショナル サービス チームまたは開発パートナーにお問い合わせください。
また、サポートチームでは、高レベルの問題や予期せぬ動作に対処できるようサポートします。Looker のヘルプセンターで [お問い合わせ] をクリックすると、サポート リクエストを開始できます。
その他のリソースについては、署名付き埋め込みツールとトラブルシューティングのリソースに関するコミュニティ投稿をご覧ください。