Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

Bill One開発文化のおかげでOSSにコントリビュートできた話

はじめに

技術本部 Bill One Engineering Unit (兼 情報セキュリティ部 CSIRT グループ) の茂木です。
現在は「さばかん」という名前のチームに所属しており、PdL1という役割をしています。

今回は Bill One の開発文化の影響で sqlc という OSS にコントリビュートできたという一例を紹介したいと思います。

目次

sqlc と Bill One の技術スタック のご紹介

sqlc はコードを生成できるツールで、マイグレーションファイルなど SQL ファイルを読み取り、 モデルやデータベースにアクセスする型安全なコードを自動作成してくれます。

sqlc の対応言語 / 対応 RDBMS には、Bill One で使用している Kotlin / Go / PostgreSQL があります。
sqlc は Go × PostgreSQL をサポートしており、Kotlin × PostgreSQL も Beta 状態でサポートしてます。
Database and language support

今回は、Kotlin をサポートする機能である sqlc-gen-kotlin に 不具合修正の PR を出しました。

sqlc を Bill One に導入した背景としては、テストコード実装の効率化を目的の一つとしています。
Bill One では DDD を採用しており、Repository 層では ORM などは利用せず、SQL を直接書いています。

Bill One のテストコードでは、データベースのアサーションをする際に Repository を利用することは非推奨としています。
そのため、データベース操作に関する SQL やマッピングコードをテストコードにも作成する必要があり非効率でした。
データベースのアサーション用のコードは sqlc で自動生成されたものを利用することで効率化を図っています。

なぜ Bill One 開発文化のおかげなのか?

振り返ってみると、sqlc にコントリビュートできたのは、Bill One にある次の 3 つの文化のおかげだと思っています。

  • 事業成果のために個々の成長を大切にする
  • 開発速度と品質を両立する
  • 新しいことに挑戦して学びを得ることを大切にする

事業成果のために個々の成長を大切にする

Bill One では、個々の成長支援の 1 つとして、 3 ヶ月ごとに目標を立てて、チームに共有する取り組みがあります。
そこでは、「自分がどうなりたいか」「自分の強み、弱み」「3 ヶ月のアクションプラン」などを共有し、チームから フィードバック をもらう時間があります。

私はチームに「1 つの技術を深ぼる力」が弱みの 1 つであること、そこに対して改善したいことを伝えていました。
そのおかげでチームメンバーから、
「Context が Go に導入された背景を調べたら面白いかもよ?」
「Go のコード内の SQL をフォーマットするツールを作ったら面白いかもよ?」
などのお題をもらうことで、Bill Oneが採用している技術にディープダイブし理解を深めるきっかけになりました。

結果として、「動くところまで調べたら終了」という自分の弱みを少しは克服できたかなと思います。

開発速度と品質を両立する

Bill One の 開発速度と品質を両立させるために、改善を歓迎する文化や改善活動する時間を確保できる取り組みがあります。

その 1 つに Enhance Week というものがあります。
これは 3 ヶ月ごとに 1 週間の期間を取り、メインの機能開発を気にせず自分のやりたい改善をできるというものです。

Enhance Week があったおかげで、次の 2 つのことができました。

また、formatter 作成の経験をしたことで、sqlc にも使われている pg_query_goの知識や、Go の構文解析の知識を増やすことができました。
これらが、sqlc-gen-kotlinの不具合の原因特定と修正に活きました。

新しいことに挑戦して学びを得ることを大切にする

Bill One では挑戦や学習をして、チームや組織に学びを還元する文化があり、各チーム主導で新しい技術の採用・チャレンジを積極的に行っています。

例えば、私が所属しているさばかんチームが作成したマイクロサービスで Go や connect-go、sqlc などを採用しました。 buildersbox.corp-sansan.com buildersbox.corp-sansan.com

挑戦し学びを得ることを推奨する文化と 相談を重ねた上で、チームや個人で最終判断 をできる文化があったおかげで、私も sqlc という技術に出会うことができました。
また、sqlc × Kotlin という比較的新しい組み合わせにより、成熟しきっていない OSS を利用していたことで、直しやすい不具合に出会えたのかなと思います。

終わりに

sqlc に コントリビュートできたのは、
知識を深ぼるきっかけ作り & 知識を深ぼる時間 & 深ぼりをした知識を活かせる機会
の組み合わせによるものだったと思います。

Sansan に転職した理由の 1 つが技術力向上のためでした。
私にとっては、Bill One には技術力を向上するための環境があると思っております。
今回の PR を出せたのはさばかんチーム(Bill One)で過ごした 1 年間の影響が大きかったです。

このような環境に興味がある方は是非 Bill One にご応募ください。

open.talentio.com


  1. PdL については 自律的なチームを支える仕組み「3L」を参照してください

© Sansan, Inc.