Leverages データ戦略ブログ

インハウスデータ組織のあたまのなか

新卒入社2ヶ月で社内データ基盤の権限付与自動化ツールを作った話

はじめに

初めまして、データ戦略室ビジネスアナリティクスグループの濵田です。 2022年に新卒でレバレジーズに入社してデータ戦略室に配属となりました。 この記事では、私が配属直後に担当した仕事の1つである BigQuery権限付与の自動化 についてご紹介したいと思います。

きっかけはデータエンジニアからの依頼

きっかけはデータエンジニア森下からの「BigQueryの権限付与をいい感じにやりたいんだけど、ツール作ってくれない?」という一言でした。

私は学生時代にスマホアプリを作ってリリースした経験があり、プログラミングやツール実装についてある程度詳しそうだなと思われていたことが今回の依頼につながりました。

当時、私はビジネスアナリストとしてBIツールをメインにキャッチアップしていたため、突然の他職種からの依頼に驚きました。

社会人なりたての仕事、自分の専門とは違う領域にふわっとしたお題。。。本当に完成させられるんだろうかという思いでこの仕事をスタートすることになりました。

アクセス権限の管理は面倒

はじめに、レバレジーズにおけるデータ活用について紹介したいと思います。

レバレジーズではデータウェアハウスとしてBigQueryを採用しています。事業部ごとにGCPのプロジェクトが分かれており、社内の様々な職種の方がデータを利用するため、事業部と職種ごとにアクセスできるGCPプロジェクトとデータセットが決められています。

データ戦略室ではこのようなアクセス管理を業務に最低限必要なデータを見れるようにデータセット単位で設定しているのですが、それだけ細かい権限設定が必要になっていました。

私が配属された当時は以下のような流れでBigQueryの権限付与が行われていました。

  1. Slackでアクセス権限付与の依頼が飛んでくる
  2. GCPコンソールにてジョブ実行権限やプロジェクトの参照権限を付与する
  3. 依頼主の所属事業部と職種を確認し、対象のGCPプロジェクトとデータセットを確認する
  4. ターミナルでスクリプトを実行してデータセットへのアクセス権限を付与する
  5. Slackで完了の連絡をする

やることはシンプルだけど意外と数が多くて面倒だなと感じていただけたのではないでしょうか。

実際にやってみると、複数のウィンドウにまたがって作業を行うので他業務の集中が途切れやすいという問題や、依頼の数が増えると無視できない工数になってくるといった問題があることがわかってきます。

「BigQueryの権限管理をいい感じにする」ためにこれらの問題を解決するツールを開発することにしました。

「BQ権限付与るくん」の誕生

最終的に私が行き着いた答えはSlackアプリ「BQ権限付与るくん」の開発でした。 配属したての5月中旬に着手し、7月現在でどんどん使われるツールになってきています。

この「BQ権限付与るくん」は一言で言うとBigQueryの権限付与をSlack上で完結させるツールです。 「BQ権限付与るくん」を用いればウィンドウを行き来することなく、十数秒程度で一連の処理を完了できます。

「BQ権限付与るくん」の使い方は以下の通りです。 1. アクセス権限を欲しい人がGoogle Formを記入する 2. Slackチャンネルに通知が飛ぶ

↓以下のような通知がチャンネルに投稿され、現在オンラインのチャンネルメンバーに通知が飛びます。

  1. 通知から付与する権限を職種レベルで選択し、「権限を付与」をクリックする

↓プルダウンで権限を選択して「権限を付与」をクリック。パロットくんが首をふりながら頑張って付与してくれます。

↓無事終了すると誰が何を付与したか記録されます

  1. 権限が付与され、Slack上で完了の連絡をする

従来の手順と比較すると、ウィンドウを切り替える手間が最小限になり、かかる時間も大幅に削減されていることがわかります。

「BQ権限付与るくん」を大解剖

「BQ権限付与るくん」はどのように動いているのでしょうか。

「BQ権限付与るくん」では以下のアーキテクチャ図に示した仕組みで権限付与が行われます。

Google Form で申請された内容がGASを用いてSlackに投稿され、Slackアプリ上で「権限を付与」のクリックをトリガーにCloud Functionsが処理を開始します。Cloud Functionsの内部ではスプレッドシート上に管理された設定を元に権限の付与が行われます。

「BQ権限付与るくん」ではこの構成を事業部のプロジェクトに複数展開することで事業部横断的な権限付与を実現しています。

アーキテクチャ

「BQ権限付与るくん」ができるまで

「BQ権限付与るくん」がどんなものか、どのように動いているのかについてなんとなく理解していただけたでしょうか。 最後に、私がこのツールを開発する中で工夫したこと、大事にしてきたことについて述べたいと思います。

やらないことを先に決める

これは要件定義に時間をかけるということです。 要件が明らかになることで本質的に解決すべき問題が明確になり、余分な問題解決に費やされる時間を節約できます。 例えば、今回の開発スコープをBigQueryをこれから使い始めるユーザーに対象を絞ることで、既存ユーザーの権限更新については考慮しないことにしました。 また、ウィンドウ操作の煩雑さを解消することが課題だとわかったことで、権限を付与するのにかかる時間やSlack上での連絡の手間に関しては無視するという意思決定ができ、仕事が膨張するのを未然に防ぐことができました。

常に自分の知らない技術を取り入れる

今回は期日に余裕のある仕事であったこともあり、自分が使ったことのない技術を取り入れることを意識しました。(ex. Slack APIの利用など)

そのおかげで終始新鮮な気持ちでツールの開発に取り組むことができました。また、自分の知らない技術を使ったとしても自分はきちんと動くものを作れるのだという自信にもつながりました。

管理者だけでなく権限を付与してもらう側の気持ちも考える

今回はBigQueryの管理をしている方からの依頼であったこともあり、要件が管理者側から見たものに偏りがちでした。しかし、ツールが使われるためには権限を付与してもらう側の使用感も考える必要があります。 開発した当初はGoogle Formでアクセスしたいデータセットをユーザーが選ぶ仕様になっていたのですが、これではデータ環境に詳しくない営業の方などは何を選んでいいかわかりません。 そこで、Google Formではシンプルに自分の職種を選ぶだけに変えたところ、以前にも増して使われるようになりました。

おわりに

いかがだったでしょうか。 以上が入社2か月程度で担当した業務の紹介でした。振り返ると、入ったばかりの新卒によくこんなテーマを任せてもらえたなあと思います。 データアナリストとしては担当しないような業務を経験することができ、自分の仕事の幅が広がるのを体感することができました。

レバレジーズのデータ戦略室に入ると職種に関係なく仕事の幅が広がるような仕事ができるんだなという雰囲気を少しでもつかんでいただけたら幸いです。