Reckonerを使ってGitHub名寄せ表をつくってみた

このエントリーは 3-shake Advent Calendar 2022 19日目の記事です。
前日はdogggggoさんによる Config Controller でポリシー制御をしながら Google Cloud のリソースを管理するでした。


いきなりですが、Reckonerをご存知でしょうか。
Reckonerは3-shakeが提供しているノーコード型ETLツール/データ連携ツールです。
ちなみにですが著者は現在、3-shakeのコーポレート本部 情シスチームでコーポレートエンジニアとして働いていて、Reckonerに触れる機会があったのでついでにAdvent Calendarのネタにしてみました。

ベンチャー企業の課題

Reckonerに触れる前に経緯や前段の話を少しします。
3-shakeに入社して2ヶ月半になるのですが、利用しているパブリッククラウドやSaaSの使い方、アカウント管理などの統制が取れていない状態でした。
これについては会社によって課題の程度の違いはあるかと思いますがベンチャー企業あるあるだとは思います。
調査やヒアリングなどを重ねていくうちに課題のひとつに手作業によるデータ処理やアカウントの操作・管理が多いというのが見えてきました。
現状としてはIDaaSの導入などが行えていない状態でもあり、ID管理の前にまずは整地するところを着実にやっていく必要がありそうです。
手作業をどう減らしていこうかな〜と考えていたときに「そういえばReckonerはバックオフィスの人たちにこそ触ってほしいし製品だしドッグフーディングしてみたいぞ」という気持ちが湧いてきました。
こういうときに社内にETLが転がっているのはありがたいですね。
コーポレート本部ではReckonerを利用していないということもあり、社内の導入実績をつくってみたいという想いもありました。

Reckonerを触ってみる

さぁReckonerを触っていくぞ!となったものの、いきなりチーム単位で導入して使っていくのは難しいというのは経験上わかっていました。
先駆者が道を切り開いていって周りへ徐々に広げていく、というのが新しいものを取り入れていくために有効なことが多いので今回もそうしてみることにしました。

新しいことやるのにパワーは必要です。最初が肝心なので勢いよく開発メンバーのいるSlackチャンネルに突撃しました。
すると、快く環境を用意いただきました。こういうときにスピード感があるとありがたいですね。

ユーザー目線でReckonerを触ってみてわかった機能は以下。

  • 接続できるアプリケーションがあらかじめ用意されている
  • 接続できるアプリケーションは認証情報を設定するだけでデータを引っ張ってくることができる
  • 対応していないアプリケーションやサービスはHTTPリクエストを書くことができる
  • HTTPレスポンスはcsvやJSON形式で扱うことができ、JSON Pathsでパースすることができる

接続できるアプリケーションにはGoogle Spreadsheetを始め、DWHやDB、KintoneやSlackなんかも使えたりします。

いくつかのHTTPリクエストを試してみて認証付きAPIを叩けることが確認できたのでサンプルで何か作ってみようかなーと考えたのですが、情シスのHello Worldをやることにしました。
IDaaS導入前の会社なら一度は頭を悩ませるアレ、GitHub名寄せ表です。
GitHubアカウントは個人アカウントを使用して開発することが多いため、社員情報との紐付けがしにくいとされています。

GitHub名寄せ表をReckonerでつくってみる

ではお題が決まったところでさっそくつくっていきましょう。
流れはこうです。

  1. GitHub APIを叩く
  2. Google Spreadsheetに書き込む

GitHub APIを叩くところを用意

Reckonerのワークフローを開き、HTTPを配置すると入力画面が出てくるので必要な情報を入れます。必要なヘッダについてはこちら
今回は検証も兼ねて作成したのでPersonal access tokens(classic)を使用しましたが、GitHub Appsとして作るのがよいかと思います。

APIエンドポイントやヘッダのパラメータ

JSON Pathsはこんな感じで書きます

プレビューで設定したパラメータでレスポンスが受け取れているかが確認できるので、よければ保存しておきます。

APIリクエストが成功すれば結果が表示されます

これでGitHubのmembersが取れるようになりました。

Google Spreadsheetの準備

まずはGitHubアカウントを書き込むためのGoogle Spreadsheetを準備しておきます。
次にReckonerで接続情報をつくっておき、それを使ってGoogle Spreadsheetを使えるようにします。

スプレッドシートIDはGoogle SpreadsheetのURLから取得したものを入れます

APIリクエストが成功すれば結果が表示されます

後はそれぞれのソースを繋ぐとGitHub APIから取得した情報をGoogle Spreadsheetに書き込むことができるようになりました。わーい。
GitHubにはmemberとOutside collaboratorの2つのロールがあるので同じ要領でソースをつくっておきます。
これでOrganization内のアカウントのリストが作成できるようになりました。

Organizationに入れたGitHubアカウントを追記するようにする

しかしながら、ここまでで用意したものだとAPIで取れたデータを毎回上書きすることになってしまって使い物になりません。
なので、少し改良します。

ReckonerはETLなのでデータの加工も当然ながらできます。今回はGoogle SpreadsheetとGitHub APIの差分を取って、それをInsertするようにします。

変換の差分機能を使います

差分機能を使うことで新たにInviteされたGitHubアカウントを抽出することができます。
差分を出すためにGitHub名寄せ表をソースとして使うのもポイントです。完成はこちら。

データ取得 → 差分 → Insertのフロー完成

こうすることで日々運用でOrganizationにGitHubアカウントを追加してもSpreadSheetに書き込まれます。
これを手動で運用したくないので実行スケジュールで定期実行するように設定すれば完成です🙌

InsertされたGitHubアカウントにメールアドレスを添えてあげれば名寄せ表は完成

見事ノーコードでGitHub名寄せ表がつくれましたね。最初は使い方を覚える必要がありますが、それさえ出来てしまえば欲しいデータが簡単につくれました。


いかがでしたでしょうか。簡単ではありますがETLツールReckonerを紹介しました。
この記事を読んで気になった方はぜひ無料トライアルにチャレンジしてみてください。
また先日には新料金プランが用意されたようなのでこちらもチェックしてみてください。

Built with Hugo
Theme Stack designed by Jimmy