1
/
5

BigQuery × GitHubで始める行動量の可視化【AI導入後の変化をラフに捉えるために】

Photo by Ivan Samudra on Unsplash

こんにちは。ウォンテッドリーでバックエンドエンジニアをしている市古(@sora_ichigo_x)です。
最近は Enabling チームとしての役割を持ち、Visit の新規開発や、バックエンドアーキテクチャの改善に取り組んでいます。

現在、Enablingチームでは技術的な取り組みを社外にも発信すべく、メンバーが週替わりで技術ブログをリレー形式で執筆しています。前回は冨永さんによる「AWSのSESとSQSを活用したメール受信機能の実装」 でした。今回は、GitHub x BigQueryで開発行動量を可視化する社内基盤の紹介をしたいと思います。

目次

  • はじめに

  • なぜ行動量を見るのか

  • 新しい取り組みの変化はまず行動に出る

  • 何を見ているのか

  • 可視化する指標はシンプルにする

  • GitHub 行動量を KPI 化してはいけない

  • 余談:初期プロトタイプ時点での要求一覧

  • どうやって可視化しているか

  • BigQuery で可視化する

  • Goを採用する

  • 処理フロー

  • おわりに

はじめに

最近では、DevinやCursorなどのAIツール導入が進みつつありますが、それがどれだけ活用されているのか、具体的に説明するのは意外と難しいと感じる方も多いのではないでしょうか。

そこで今回は、ウォンテッドリーで実践しているGitHubのPRやIssueの“行動量”をBigQueryとLookerで可視化する仕組みと、その活かし方について紹介します。

なぜ行動量を見るのか

新しい取り組みの変化はまず行動に出る

AIツールの導入やレビュー文化の改善など、チームで何か新しい取り組みを始めたとき、すぐに成果として表れることは多くありません。しかし、だからと言って「変化がない」とは限りません。新しい取り組みの変化は、まず行動に出るものです。

たとえば「レビューの質を上げよう」とチームで話し合ったとします。すると、翌日からバグ数が減るわけではありませんが「レビューまでの所要時間が短くなった」「レビューがスムーズに通るようなった」など PRレビューのリードタイムやレビューのやり取りの量には少しずつ変化が出てきます。

Four Keys(デプロイ頻度や変更リードタイムなど)も参考にはなりますが、「意図した行動の変化」にフォーカスするにはやや粗いです。そこで、本記事ではより身近なGitHub上の行動データに注目しています。

何を見ているのか

可視化する指標はシンプルにする

私たちが可視化しているのは、GitHub上の次のようなシンプルな行動量です:

  • PR作成数、マージ数
  • Issue作成数、クローズ数
  • Issueのリードタイム(作成〜クローズまでの時間)
  • PRのリードタイム(作成〜マージまでの時間)

これらは「成果」ではなく「プロセスの出力」として捉えています。体温や心拍数のようなもので、それ自体をKPIにするのではなく、あくまでチームの状態を知るための“健康指標”的な位置づけです。

GitHub 行動量を KPI 化してはいけない

重要なのはこれらをKPI化しないことです。例えば「デプロイ頻度を増やそう」を目標にすると、とにかく細かく分割したPRを量産することでKPIハックできてしまいます。これは一定の効果はあるかもしれませんが、デプロイを分けすぎて施策全体のリードタイムが悪化していたら本末転倒です。

GitHubの行動量はあくまで "行動" であり "成果" ではありません。何かの改善活動の評価をする際は "成果" を生み出すために必要な行動量を事前に想定して、その想定と比較する形でデータを見ることを意識します。

余談:初期プロトタイプ時点での要求一覧

以下は初期プロトタイプを実装する際にまとめた要求一覧です。実装したのは2023年ですが、直近でもDevin等のAIツールのアクティビティを可視化する際にも役立っています。

どうやって可視化しているか

ここからは具体的にGitHubの行動量をどうやって可視化しているか解説します。

SaaSやOSSもいくつか検討しましたが、コストやカスタマイズ性を考慮して、最終的には社内向けにGoで小さな基盤アプリケーションを実装しました。

(社内では github-data-bq-exporter (internal) という名前で動いています)

BigQuery で可視化する

ウォンテッドリーでは以前からBigQueryを社内の共通データウェアハウスとして活用しており、開発者もBigQueryへの理解がある程度前提になっています。

データ基盤入門 | Wantedly Engineering Handbook
このドキュメントの目的は Wantedly におけるデータ基盤の存在意義と構成要素を紹介し、データを活用するための基礎的な知識を理解してもらうことです。 経営においてデータを使って判断することは必要不可欠であり、その正確性とスピードがビジネスの勝敗を決めます。 Wantedly のデータ基盤の存在意義の1つは、そのビジネスにおける意思決定の正確性とスピードをサポートすることです。 また Wantedly のプロダクトでは、データそのものがユーザーにとっての価値を生み出します。 そのユーザーにとっての価値を
https://docs.wantedly.dev/fields/data/data-infra

なので、新しい分析を始めるときにも「とりあえずBQで見てみるか」という文化が根付いています。GitHubの行動量も例外ではなく、開発者がBQクエリを書くだけで試せるようにしました。

加えて、BIツールにはLookerを使っており、必要なView・Explore・Dashboardを用意しておくことで、非エンジニアでも手軽に傾向を確認できる状態にしています。

Looker 入門 | Wantedly Engineering Handbook
ここでは、Wantedly でデータを活用して可視化するために導入されているツールである Looker の概要について解説します。 Looker の開発に必要となる前提や手順の説明に限定し、開発と関連しない Looker の機能やその運用方法については扱いません。 なお、説明は概要にとどめて細かい実装の詳細などは他のドキュメントで補完していくものとします。 主に下のような人を想定しています。 Looker は、データを集計・可視化することで、より良いビジネス上の意思決定を行えるようにするための BI ツー
https://docs.wantedly.dev/fields/data/looker

Goを採用する

Goは静的型付け言語であり、依存をすべて含んだ単一バイナリとしてデプロイ可能な特性から、「時間が経っても壊れにくく、どこでも動く」信頼性があります。

このためウォンテッドリーでは、開発効率や柔軟性を重視するプロダクトコードにはRuby(主にRails)が使われる一方で、CLIツールや長期運用を前提とした基盤系コードには、保守性と実行信頼性を重視してGoが選ばれることが多くなっています。

処理フロー

処理フローは最低限のシンプルな作りにしています。以下の3つが処理フローの要点です。

  1. GitHub Action の schedule イベントで定期呼び出し
  2. GitHub GraphQL API の search クエリで issue / pull request のデータ取得
  3. bigquery パッケージの Query.Read 関数 を用いて Upsert 処理を実現

GitHub GraphQL API は https://docs.github.com/ja/graphql/overview/explorer から実行することができるため、自動化を試みる際は活用してみると良いでしょう。

おわりに

行動量の可視化は、チームを“正しく振り返る”ための土台になります。

成果を測るものではなく、変化を捉えるための道具として使う意識を持つことで、チーム内の会話がより具体的になり、意思決定も速くなります。

If this story triggered your interest, why don't you come and visit us?
過去と未来と向き合いサービスを成長させるバックエンドエンジニア募集!
Wantedly, Inc.'s job postings
16 Likes
16 Likes

Weekly ranking

Show other rankings
Like Sora Ichigo's Story
Let Sora Ichigo's company know you're interested in their content

OSZAR »