TROCCO®︎のTerraform Providerを企画からリリース、周知まで3週間で行った話
primeNumberのSWEの中根 (@gtnao) です。
先月、TROCCO®︎のTerraform Provider(β版)をリリースしました。
今回は、その経緯や開発の流れについて共有したいと思います。
Who are you
6年前(2018年11月)にprimeNumberにジョイン。
TROCCO®︎の黎明期から開発に携わっています。
現在はプロダクト開発本部のCTO室に所属。
チーム/本部の横断的な課題や中長期的な視点での開発、技術的な壁打ち相手などをざっくばらんに行っています。
背景
まずは、Providerの開発に着手するまでの経緯についてお話しします。
2024年5月にCTO室が発足し、私の業務時間の10%ほどをプロダクトの未来につながる自由な開発に使えるように定義しました。
しかし、良いアイデアが浮かばず、しばらく何も進めていませんでした。
ところで、以前からTROCCO®︎の設定内容をコードで管理したいというニーズがありました。現在、GUI上で設定した内容相当のYAMLファイルを任意のgitリポジトリに出力することはできますが、逆であるTROCCO®︎への入力はできません。
ある日、CTOの鈴木さん(@kekekenta)と雑談をしていると、ちょうどその話題になりました。
そして、その日の夜「APIがあればTerraform Provider作れるんじゃないか?もしかしたらTROCCO®︎自体のアプリケーションコードを一切いじらずにいけるかも?10%ルールの枠組みでやるのにはちょうど良さそう」と閃きました。
※ データマート機能のBigQueryのみ、CRUD処理を行えるAPIがすでに存在していました。
(CTO鈴木さん、アイデアの源泉をありがとう!)
Week1
とはいえ、「TerraformのProviderってどうやって作るの?」という状態からのスタートです。
調べてみると、公式のTerraform Plugin Frameworkを使うことが推奨されていると知り、チュートリアルを斜め読みしながら、その雰囲気を掴んでいきました。
HashiCupという架空のcoffee-shopのAPIをベースにProviderを作っていくチュートリアルになっていて、この遊び心は見習いたいなと思いました。
この時点では特にリリース目標などは考えておらず、会社の今年の期が終わるまで(10月末)になにかしらのアウトプットが出せたら良いなとフワッと考えている状態でした。
ところで、弊社では「合同スプリントレビュー」という、各チームが直近2週間の成果をデモする会を設けていて、エンジニア以外にもカスタマーサクセスのメンバーなども広く参加しています。
ある日、その会が翌日にあることを思い出し、直近のCTO室ではライブラリのアップデートなどの、必要だけれどもあまりデモする中身がないタスク、が多かったので、何かそろそろ映えるものを見せたい!と思い立ち最低限デモできるものを急いで作り始めました。
意外となんとかなるもので、とりあえず最低限のtfファイルを書いてCreate/Update/Deleteをできるところまでデモすることができました。
Week2
スプリントレビューにて予想通りでしたが反響がありました。
早速Publicに公開できるように開発を本格化していきます。
例えば、以下などを精緻化していきます。
バリデーション
あるフィールドの値がある値だったときに、別のフィールドが必須になる、といったバリデーションが多めでした。
オプショナルなフィールド
ドキュメント
その過程で得た技術的なTipsは別途執筆予定です。今回は省略します。
1週間くらいで整ってきたので、無事Terraform Registryに公開しました。
(権限が足りなくて月曜の朝から手伝ってくれたSREの高塚さんありがとう!)
Week3
このまま勢い外部に周知しても良かったのですが、これまでなかった概念なので、特に非エンジニア職の社内の方々に混乱を招いてしまう恐れもありました。
ということで、説明資料を作成してCSチーム向けに説明会を行いました。
(相談に乗ってくれたCSチームHeadの中村(さん)ありがとう!)
その週のうちに無事終了したので、CTOに伝えて拡散してもらいました。
すると、Solution本部の鈴木さんが興味津々でやってきました。
使い方を説明すると、なんとその日のうちに記事を書いてくださいました。
(鈴木さん、爆速執筆ありがとう!)
今後はデータマート以外のリソースのサポートも広げていく予定です。
0 -> 1でモノを作ったことで、社内の今後の拡充への動きも活性化することができた点も良かったです。
ふりかえって
「動くモノをまず作ってみて語る」という私の一番大事にしている価値観に従って行動した結果、スピード感を出して社内外にインパクトを及ぼすことができました。
一方で、私の飽き性な性格が災いし、モノを作って満足してしまい、この記事を書くのが1ヶ月後になってしまいました…😅
さいごに
ここまで記事を読んでいただき、ありがとうございました!
primeNumberに少しでも興味を持っていただけた方は、お気軽にカジュアル面談をお申し込みください!