2026年1月16日 【Looker】ガバナンスの要、LookMLこそ美しく!静的解析ツールLook at me sideways(LAMS)のすすめ【CI/CD】 Google Cloud Looker LookML 検索する Popular tags 事例紹介 GEN-STEP 生成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についてめっちゃ簡単に基礎から書いてみた!! 次の記事を読む 【Android/CS基礎 – メモリ管理③】ARTとGCの実装 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年4月23日 Google Cloud 【速報】Google Cloud Next ’26 初めての現地参加レポート(Day1 基調講演) 2026年4月22日 お知らせ 【お知らせ】システムサポートが2026 Google Cloud Partner of the Yearを受賞(日本を代表するデータベース・ウィナーとして選出) 2026年4月22日 お知らせ 【Partner Awards 2026受賞企業/先着特典あり】Google Cloud Next Tokyo 26 出展のお知らせ【7 月 30 日、31 日 東京ビッグサイト】 HOME Google Cloud 【Looker】ガバナンスの要、LookMLこそ美しく!静的解析ツールLook at me sideways(LAMS)のすすめ【CI/CD】