こんにちは。2020年9月にSpeeeにジョインしたデジタルトランスフォーメーション(DX)事業本部エンジニアの石井です。
先日、新入社員向けOSSイントロダクションでSpeeeのOSS活動がどのように行われているのかクリアコードの須藤さんから紹介していただきました。 その中で取り上げられている具体例のケース2が実は私なのですが、今回は私が取り組んだSpeeeでのOSS活動について実際の開発プロセスや雰囲気をお伝えできればと思います。
また開発の詳細については既にGoのAthena用database/sqlドライバーをOSSでリリースした話が公開されておりますのでそちらをご覧ください!
入社後、須藤さんのOSS相談会に参加!
入社後、早速須藤さんとOSS活動について相談させていただく機会がありました。新入社員向けOSSイントロダクションでも紹介されているように「OSSとは何か」といったお話から、もしOSS開発に興味があるならどういったアクションが取れるかといったことを一緒に考えていただきました。
具体的には以下のようなやり取りをさせていただいたと記憶しています。
Q. OSS開発に興味はあるか?
A. めっちゃあります
元々、業務で利用していたライブラリが期待通りに動かなかった時にパッチを送るような事はたまにやっていたり、日頃から技術調査を兼ねてサンプルアプリを量産したりはしていたのですが、誰かに利用してもらうことを想定したOSS開発の経験はありませんでした。
Q. こういう技術を使ってみたいなど何か挑戦したいことはあるか?
A. Go使いたいです
前職ではバックエンドでRailsとGoを半々ぐらいで書いていたのですが、直近で自分が担当するプロダクトではRailsをメインで使っていく予定だったので「Goの書き方とか忘れそうだし、何かしらGoを触れる機会が作れると良いな」と思っていました。
このようなやり取りの後、須藤さんから「別チームの方でちょうどGoのOSSライブラリに機能追加しようとしている人がいるんだけど興味ある?チームを跨いでのOSS開発はSpeeeでもまだ事例がないからぜひ挑戦してほしい😎」というご提案をいただきました。
こうして私のSpeeeでのOSS活動が始まりました。
どうやって開発が進んでいったか
オンボーディング
まずは私のオンボーディングも兼ねて一緒に開発を進めるエンジニアの@muroon01さんと顔合わせのミーティングをしました。元々一人で開発される予定だったので直近でやりたいことはすでに明確になっており、以下のようなことをやっていきたいというプランが固まっていました。
- GoのAthena用ドライバーsegmentio/go-athenaが公開されているが、長らくメンテされていないようなのでForkして機能追加をしていきたい
- オリジナルのリポジトリにも有用そうなPRがいくつかオープンされていたのでそれらも改良しつつ取り込みたい
- GitHub Actionsとreviewdogは導入したい (オリジナル版にCI環境はなかった)
そこで開発の進め方として
- タスクレベルでやりたいことをリストアップしてざっくりと分担を決める
- コードレビューは相互に行う
- 一通りやりたいことが片付いたらv1としてリリースする
といった所だけ決めて、後はSlackで都度コミュニケーションを取りながらお互いに空いた時間にPRを出してレビューし合うということをやっていきました。
開発開始!
私は以下を担当しました。
- reviewdogの導入など細かい環境整備
- オリジナルのリポジトリにオープンされていたPRの変更内容を必要に応じて修正しながらspeee/go-athenaに取り込む
これらを自分の担当するプロジェクトの開発と並行して行うので、社内のGoogleカレンダーに「17時〜18時 OSS開発」のように予定を入れて、自分のプロジェクトに支障のないレベルでコツコツと開発を進めていきました。
また須藤さんには引き続き相談させてもらって「v1をリリースした後どうやってspeee/go-athenaを広めていくか」といったネクストアクションについて一緒に議論しました。
実際にv1リリース後はオリジナルのリポジトリにオープンされていた各Issueに「speee/go-athenaでサポートしたよ」と報告を入れたり、オリジナルのリポジトリのOrganizationとコンタクトを取り「speee/go-athenaで代わりにメンテしていくことができるのでリポジトリのTransferを検討してもらえないか」もしくは「speee/go-athenaへのリンクをREADMEに追記してもらえないか」といった交渉もしてみました。
交渉時は須藤さんに英文をレビューしてもらい「それぞれの提案に対してPros/Consも合わせて記載しておくと先方も判断しやすいかもしれないですよ」のような、今振り返ると至極当たり前なアドバイスを頂きながらブラッシュアップしていきました (お恥ずかしい...)。
ちなみに交渉結果については先方からお返事はいただけたのですが「 (意訳) 提案はうれしいけど開発チームが今めっちゃ忙しいので、提案を確認するのに時間がかかるかも」と濁されてしまいました😇
OSS活動をしてみて良かったこと
今回のOSS活動を通して当初の目的だったGoを使ったOSS開発を達成できただけでなく、GoのAthena用database/sqlドライバーをOSSでリリースした話でも紹介されているCTASテーブルを利用するといったアプローチやreviewdogの使い方など多くのことを学びました。
特にチームで開発を進められたことで、扱う技術スタックもサービスドメインも異なる別チームの@muroon01さんのコードをレビューさせてもらえたのが新鮮で楽しかったです!
まとめ
SpeeeのOSS活動の雰囲気が何となく伝わったでしょうか。もし「GoでAthenaのドライバーを使いたいんだけど今はメンテされていないのか...」と思った方!ぜひspeee/go-athenaをご検討ください。コントリビュートも大歓迎です!
そして須藤さんの手厚いサポートを受けながらOSS活動ができるのはとても楽しいと思うので、Speeeに興味を持っていただけた方はぜひこちらよりご応募お待ちしております!