> For the complete documentation index, see [llms.txt](https://docs.wantedly.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.wantedly.dev/fields/data/looker.md).

# Looker 入門

ここでは、ウォンテッドリーでデータを活用して可視化するために導入されているツールである Looker の概要について解説します。 Looker の開発に必要となる前提や手順の説明に限定し、開発と関連しない Looker の機能やその運用方法については扱いません。 なお、説明は概要にとどめて細かい実装の詳細などは他のドキュメントで補完していくものとします。

## 想定読者

主に下のような人を想定しています。

* Looker で集計・可視化できるデータを追加・変更したい人

## Looker の概要

### Looker とは

Looker は、データを集計・可視化することで、より良いビジネス上の意思決定を行えるようにするための BI ツールです。

以下に Looker の代表的な機能と、各機能の概要および手順を把握するためのドキュメントを示します。 Looker にはじめて触れる場合は、これらのドキュメントを参照して概要を把握すると良いでしょう。

* コンテンツ（ダッシュボードや Look）を検索・閲覧する
  * [Find and organize content](https://docs.looker.com/sharing-and-publishing)
* データを集計・可視化する
  * [Retrieve and chart data](https://docs.looker.com/exploring-data/retrieve-chart-intro)
* コンテンツ（ダッシュボードや Look）を作成・編集する
  * [Create and edit dashboards and reports](https://docs.looker.com/dashboards/dashboards-reports-intro)
* 開発する
  * [Get ready for development](https://docs.looker.com/data-modeling)

以降は、開発の機能に関連する内容に限定して説明を続けます。

### Looker の特徴

Looker の最大の特徴は、データモデリングによってデータの定義を管理することにあります。

適切な粒度でデータをモデル化することで、データの定義が再利用可能になり、以下の恩恵を得ることができます。

* 類似する定義の乱立を避け、定義の一元管理が可能になる
* 定義が利用箇所ごとに異なることを避け、同一の定義でデータを扱うことができる

また、Looker はデータに関する定義の管理をする際に、Git を利用したバージョン管理や、GitHub と連携したコラボレーションをすることを前提としています。 これらの仕組みによって、効果的、かつ、効率的にデータの定義を管理できることも、Looker の特徴のひとつと言えるでしょう。

### LookML プロジェクト

Looker におけるデータに関する定義は、LookML プロジェクトで管理されます。 LookML プロジェクトとは、モデルとビューを定義するファイル群の総称です。

モデルとビューのファイルには、それぞれ以下の情報を含みます。

* モデルのファイル
  * 利用するビュー、および、ビュー同士がどのように結合されるかの情報
* ビューのファイル
  * 参照するテーブル、および、テーブルからどのように情報を抽出・集計するかの情報

Looker で集計・可視化できるデータを追加変更する場合、これらのファイルを変更することが必要になります。

### Explore と LookML プロジェクト

Explore は、データを効率的に探索することができる Looker の強力な機能です。

Explore では、様々なデータの集計・可視化を行なうことができます。 Explore の利用方法はドキュメントを参照してください。 [Exploring data in Looker](https://docs.looker.com/exploring-data/exploring-data)

LookML プロジェクトにおけるモデルのファイルには、この Explore を定義します。 また、ビューのファイルには、Explore におけるデータの抽出・集計のために利用されるディメンションやメジャーを定義します。

以下はよくあるユースケースと、それを実現するために必要となる変更対象のファイルと変更内容です。

* 新たなビューを利用してデータを集計・可視化する
  * 変更対象：モデルのファイル
  * 変更内容：Explore の定義を追加・変更する
* 新たな抽出・集計の方法でデータを集計・可視化する
  * 変更対象：ビューのファイル
  * 変更内容：ディメンションやメジャーの定義を追加・変更する

これらの整理を参考に、実現したいユースケースに対して何を変更すべきであるかを理解してください。

ここまで説明した LookML プロジェクトや関連する用語についての詳細はドキュメントを参照してください。 [LookML terms and concepts](https://docs.looker.com/data-modeling/learning-lookml/lookml-terms-and-concepts)

## 開発の流れ

LookerML プロジェクトの変更は、Looker が提供する IDE で行ないます。 まずは、サイドバーから、"Develop" > "wantedly" の順に進み、LookML プロジェクトを開きましょう。

もしくは、下記のリンクから直接 LookML プロジェクトを開くこともできます。 [wantedly プロジェクト (internal)](https://wantedly.jp.looker.com/projects/wantedly)

### 開発権限の申請

LookML プロジェクトの変更を行なう場合、開発権限が必要になります。

Looker の開発には誰でも参加できます。 開発権限がない場合は[開発者権限の申請 (internal)](https://dev-docs.wantedly.com/looker/request-developer-role)を参考に申請を行ない、開発に参加しましょう。

### 開発モードの有効化

LookML プロジェクトに変更を加えるには、開発モード (Development Mode) が有効になっている必要があります。 画面上部に青色のバナーが表示されているのが、開発モードであることの目印です。

開発モードの有効化の方法はドキュメントを参照してください。 [Switching in and out of Development Mode with enhanced navigation](https://docs.looker.com/data-modeling/getting-started/dev-mode-prod-mode#switching_in_and_out_of_development_mode_with_enhanced_navigation)

### ブランチの作成

Looker は Git を利用したバージョン管理を行ないます。 開発用のブランチの作成を行ない、LookML プロジェクトに変更を加える準備をしましょう。

開発用のブランチの作成方法はドキュメントを参照してください。 [Working with Git branches](https://docs.looker.com/data-modeling/getting-started/version-control-and-deploying-changes#working_with_git_branches)

### LookML プロジェクトの変更

Looker の IDE で、LookML プロジェクトの変更を行ないます。 モデルとビューのファイルの追加や変更を行ないます。

詳しい手順は、後述のデータモデリング手順を参考にしてください。

### Explore を利用した動作確認

開発モードでは、LookML プロジェクトの変更内容を反映した結果を確認することができます。 Explore を用いて、期待するデータの抽出や集計ができるかを確認するのが一般的です。

### GitHub を利用したコードレビュー

Looker は、GitHub と連携しているので、Looker の IDE からコミットなどの Git の操作だけでなく、GitHub の PR を作成することも可能です。 変更を終えたら適切な粒度でコミットし、GitHub の PR を作成してください。

LookMLで不明瞭な点があれば @wantedly/bi をレビュアーに含めてください。 それ以外は各チームのドメイン知識のあるメンバーをレビュアーにしてください。

あとは、他の開発フローと同様に、コードレビューと指摘内容に対する修正を終え、開発用のブランチをマージしてください。

### 開発と並行したダッシュボード作成時の注意点

他の利用者が共有されたコンテンツ（ダッシュボードや Look）を閲覧する場合は、開発モードの影響を受けず、常に本番モード (Production Mode) の LookML プロジェクトを参照していることに注意してください。 開発モードにおける LookML プロジェクトの変更を前提としたコンテンツの追加や変更を行なうと、他の利用者からはコンテンツでエラーが生じて内容を閲覧できないということが発生してしまいます。

他の利用者と共有されるコンテンツの追加や変更をする際は、必ず開発用のブランチをマージしてから行なうようにしましょう。

## データモデリング手順

ここでは、スタースキーマを作成することを前提としてデータモデリング手順を説明します。

スタースキーマとは、データモデリングの代表的な手法のひとつです。 スタースキーマでは、ファクトテーブルとディメンションテーブルを組み合わせます。 各テーブルは以下のようなテーブルを指します。

* ファクトテーブル
  * 関心対象となるイベントの発生ごとに1レコードで表現したデータ
* ディメンションテーブル
  * 人や場所、物などの属性値を表現するデータ

以降は、具体例として、スカウトのファクトテーブルと、ユーザのディメンションテーブルを用いて、スタースキーマを作成することを想定して説明を続けます。

### ビューの定義

テーブルを参照できるように、ビューのファイルの作成と定義をすることから始めます。

ビューのファイルを新規で作成する最も簡単な方法は、テーブルの情報からビューを作成する方法です。 ビューのファイルを追加したいフォルダのメニュー > "Create View From Table" を選択し、テーブルを選択してビューのファイルを作成することができます。

詳しいビューのファイルの作成方法はドキュメントを参照してください。 [Adding a new view from an existing database table](https://docs.looker.com/data-modeling/getting-started/model-development#adding_a_new_view_from_an_existing_database_table)

作成されるビューのファイルには、参照するテーブルの指定、テーブルのすべてのカラムに対応するディメンションなどが含まれる LookML の記述が含まれます。

以下は、スカウトのテーブルを参照するファクトテーブルを作成した場合の例です。

```lookml
view: scouts {
  sql_table_name: `project.dataset.scouts` ;;
  drill_fields: [id]

  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }

  dimension: user_id {
    type: number
    sql: ${TABLE}.user_id ;;
  }
  ...

  measure: count {
    type: count
    drill_fields: [id]
  }
}
```

作成されたビューに対してディメンションを追加するには [dimension パラメータ](https://docs.looker.com/reference/field-params/dimension)を、メジャーを追加するには [measure パラメータ](https://docs.looker.com/reference/field-params/measure)を用いて宣言を記述します。

ビューの定義を追加する際に利用できるすべてのパラメータについてはドキュメントを参照してください。 [View parameters](https://docs.looker.com/reference/view-reference)

### Explore の定義

次に、定義したビューを用いて Explore の定義を行ないます。

モデルのファイルに新しく Explore の定義を追加するには、[explore パラメータ](https://docs.looker.com/reference/explore-params/explore)を用いて宣言を記述します。 多くの場合、Explore で利用するビューと同名の explore を追加します。 スタースキーマを作成することを前提とする場合は、ファクトテーブルを参照するビューと同名の explore を追加すると良いでしょう。

また、explore パラメータ内では、Explore の表示やフィルタの動作などを様々なパラメータを用いて指定することができます。 多くの場合、Explore で結合されるビューを [join パラメータ](https://docs.looker.com/reference/explore-params/join)を用いて指定します。 スタースキーマを作成することを前提とする場合は、ディメンションテーブルを参照するビューを結合されるビューとして指定すると良いでしょう。

以下は、スカウトのファクトテーブルを参照するビューと同名の explore を追加する例です。 結合されるビューとして、ユーザのディメンションテーブルを参照するビューを指定します。

```lookml
explore: scouts {
  join: users {
    relationship: many_to_one
    sql_on: ${scouts.user_id} = ${users.id}
  }
}
```

最後に、作成したexploreをmodels ディレクトリ配下でモデルを定義するファイルを追加します。 `<ドメイン名>.model.lkml`ファイル内に以下のようにして、作成したexploreをincludeします。

```
include: "/explores/<ドメイン名>/<追加するexplore名>.explore.lkml"
```

Explore の定義を追加する際に利用できるすべてのパラメータについてはドキュメントを参照してください。 [Explore parameters](https://docs.looker.com/reference/explore-reference)

### ダッシュボード

Looker では、Explore をもとにグラフなど、視覚的なレポートを作成し、それらをダッシュボードという形でまとめることができます。

また、定期的にダッシュボードのスナップショットを取得し、Slack に通知することもできます。詳しくは [Slack 統合への配信のスケジューリング](https://cloud.google.com/looker/docs/scheduling-slack?hl=ja) を参照してください。

#### もっと知りたい

* [Looker documentation](https://docs.looker.com)
* [Looker Connect](https://connect.looker.com/)
* [Write LookML](https://docs.looker.com/data-modeling/learning-lookml/lookml-intro)
