2026年1月16日 【Looker】ガバナンスの要、LookMLこそ美しく!静的解析ツールLook at me sideways(LAMS)のすすめ【CI/CD】 Google Cloud Looker LookML 検索する Popular tags 生成AI(Generative AI) Vertex AI Search Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL Category Google Cloud Author ゆうこ SHARE 目次 look-at-me-sideways(LAMS)とは? まずはローカルで動かしてみよう! 指定を変えてみよう! GitHubアクションに組み込んでみよう Content データの可視化をするツールは数多くありますが、Googleが提供するLookerは利用者全体で「データ定義にずれのない」「ガバナンスの効いた」データが使える点が、他と一線を画す魅力です。 そのコアとなるのが独自のモデリング言語、LookMLです。LookMLは自由度が高い分、安定稼働させるには運用ルールが不可欠です。 本記事では、LookML開発での強い味方、look-at-me-sideways(LAMS)を紹介します! look-at-me-sideways(LAMS)とは? look-at-me-sideways(LAMS)って何? look-at-me-sideways(LAMS)はLookMLの静的解析ツールです。 こんなことができます↓ 定義ミス、使われてないfieldの検出、依存関係のチェック などの検出 プロジェクトの特性に合わせて、解析ルール無効化、自作のルール適用 コマンドのパラメータで対象や出力形式を調整(例:特定のファイルだけルール無効化) GitHubActionsやJenkinsに組み込んで、ルール違反のソースは本番環境に反映しないように制御 どんな人のためのツール? LookMLを開発している人なら誰でも嬉しい機能です。とくに以下のような環境でLAMSの効果が発揮されます。 LookMLを複数人で開発している 本番環境が稼働中で、ステージングや本番反映でトラブルを起こしたくない CI環境が整っている まずはローカルで動かしてみよう! LAMSがどんなことをしてくれるのか、ローカル環境で試してみましょう! 事前準備 検証対象のLookMLの構成をローカル環境に準備します。 Looker開発で利用しているGitのリモートリポジトリからクローンして、ローカルリポジトリにLookML構成一式を用意します。 ※Lookerがデフォルトで用意しているBare Repositoryはオプションに制限があり、直接クローンすることは出来ません。プルリクエストにも制限があります。もしBare Repositoryを使って管理している場合は、LAMSを試す前に外部Gitサーバでの管理を検討することをおススメします。 参考) Looker-Git接続の設定 Looker-ベアGitリポジトリの設定 実行手順 LAMSのインストール LAMSはNode.js製です。npmを用いてインストールします。npmが入っているかを確認します。 コマンドプロンプトを起動し、以下のコードを実行します。 npm -v npmのバージョンが出ればOKです。 もし”npmが見つからない”といったメッセージが出た場合は、Node.js公式ページにて、Node.jsとnpmをインストールしてください。 続いてLAMSをインストールします。最新のV3を入れたいため、末尾に”@5″を指定します。 npm install -g @looker/look-at-me-sideways@5 マニフェストファイル(manifest.lkml)の作成 LAMSをインストールしたら、続いてマニフェストファイルを作成しましょう。 マニフェストファイルは「どんな内容を検証するか?」を記載したファイルです。LAMSが用意したbuilt-inのルールを利用できるほか、自分でカスタマイズしたルールを適用することもできます。 1. マニフェストファイルを作成します。 事前準備の章で用意したLookMLのフォルダを開き、”manifest.lkml”ファイルを作成します。 2. マニフェストを定義します。 ここではLAMSで公開されているbuilt-inのルールを利用します。 マニフェストファイルをテキストエディタで開き、built-inルールを貼り付け、2行目以降の各ルールの行頭の#を消し、コメントアウトを解除します。 #LAMS rule: K1{} # Primary key naming rule: K3{} # Primary keys first rule: K4{} # Primary keys hidden rule: K7{} # Provide one `primary_key` rule: K8{} # `primary_key` uses PK dims rule: F1{} # No cross-view fields rule: F2{} # No view-labeled fields rule: F3{} # Count fields filtered rule: F4{} # Description or hidden rule: E1{} # Join with subst'n operator rule: E2{} # Join on PK for "one" joins rule: E6{} # FK joins are m:1 rule: E7{} # Explore label 25-char max rule: T1{} # Triggers use datagroups rule: T2{} # Primary keys in DT rule: H1{} # Hoist identifiers rule: H2{} # Group fields rule: H3{} # Sort-group groups rule: H4{} # Group more rule: H5{} # Hoist main view rule: H6{} # Sort-group views rule: W1{} # Block indentation LAMSの実行 マニフェストファイルが準備出来たらLAMSコマンドを実行します。 コマンドプロンプトでcdコマンドを実行し、事前準備の章で用意したLookMLのフォルダへ移動します。 その後、LAMSを実行します。 lams 静的解析が行われ、ルール違反の項目が洗い出されました! E2は”View同士の結合にプライマリキーが利用されていない”、F4は”非表示ではないフィールドに説明がついていない”という指摘です。 無事、LookMLの静的解析が行われました。しかしルール違反のファイル名が途切れていたり、ルール適用したくないファイルもあります。実運用に向けてカスタマイズしましょう! 指定を変えてみよう! 変更したい点 1.出力形式を変えたい LAMSのデフォルトの出力形式は”lines”です。LAMSコマンドを実行したコンソールに、1指摘1行で出力されます。フォルダの階層が深いと、検出されたファイルのパスが省略されるのが難点です。 ファイルパス全て閲覧したいです。 2.検出したくないファイルがある 検証対象のLookMLは、refinementsを用いて変更に強い設計にしています。 +- {lookml_root} +- model/ +- views/ | +- t_users.view.lkml | +- ... +- ref_views/ | +- t_users.view.lkml | +- ... +- manifest.lkml ・viewsフォルダ配下のviewファイルは、データベースのテーブルから動的に生成します。 ・ref_viewsフォルダ配下のviewファイルは、viewsフォルダ配下のviewをrefinementで再定義します。 viewを分けることで、DBテーブルの追加変更があるときは、viewsフォルダ配下の再作成で済みますし、可視化のために追加した指標はref_viewsフォルダ配下のviewで維持されます。 modelで結合したり、exploreに表示するref_views配下はLAMSで解析したい一方で、自動生成のviews配下は解析対象から外したいです。 3.解析するルールを変更したい LAMSのbuilt-inルールには、”モデルの結合フィールド”や”プライマリキーの名称”等、仕組みに深く根差した解析ルールが含まれます。 今回のケースではすでにダッシュボードを作成済で大きくルールを変更するのはリスクがあるため、フィールドに説明がついているかのチェックに留めようと思います。 修正方法 1.出力形式を変えたい LAMSの出力形式(–output)は”lines (default), github-job-summary, markdown, markdown-developer, jenkins, legacy-cli, (BETA) add-exemptions”が用意されています。markdown形式で出力してみます。 2.検出したくないファイルがある LAMSで検出を抑制する方法は2つ、ベータ版も含めると3つあります。 修正方法1) lamsを実行するコマンドの引数で、対象をref_viewsに限定する LAMSコマンドの検出対象(–source)で、検出対象を指定します。viewsフォルダ配下のviewファイルの代わりに、ref_viewsフォルダ配下のviewファイルを探索する場合は、以下のように書きます。 lams --source="**/{*.model,*.explore,ref_views/*.view,manifest}.lkml" 修正方法2) lookMLファイルに対象外であることを埋め込む 対象外にしたいファイルに、” #LAMS exempt: “を指定すると、そのルールが無視されます。 view: t_users { #LAMS exempt: W1 {why: "This file is raw data"} sql_table_name: `sample_dataset.t_users` ;; 柔軟にファイルごとに制御できる一方で、無視したいviewsフォルダの配下を作り直すと指定が消えてしまうので、今回のケースでは不向きな方法です。 修正方法3) ※ベータ版※ lams-exemptions.ndjsonファイルを作り、除外したいファイルを記載する ここでは紹介のみとします。 3.解析するルールを変更したい manifest.lkmlをエディタで開き、今回残したいルールF4以外のルールを削除して保存します。 実行結果:修正版 全ての修正を加えると、コマンドは以下のようになります。実施してみましょう。 lams --reporting=yes --output=markdown --source="**/{*.model,*.explore,ref_views/*.view,manifest}.lkml" LAMSコマンドを実行したフォルダの配下に、issues.mdファイルが出来上がりました。 issues.mdを開いてみると、期待通りF4のみのチェックが、ファイル名途切れることなく出力されています。 エラーとなっていたのは”非表示ではないディメンションにdescriptionの指定が無い”です。descriptionを追加してLAMSコマンドを実行すると、エラーが消えたことも確認できました。 GitHubアクションに組み込んでみよう LookML開発の保守性を高めるため、GitHubアクションにLAMSの検証を組み込みましょう。GitHubを使うので、output形式はgithub-job-summaryを使用します。 1.LookMLを保存しているGitHubリポジトリを開きます。 2.GitHub > Actions yourselfを選び、”CI.yaml”を作成します。 3.以下の内容を入力して保存します。 name: CI on: [push] jobs: lams_job: runs-on: ubuntu-latest name: LAMS LookML Linter Job steps: - name: Checkout your LookML uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: '22.x' - name: Install LAMS run: npm install -g @looker/look-at-me-sideways@5 - name: Run LAMS run: lams --reporting=yes --output=github-job-summary --source="**/{*.model,*.explore,ref_views/*.view,manifest}.lkml" これで解析ルールを守っていないファイルがGitHubにプッシュされると、LAMSの静的解析が走り、Actionsでエラー内容を確認することができるようになりました。 ※スクリーンショットは別プロジェクトのものです システムサポートでは、Google CloudやLookerの導入や活用を支援しております。Lookerを導入したい・導入したけど使いこなせていない…という方は、お気軽にご相談ください! Google Cloud 導入・活動支援に関するご相談はこちら 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 良く分かった あまりピンとこなかった さっそく使ってみたい Author ゆうこ 株式会社システムサポート BSG事業部 2015年中途入社。現在はGoogle Cloudのデータ移行・データ可視化のプロジェクトを担当。 好きな紅茶はG clef カイラベッタ ニルギリ。 Google Cloud Looker LookML 2026年1月16日 【Looker】ガバナンスの要、LookMLこそ美しく!静的解析ツールLook at me sideways(LAMS)のすすめ【CI/CD】 Category Google Cloud 前の記事を読む 【Androidセキュリティ】fridaを用いたBypassについてめっちゃ簡単に基礎から書いてみた!! Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2026年1月16日 Google Cloud 【Looker】ガバナンスの要、LookMLこそ美しく!静的解析ツールLook at me sideways(LAMS)のすすめ【CI/CD】 2026年1月16日 モバイル 【Androidセキュリティ】fridaを用いたBypassについてめっちゃ簡単に基礎から書いてみた!! 2026年1月14日 Google Cloud 【Looker】導入2分でスパゲッティ化したモデルを一刀両断「LookML Diagram Extension」導入・活用完全ガイド HOME Google Cloud 【Looker】ガバナンスの要、LookMLこそ美しく!静的解析ツールLook at me sideways(LAMS)のすすめ【CI/CD】