このページでは、基本的な Looker 拡張機能テンプレートを生成して構成し、機能を追加する方法について説明します。
新しい Looker 拡張機能を作成するには、次のタスクを実行する必要があります。
次の手順では、上記の要素を作成する方法を示します。
拡張機能用に Looker を構成する
Looker 拡張機能には、それぞれモデルファイルとマニフェスト ファイルを含む LookML プロジェクトが必要です。
拡張機能の空のプロジェクトを作成します。
新しいプロジェクトで、Looker IDE のファイル ブラウザの最上部にある
+
を使用して、モデルファイルを作成します。新しいモデルファイルは、
connection
パラメータとinclude
パラメータを使用して生成されます。connection
パラメータのconnection_name
を、インスタンスの有効なデータベース接続の名前に置き換えます。Looker の権限データには LookML モデルを介してアクセスするため、拡張機能には有効なモデルファイルが必要です。拡張機能へのアクセスを管理するには、拡張機能を有効な LookML モデルに関連付け、そのモデルにアクセスするユーザー権限を付与する必要があります。モデルファイルの編集が完了したら、[変更を保存する] をクリックします。拡張機能はビューファイルを必要としないため、
include: "/views/*.view.lkml"
パラメータを削除する、行の先頭に#
文字を追加するのいずれかで、行にコメントを追加します。include: "/views/*.view.lkml"
パラメータをそのままにすると、LookML バリデータでエラーが発生します。Looker IDE のファイル ブラウザの上部にある
+
を使用して、プロジェクト マニフェスト ファイルを作成します。プロジェクト マニフェスト ファイルは最初は空ですが、この手順の後半で、生成されたコンテンツをプロジェクト マニフェスト ファイルにコピーし、
application
パラメータを含めます。application
パラメータは、拡張機能にラベルを割り当て、Looker に拡張機能の JavaScript を検索する場所を指示し、拡張機能のエンタイトルメントのリストを提供します。エンタイトルメントは、拡張機能がアクセスできる Looker リソースを定義します。そのリソースが権限のリストに含まれていない場合、拡張機能は Looker リソースにアクセスできません。ただし、このプロセスの後半でファイルの残りの内容をマニフェスト ファイルにコピーするため、マニフェスト ファイルは現状のままで構いません。
新しいプロジェクトの Git 接続を構成します。
アクセス方法Git を構成するページのGit を構成するLooker IDE の右上にあるボタンをクリックするか、Git 接続の設定とテストドキュメント ページのプロジェクト構成をご覧ください。
拡張機能のプロジェクトを設定し、それを Git に接続したら、拡張機能テンプレート ファイルを生成する準備ができています。
拡張機能テンプレート ファイルの生成
拡張機能テンプレートのコードファイルを生成する方法は 2 つあります。
どちらのプロセスにも Yarn が必要となるため、Yarn がインストールされていることを確認してください。
create-looker-extension
を使用して拡張テンプレートを作成する
create-looker-extension
ユーティリティは、必要な拡張機能ファイルと依存関係をすべて含む基本的な Looker 拡張機能を作成します。これを出発点として、コードと機能を追加して拡張機能を完成させることができます。
拡張機能テンプレートを生成するには:
<extension_name>
を実際の拡張機能名に置き換えて、create-looker-extension
ユーティリティを実行します。yarn create looker-extension <extension_name>
拡張機能の名前を確認するか、別の名前を指定して、拡張機能のビルドに使用する言語とフレームワークを選択します。
create-looker-extension
ユーティリティは、指定したフレームワークを使用して基本テンプレートを入力し、生成されたすべてのファイルを拡張機能の名前を使用する新しいディレクトリに配置します。拡張機能用に作成されたディレクトリに移動します。
cd <extension_name>
拡張機能の依存関係をインストールします。
yarn install
開発用サーバーを起動します。
yarn develop
拡張機能が
http://localhost:8080/bundle.js
で実行され、JavaScript がローカルで提供されるようになりました。拡張機能ディレクトリに
manifest.lkml
ファイルがあります。このファイルのコンテンツをコピーします。LookML プロジェクトで、
manifest.lkml
のコンテンツをプロジェクトのマニフェスト ファイルに貼り付けます。[変更を保存する] をクリックして、プロジェクト マニフェスト ファイルを保存します。
LookML IDE で [LookML を検証]、[Commit Changes & Push]、[本番環境にデプロイ] の順にクリックします。
ブラウザの再読み込み機能を使用して Looker を再読み込みします。
Looker のメインメニューの [アプリケーション] セクションに、新しい拡張機能の名前が表示されます。
[アプリケーション] セクションから拡張機能を選択して、拡張機能の出力を表示します。
Git リポジトリのクローンを作成して拡張機能テンプレートを作成する
Looker は、いくつかの拡張機能テンプレートを含む Git リポジトリ(https://github.com/looker-open-source/extension-examples)を維持しています。サンプルのいずれかを使用する場合は、そのサンプルのリポジトリに移動し、次の手順に沿って操作します。
この手順では Yarn が必要となるため、Yarn がインストールされていることを確認してください。
ローカル コマンドラインで、次のコマンドを使用して Git リポジトリのクローンを作成します。
git clone git@github.com:looker-open-source/extension-examples.git
システムにインストールするテンプレートを含むディレクトリに移動します。この例では、React と JavaScript の「Hello World」拡張機能を使用します。
cd extension-examples/react/javascript/helloworld-js
拡張機能の依存関係をインストールします。
yarn install
Node のバージョンを更新するか、Node バージョン マネージャー を使用して Node のバージョンを変更する必要があります。
拡張機能ディレクトリに
manifest.lkml
ファイルがあります。このファイルのコンテンツをコピーします。LookML プロジェクトで、
manifest.lkml
のコンテンツをプロジェクトのマニフェスト ファイルに貼り付けます。[変更を保存する] をクリックして、プロジェクト マニフェスト ファイルを保存します。
LookML IDE の右上にある [LookML を検証] をクリックし、[Commit Changes & Push] をクリックしてから [本番環境にデプロイ] をクリックします。
ターミナルで、開発用サーバーを起動します。
yarn develop
拡張機能が実行され、マニフェスト ファイルの
url
パラメータ(http://localhost:8080/bundle.js
)で指定されたローカル開発用サーバーで JavaScript が提供されるようになりました。ブラウザの再読み込み機能を使用して Looker を再読み込みします。
Looker のメインメニューの [アプリケーション] セクションに、プロジェクト マニフェスト ファイルの
label
パラメータによって決定される新しい拡張機能の名前が表示されます。[アプリケーション] セクションから拡張機能を選択して、拡張機能の出力を表示します。
拡張機能の変更
基本的な拡張機能を作成したら、適切な JavaScript ファイルまたは TypeScript ファイルを変更して、コードを変更または追加できます。
拡張機能ディレクトリの src
ディレクトリには、コードを追加できるソースファイルが含まれています。上の例では、React と JavaScript の「Hello World」テンプレートのファイル名は HelloWorld.js
です。このファイルにコードを変更または追加すると、拡張機能の機能が変更または追加されます。
React と JavaScript の HelloWorld.js
ファイルの出力は次のとおりです。
import React, { useEffect, useState, useContext } from 'react'
import { Space, ComponentsProvider, Text } from '@looker/components'
import { ExtensionContext } from '@looker/extension-sdk-react'
export const HelloWorld = () => {
const { core40SDK } = useContext(ExtensionContext)
const [message, setMessage] = useState()
useEffect(() => {
const initialize = async () => {
try {
const value = await core40SDK.ok(core40SDK.me())
setMessage(`Hello, ${value.display_name}`)
} catch (error) {
setMessage('Error occured getting information about me!')
console.error(error)
}
}
initialize()
}, [])
return (
<>
<ComponentsProvider>
<Space p="xxxxxlarge" width="100%" height="50vh" around>
<Text p="xxxxxlarge" fontSize="xxxxxlarge">
{message}
</Text>
</Space>
</ComponentsProvider>
</>
)
}
以前の例では、以下の行のテキストを変更することで、拡張機能のテキスト出力を変更できます。
setMessage(`Hello, ${value.display_name}`).
機能を追加する際は、プロジェクト マニフェスト ファイルの
application
パラメータで、拡張機能に付与されている権限を変更する必要がある場合があります。