はじめに
弊社ギルドではメンバーと案件の規模拡大に従い知見の蓄積や共有を進めてきましたが、 今回知見共有から更に一歩踏み出し業務効率化ツールとして無料chrome拡張機能をリリースいたしました。 元々は櫻井個人が利用したい機能として内部向けに開発を開始したのですが、 データエンジニアは業界全体として人手不足であり、 そこに何かしらプラスの効果を与えられればと考え無料公開させていただきました。
マート開発を行われる方々に使っていただけるととても幸いです。 またgithubも公開しているので機能の追加などプルリクエストもぜひ送っていただけると幸いです。
開発に至った背景
今回拡張機能開発に至った背景としてはいくつかのクライアント様にてデータエンジニアリングのお手伝いをさせていただく中で、 SQLレビュー時にPKが想定とずれているケースがいくつか散見されたことが発端となっています。 PKがずれるケースとしては大きくわけて「元データが想定と違う」「join方法が間違っている」の2パターンになりますが、 いずれにしても発覚後はどの時点で想定からずれたのかをレコード数を見ながら確認を行っていました。 そんな中類似したSQLを作成していたことから、自動化する拡張機能の開発を検討し始めました。 本拡張機能によってレコード数確認を半自動化で行い、 最終的にはSQL開発時のセルフレビュー時点でミスに気づくことを考えていました。
機能
特徴
今回開発した拡張機能は大きく分けて3つの特徴を兼ね備えています。
- 安全性 – SQL文の書き換え機能のみのため、必要最低限の権限付与で利用できます
- 容易 – SQL貼り付け画面のみのシンプルなUIで、インストール後すぐに利用開始できます
- 無料 – 本拡張機能は全データエンジニアの業務効率化を目的として作られており、ギルドメンバー以外の方も全て無料にてご利用いただけます
個人的に機能をSQLの書き換えのみに限定して拡張機能への権限付与を最小限に抑えたことは、 機能をシンプルにするとともに安全性も高める面でとても良かったと感じています。 またUIをSQL貼り付け場所のみに限定したことも使いやすさを大きく向上させたと感じています。
(画面設計がない中機転を利かせて設計・開発をしてくれた丸山さんには感謝です…!)
ユースケース
ユースケースとしては背景でも上げたとおりマートのSQL検収が主な利用用途となっています。 作成したSQLに対しひとまずこの拡張機能を利用してレコード数を確認し、 joinなどで想定外にレコードが増減していないか簡単に確認できます。
またjoin句が複数存在する場合はレコード数とともにjoin方法もわかるので、 それらがどのような関係にあるのかをある程度推測することができます。
今後の展望
今回必要最低限の「検算用SQLの作成」までをスコープとして作成しましたが、 今後の展望としては大きく2つを考えています。
結果の可視性の向上
1つめは結果の可視性の向上です。 現状でもSQLのどの箇所のレコード数を示しているかわかるのですが、 見比べて確認する必要があり改善の余地があると感じています。 例えば実際のレコード数がでている箇所のSQLを抜粋して、 文字列として結果の箇所に出すなどができると良いかなと感じています。
関係性可視化
2つ目は利用する中で出てきた要望で、joinのレコード数把握のみでなくテーブルの関係図を出力する機能の追加です。 SQLをパースして得られた情報をもとに下記画像のようなjoin関係を可視化する機能を考えています。 これによってSQLやマートの設計をより直感的に捉え、 第三者にも説明しやすくなることを目指しています。
感想
今回開発完了後にまず自分や周辺の方に使ってみてもらった感触だと、 かゆいところに手が届くとても良い機能ができたのではないかと感じています。 SQL作成の初期段階で元データの設計ミスに気づけたりと、本拡張機能を用いることによる業務効率化の効果も出始めています。 もし本拡張機能に興味を持っていただければ chrome マーケットプレース からのダウンロードして使ってみてください! その中で気づいたこと等あればレビューに書いていただいたり、 一般公開しているgithubのコードにてプルリクエストをいただけると幸いです。
弊社ギルドでは知見共有と共にこういった業務効率化の活動を続け、 ギルド内に限定せずデータエンジニア業界全体の生産性を上げる活動を進めています。 ギルド自体に少しでも興味を持っていただいた方はフォームなどからご連絡いただけると幸いです。