見出し画像

プロダクトのミライを俯瞰して支えたい〜CTO室のこれまでとこれから〜

primeNumberのソフトウェアエンジニアの中根 (@gtnao) です。
CTO室というチームにいます。

手前味噌ですが、先日「〜TROCCO ®︎のこれまでとこれから〜」というサブタイトルが付いたセッションを行いました。

プロダクトのこれまでの6年間を振り返り、これからの展望をお話ししました。
今回は、こちらのスピンオフという形で、私が立ち上げたCTO室の1年間(まだまだ短い)を振り返り、これからの展望をお話しさせていただきます。
先日のセッションの方では骨太な資料を書きましたが、こちらはゆる〜い期待値で読んでもらえればと思います。お手柔らかに。

誕生秘話

ちょうど1年前に遡ります。
当時私は、いわゆるストリームアラインドチーム的役割の機能開発をしていくチームに属していました。
一方で、TROCCO®︎の開発に最初期から関わってきたこともあり、プロダクトを俯瞰的に見た開発体験改善や壁打ち相手などを行うことも多くなっていました。
チームから離れそのような動きにフォーカスした方が全体としてプラスなのではないかとCTOと話をして一人チームとなりました。

チーム名を決めるにあたって、時流に乗ってあんまり深いことを考えずにイネーブリングチームと名付けました。

しばらくは、よしなに色々やっていたのですが、「イネーブリングってそもそもなんだっけ?ちゃんと定義してやっていくことを考えた方がいいんだろうな」と考えることも増え適当な命名を少々後悔しました。
プログラミングの変数名と一緒で、命名は大事です😤

そんな中、6年来の仕事兼飲み仲間であるCTO鈴木と、そういった雑談🍺をしているとき、「もう少しCTOを巻き込んで中長期的な視点で課題を解決していきたい、いっそのことCTO室とかに名前を変更して〜」といったことを話した記憶がうっすらあります。

それ以降は特に議論してない気がするのですが、次の組織体制発表時にCTO室になってました👀

と、冗談はさておき

これまで

ちょうど今月で会社の期が変わったので、1年何をしていたか振り返ってみます。

Embulkコアの調査

TROCCO®︎の転送部分で利用しているEmbulkのコア部分を読み解く必要がある調査などをしていました。
ついでに、ソースコードリーディングの記事を書きました。

言語/フレームワークのアップデート

TROCCO®︎で利用している言語やメインのフレームワークとして、Ruby, Ruby on Rails, Reactなどがあります。
この辺りのバージョンアップデートをやっていました。
特にReactはv16から長らく上げられていなかったのですが、v18に上げることができてよかったです。

フロントエンドフォームの開発体験の改善

フロントエンドのフォームを実装する開発体験がかなり悪化していたため、React Hook FomとZodというライブラリを組み合わせた新しい実装方法を導入しました。
詳しくは私のzennの記事に書いています。

Embulkカナリアリリースのしくみ

TROCCO®︎で利用しているEmbulkプラグインに改修を加えてリリースする際に安全に上げられるようにする一つの施策として、顧客単位で徐々に適用していくカナリアリリースの仕組みを作りました。

登壇資料 p75

TROCCO®︎ Terraform Providerのリリース

TROCCO®︎に長らく存在する、設定をコード管理したいという課題を解決すべく、ノリでTerraform Providerを作りました。
現在では、他チームに展開してAPI拡充を進めているところで、開発内容のタネをプロダクトサイドに提供できたのもよかったなと思います。
内容は別noteを見てみてください。

Storybookのリファクタ & Chromatic導入

ReactのコンポーネントカタログとしてStorybookを使っていましたが、徐々にカオスになってきていたため抜本的に整理をしました。
また、Chormaticでホスティングして開発者が気軽に参照できるようにしました。

Rubyの型定義導入

Rubyの型定義であるRBSを入れ始めました。
現在、modelクラスとserviceクラスで型付けが完了、CIでSteepを試験的に回しているといった状況です。

t_wadaさん勉強会

ご縁があって和田卓人さん(t_wadaさん)をお招きした勉強会を開催することになり、会の内容を考えたり当日のパネラーをしました。
個人的にt_wadaさんのPodcastはほぼ全部聞いているくらいのファンなのでめちゃくちゃ緊張しました。
会の内容は別noteを見てみてください。

コネクタ開発生産性の改善(フロントエンド編)

TROCCO®︎の転送元/先であるコネクタを新規開発する際の生産性改善に取り組んでいまして、その中でYAMLからフロントエンドのフォームを動的に生成するところを担当しました。

登壇資料 p107

モジュラーモノリスの検討

packs-railsとpackwerkというGemを活用した、Railsのモジュラーモノリス化に取り組み始めました。現在進行形です。
詳しくは登壇スライドをご覧ください。

登壇スライド p115

アプリケーションレイヤーのセキュリティ対策

TROCCO®︎では定期的な第3社診断の実施を行っています。
その結果、対応が必要になったアプリケーションレイヤーの修正をいくつか行いました。

全社的影響があるスケジュールがシビアな開発のサポート

詳細は割愛しますが、全社的な影響があったスケジュールがシビアに決まっている開発に関して急遽サポートに入ったりしました。
こういったパターンは少ないに越したことないですが、いざというときに動けるように備えています。

アーキテクチャConference 2024登壇

記事の最初に触れた登壇です。
LTくらいしか人前で発表した経験がなかった私としては、質疑応答無し40分の登壇はなかなか心身ともに答えました。
ここ2ヶ月くらいはずっと胃がキリキリしていましたが、結果として良い経験をさせてもらい、今後参照できるTROCCO®︎開発の6年間のスナップショットを残せてよかったです。

ふぅー、リストアップして見ると以外と色々やってました。
一応ちゃんと仕事をしていたようで一安心です😌🍵
チームとしては正社員は私一人なのですが、業務委託のエンジニアの方々にも協力していただいており、ひとえに皆さんのおかげです。

これから

ちょうど今月で会社の期が変わったので、CTO室の役割を再定義しようとしています。
ミッションというほどまだ全然洗練されてないのですが、以下の4つのトピックでこれからの一年やっていければと思っています。

開発生産性の向上

TROCCO®︎は誕生から6年経ちました。
技術的負債も溜まっている一方でチームがどんどん分割されていっています。
開発生産性と言うとそれだけで話が尽きないと思いますが、「今、エンジニアの数が倍になったとして、倍のスピードが出るのか」→「否」→「何ができるか」という視点で色々CTO鈴木と考えている最中です。

開発リソースの増強

TROCCO®︎はありがたいことに、データエンジニアリングの界隈での知名度を一定獲得しています。
一方で、TROCCO®︎を作るソフトウェアエンジニア/SREのコミュニティではまだまだ認知が低い課題があり、採用にも直結します。
個人的にはあんまり得意ではないですが、先日のカンファレンス登壇など、自ら露出を増やしていき認知を増やしていけたらと思っています。

中長期を見据えた取り組み

CTO室の役割の一つに全体最適の取り組みがあると思っています。
これは、本部全体を俯瞰して観たときにどうするべきかという視点もありますが、時間軸視点で俯瞰した際にも言えることだと思っています。
技術ロードマップや、今期のTerraform Providerを作ったことなど、プロダクトの未来につながる新しい種を植えることができればと思っています。

調整弁としての役割

さまざまな観点で調整弁としての役割を担っています。
例えば、CI/CDは現状担当チームがいないのでCTO室持ちとなっています。
今期のプロダクトロードマップにある内容の一部もCTO室で開発する予定です。
最近だと、QAチームが本格的に立ち上がりつつあるので、そのサポートもしています。
とはいえ、調整弁なので、今後適任なチームができればどんどん移譲していきたい考えです。

おわりに

これまで正社員としては私一人でやってきましたが、今後人員増も予定しているので、数ヶ月から半年後にまた変化を発信できたらと思っています。

ここまで記事を読んでいただき、ありがとうございました。
primeNumberに少しでも興味を持っていただけた方は、お気軽にカジュアル面談をお申し込みください!

いいなと思ったら応援しよう!