LookerのGit連携とバージョン管理

記事タイトルとURLをコピーする

株式会社 G-gen の菊池です。Looker では LookML (Looker Modeling Language)を用いてデータモデルを定義しますが、これらのコードはすべて Git リポジトリで管理されます。当記事では、Git 連携の仕組みや品質管理設定について解説します。

Looker におけるバージョン管理の概要

LookML プロジェクトと Git リポジトリの連携

Looker の LookML プロジェクトは、 Git リポジトリと 1 対 1 に紐づけることでバージョン管理を構成します。バージョン管理構成にすることで、複数人での共同開発や変更履歴の追跡、安全な本番環境へのデプロイができます。

リモートリポジトリが準備できていない場合や素早く開発を始めたい場合は、Looker サーバー上にローカルの Git リポジトリを作成して単独でバージョン管理を開始することも可能です。

開発モードと本番環境の分離

Looker には Development Mode(開発モード)と Production Mode(本番環境モード)という 2 つの環境が分離して存在します。

Development Mode は開発者が LookML を安全に編集、テストできる個人のサンドボックス環境であり、各ユーザーには他のデベロッパーに影響を与えない独自の開発ブランチ(dev- で始まりデベロッパー名を含むブランチ)が割り当てられます。

対して Production Mode はすべての一般ユーザーがアクセスする共有環境であり、ユーザーはこの環境でデータモデルを探索しダッシュボードを構築します。デフォルトの構成では、本番ブランチ(通常は master または main)の最新コードが本番環境で実行されますが、高度な設定を用いることで、特定のリリースバージョン(コミットやタグ)のコードを実行するよう厳密に管理することも可能です。

開発モードの場合、画面上部に「現在は Development Mode です。」というテキストが表示されたバナーが配置されます。右上にある「Exit Development Mode(Development Mode を終了)」という部分をクリックすると、本番環境モードへ切り替わり、このバナーは消えます。

開発モードから本番環境モードへの切替

本番環境モードから開発モードへ切り替える場合は、画面左上にあるメインメニューをクリックして開き、メニューの下部にある「Development Mode」をオンにします。開発モードと本番環境モードのオン・オフは、キーボードショートカット Mac : Control + Shift + D / Windows : Ctrl + Shift + D でもすばやく切り替えることが可能です。

本番環境モードから開発モードへの切替

LookML を変更する場合は、開発モードで作業する必要があります。LookML のコードを修正すると、「Save Changes」というボタンが表示されます。

LookMLの修正(例:列名の修正)

このボタンをクリックすると変更内容が保存され、作業している個人の開発環境に変更が反映されます。

開発モードのダッシュボード

一方で、すべてのユーザーが共有する本番環境モードには、まだこの変更内容は反映されません。

本番環境モードのダッシュボード

個人の開発環境での変更を本番環境モードのユーザーにも見えるようにするためには、保存した変更を Git に「コミット」し、本番ブランチへ「デプロイ」するバージョン管理のステップを踏む必要があります。

IDE 内での Git 操作

Looker の統合開発環境(IDE)には、Git コマンドを操作するための GUI ボタン(IDE 右上、またはメインナビゲーションメニューの「Git Actions」パネル)が備わっています。開発者は複雑な Git コマンドを直接入力することなく、ボタン操作のみでコミットやリモートからのプル、本番環境へのデプロイといった一連のワークフローを実行できます。

特に便利なのは、この Git ボタンが現在の開発ステータス(ファイルの変更有無や他の開発者による更新状況など)に応じて、次に必要なアクションのみを動的に表示する点です。これにより、開発者は手順に迷うことなく、安全かつスムーズにバージョン管理を行うことができます。

Git リポジトリとの接続方法

概要

新規にプロジェクトを作成する際、まず Git リポジトリの構成設定を行います。

Git リポジトリは、外部の Git プロバイダと連携する「HTTPS を使用した接続」、「SSH を使用した接続」、または外部連携を行わずに Looker サーバー上にローカルリポジトリを作成する「ベア Git リポジトリ」の 3 つの構成オプションのいずれかを選択できます。

HTTPS を使用した接続

HTTPS 接続では、ユーザー名と個人用アクセストークン(Personal Access Token)を使用して認証を行います。 運用方法として、プロジェクト全体で 1 つの Git アカウントを共有する設定と、Looker の「ユーザー属性」機能を用いてデベロッパーごとに個別の Git アカウントを使用する設定が選択可能です。

なお、単一の Git アカウントを共有する場合でも、Looker は各デベロッパーの Looker ユーザー名を使用してコミットを行うため、誰が変更を加えたかの履歴は正しく追跡されます。

ただし、注意点として Looker は現在、GitHub のきめ細かい個人用アクセス トークン(Fine-grained personal access tokens)をサポートしていません。そのため、GitHub を利用する場合は、必ず 「Tokens (classic)」 のオプションを使用してトークンを作成してください。

SSH を使用した接続

SSH 接続では、 Looker が生成する公開鍵を Git プロバイダー側に登録することで認証を行います。手順としては、 Looker 側で SSH 公開鍵を生成してコピーし、 Git プロバイダーのリポジトリ設定画面で「Deploy Key」として登録します。この際、 Looker からリポジトリへ変更をプッシュできるよう、書き込みアクセスを許可(Allow write access)を有効にする必要があります。

ベア Git リポジトリ

リモートの Git プロバイダーを準備していない場合や、すぐに開発を開始したい場合、 Looker サーバー上にローカルリポジトリを作成するベア Git リポジトリ構成も選択できます。

ただし、ベア Git リポジトリではプルリクエストの作成など一部の機能が使用できないため、あくまで一時的な利用にとどめることが推奨されます。最初はベアリポジトリで開始し、後からリモートの Git プロバイダーへ接続し直すことも可能ですが、その場合は「まだ Git 履歴を持たない空のリポジトリ」に接続する必要がある点に注意してください。

デフォルトのワークフロー

概要

Looker の標準的なデプロイフローは、開発モード(個人の開発ブランチ)での作業から、共通のリモートリポジトリを経由して、本番環境へと反映される一連のステップで進行します。

開発ブランチへの変更のコミット

開発モードで LookML の修正が完了したら、LookML の検証(Validate LookML)ボタンをクリックします。 LookML にエラーが見つからなければ、ボタンは「Commit Changes & Push」に変わります。 エラーがあった場合は、LookML の検証欄にエラー内容が表示されます。

LookMLの検証

「Commit Changes & Push」ボタンをクリックすることで、コミットのメッセージを入力する画面が表示されます。 コミットの内容をメッセージ欄に入力して、「Commit」ボタンをクリックすることで、変更を開発ブランチに保存(コミット)します。 この操作により、作業内容に名前を付けて保存し、後から履歴を追えるようになります。

メッセージを入力してコミット

プロジェクトの設定によっては、変更をコミットする前に LookML Validator によるエラー修正や、データテストへの合格が必須となる場合があります。

開発ブランチを本番環境ブランチにマージする

コミットされた変更は、共有のリモートリポジトリへプッシュされます。デフォルト設定の Looker では、IDE 上の「本番環境にデプロイ(Deploy to Production)」ボタンをクリックすることで、開発ブランチの内容が本番ブランチ(通常は master または main )へマージされます。

本番環境にデプロイ

Looker 本番環境への本番環境ブランチのデプロイ

IDE での「本番環境にデプロイ」操作を行うと、マージに続いて Looker の本番環境(Production Mode)が自動的に本番ブランチの最新コミットを参照するように更新されます。これにより、エンドユーザーが参照するダッシュボードや Explore に最新の定義が即座に反映されます。

本番モード環境のダッシュボード

品質と安全性を高める設定

概要

「プロジェクト構成(Project Configuration)」ページの設定を変更することで、より厳格なリリース管理を実現できます。これらは、複数人での大規模開発においてコードの品質と環境の安定性を維持するために重要です。

LookML バリデーションの必須化

LookML Validator によるエラーチェックを、変更をローカルブランチにコミットする前の必須条件として設定できます。設定により「エラーと警告の両方を修正」または「エラーのみを修正」を必須にすることが可能です。これにより、構文エラーを含んだ不正なコードがプロジェクトの履歴に混入することを未然に防ぐことができます。

データテストの必須化

LookML 内に test パラメータを定義してモデルのロジックを検証するデータテストを作成している場合、本番環境へデプロイする前にこれらのテストに合格することを必須条件に設定できます。なお、新しく作成された LookML プロジェクトでは、このオプションがデフォルトで有効になっています。

プルリクエスト(PR)の統合

Pull Request Required 設定を有効にすると、デベロッパーは Looker IDE 内で直接本番ブランチへマージすることができなくなります。変更を本番環境に反映させるためには、必ず GitHub 等の外部サービス上でプルリクエストを作成し、第三者によるコードレビューを経てマージする必要があります。これにより、開発ガバナンスを大幅に高めることができます。

Looker は「マージコミット」方式のみをサポートしているため、この機能を利用する場合は、Git プロバイダ側で「スカッシュマージ」や「リベースマージ」のオプションを使用不可にしておくことが推奨されます。

高度なデプロイモード

Advanced Deploy Mode(高度なデプロイモード) を有効にすると、常に本番ブランチの最新状態を自動デプロイするデフォルトの動作が解除されます。代わりに、デプロイ権限を持つ担当者が特定のコミット SHA や Git タグ(リリースバージョンなど)を明示的に指定して本番環境へ反映させることが可能です。

この機能により、Git 上でのマージと Looker へのリリース反映タイミングを完全に切り離し、Webhook や API を利用した複雑なリリースパイプラインを構築できます。ただし、このモードを有効にした場合、本番環境への「最初の1回目」のデプロイは、必ず Looker IDE 内の Deployment Manager から手動で実行する必要がある点に注意してください。

菊池 健太(記事一覧)

事業開発部クラウドサポート課。2024年7月より、G-genに入社。群馬出身のエンジニア。前職でLookerの使用経験はあるが、Google Cloudは未経験なので現在勉強中。