[レポート] 高品質でエラーの無いLookMLコードを維持する方法 – Looker:JOIN 2019 at San Francisco #looker #JOINdata

2019.11.25

現地時間2019年11月05日〜07日の期間、米国サンフランシスコで開催されているLookerの年次カンファレンスイベント『JOIN 2019』。今年2019年のイベントは、弊社から3名のメンバーが現地参戦しています。

当エントリでは、その中からブレイクアウトセッション『Maintaining High-Quality, Error-Free LookML Code(高品質でエラーの無いLookMLコードを維持する方法)』の内容について参加レポートをお届けします。

目次

 

セッション概要

セッションの概要は以下の通りです。

[登壇者情報]:
・Dylan Baker (Founder, Consultant / DBAnalytics)
・Josh Temple (Senior Data Engineer / Milk Bar)
・Steven Talbot (Staff Software Engineer / Looker)

[セッション情報]:
Maintaining High-Quality, Error-Free LookML Code
(高品質でエラーの無いLookMLコードを維持する方法)

To be clear, LookML code is code. What makes it so powerful is that it builds upon the foundation that’s been established since coding began. In this session, we’ll discuss best practices for working with LookML to maintain the quality of the data housed in your database, while ensuring your most important metrics are secure. From the convenience of reusability to the peace-of-mind of validation, we’ll dive into tips on how to get the most from LookML.
(明確にするために、LookMLコードはコードです。 強力なのは、コーディングが始まってから確立された基盤の上に構築されていることです。 このセッションでは、LookMLを使用してデータベースに格納されているデータの品質を維持しながら、最も重要なメトリックの安全性を確保するためのベストプラクティスについて説明します。 再利用の利便性から検証の安心まで、LookMLを最大限に活用するためのヒントに飛び込みます。)

 

セッションレポート

以降、当セッションの内容をレポートします。自己紹介から、遊び心のあるキャラが登場していました。

 

Lookerで積み上げていく『信頼コンボ』

Lookerの開発はビデオゲームのようなもの。

  • Trust Combos(信頼コンボ)
    • Lookerの開発はエンドユーザーとの信頼を構築していくこと
    • エンドユーザーがクエリを正常に実行するたび、信頼の組み合わせを構築=信頼コンボを繋げていく事が出来る
  • Losing Combos(コンボを失う)
    • クエリが実行されない、またはエンドユーザーが信頼できる結果を提供出来ない場合、その時点でエンドユーザーとの信頼が損なわれてしまう
    • 信頼コンボは壊れているので、また一からやり直していく必要がある
  • Looker開発者としてのゴールは以下の2つが挙げられる。これはすなわち、Lookerでのゲームに勝つ方法でもある。
    • 出来るだけ早く、信頼の組み合わせを構築していく
    • 出来るだけ長く、その信頼コンボを維持していく

どうすればこのゲームを簡単に出来るだろうか。

そのためには、Lookerの開発・テストが楽になるような『1UPキノコ』を探していく必要がある。

 

Lookerにおける『自動テスト』の提唱

自動テストを行う事で、以下のポイントであなたを1up出来る。

  • 命名規則
  • コードのフォーマット
  • 特定の数値を返すメトリック
  • 特定の期間内にクエリが返ってきていること
  • クエリがエラーとならないようにする

また、自動テストにより以下のメリットも得られる。

  • (その1)出来るだけ早く『信頼のコンボ』を構築していく→自動テストを行う事で、LookMLをより早く展開出来るようになる
  • (その2)信頼関係を出来るだけ長く維持していく→自動テストを組み込むことで、(信頼関係を壊すような)破壊的な変更をプッシュする事を止めることが出来る

 

Lookerで『データテスト』を始めよう

Lookerでは、モデルのパラメータとして『テスト』に関するものも用意されています。

Lookerのクエリ及び1つ以上のアサーションテーブルがあり、この組み合わせで、テストを通すために"Yes"を返す必要があります。これらの要素は勿論LookMLのコードの一部=LookMLコードに存在するLookMLエンティティであり、Gitでソースコード管理が可能です。

テストコードの記述例。

そしてこれが実行例。詳細は上記ドキュメントに記載があるので是非ご参照ください。

この『データ整合性テスト』を用いることで、Looker用にデータベースが正しく構成されていることを確認出来、Lookerを使用して、データベース内のデータが期待通りの形式となっているかどうかを確認する事が出来ます。

『単体テスト』は、プログラミング言語に於けるベストプラクティスの1つ。LookMLコードを壊し、ユーザーの信頼を損なうことがないように、コードの品質を保つことが出来ます。

セッションでは、Lookerのテスト機能を使ったテスト駆動開発(TDD)やスタブテストに関するデモも実演していました。

 

Looker&LookML用のCIツール『spectacles』の紹介

Lookerに、この『データテスト』を直接組み込むもっと良い方法は無いか?という問いに対して紹介があったのは『spectacles』というツール。

spectaclesは、LookerおよびLookML用のコマンドラインの継続的統合ツールです。

LookerインスタンスとLookMLで一連のテストを実行するバリデーターを実行し、各バリデーターはLooker APIと対話して、Lookerインスタンスがスムーズに実行されることを確認するテストを実行します。

LookMLおよびコンテンツ開発中に眼鏡をローカルで実行することも、継続的な統合パイプラインとして実稼働で実行することも可能です。

『spectacles』に関するデモ実演が合わせて行われていました。

『spectacles』に関しては専用サイトも設けられています。ツール自体はpipでインストール可能。色々便利な機能が用意されていそうですし、これは非常に興味深いプロダクトですね。

セッション最後は登壇者が『spectacles』のサイトアイコンにも使われているサングラスを装着してキメ!なポーズでおしまい。

 

まとめ

以上、Looker:JOIN 2019ブレイクアウトセッション『Maintaining High-Quality, Error-Free LookML Code(高品質でエラーの無いLookMLコードを維持する方法)』の参加レポートでした。

Lookerでテストコードが書ける、TDD(テスト駆動開発)が出来る、というのはこのセッションを聞くまでは知りませんでしたし、『えっ、そんなことも出来るの?』と半ば衝撃的でもありました。また更に、このテストサイクルを回す上での強力なツールと成り得る『spectacles』の存在を知ることも出来たのは嬉しいポイントでした。成果物(ここではLooker及びLookMLコード)が適宜テスト出来る、品質維持を担保環境があるというのは利用者・プロジェクトにとっても評価すべきポイントとなるのではないでしょうか。別途機会を設け、『Lookerのテストに関する機能』は触って/検証してみたいと思います。