ventus-incのブログ

全てのファンが、自分の「好き」に誇りを持てる世界をつくる。

2年間止まってた要望を1週間で実現させた一言から得られた学び

こんにちは、開発組織の支援などの活動をしている冬鏡です。 この記事ではこの間遭遇した社内ツールの開発に関して得られた気づきについて書いていこうと思います。

要約

  • 社内ツールが構築されていたが、リソース不足から次第に開発スピードが低下
  • CLIでもいいよ」という一言で一気に実用化にこぎつけた
  • 小さく試す方法の大切さ、身の回りにある気づきなどの学びが得られた

背景:社内ツール開発スピードの低下

弊社では約3年前(2021年春)に有志のエンジニアと運用・企画担当がほとんどその場のノリで作ったmiscと呼ばれる社内ツールがありました。ユーザーからの問い合わせに対応するための操作ができるツールです。

当初は1つのReactコンポーネントがサーバーにリクエストするだけの非常にシンプルな構成で、1日で作り上げられたツールでしたが、非常に利便性が高かったため、利用者、開発者ともに増加していきました。 それと比例してコードベースと技術スタックは複雑になっていき、2023年初めには、miscは3つのバックエンドと20以上のページを持つNextjsアプリケーションに成長していました。 利用者も当初の1人から10人程度へと増加し、さまざまなニーズが社内ツールの担当に寄せられるようになっていきました。 しかし、会社ではエンジニアリングリソースがプロダクト開発に優先して割り当てられており、社内ツール開発は主に業務委託に依存している状況でした。つまり、慢性的にニーズに開発が追いついていないという状況に陥っていたのです。

これに対して、ミーティングを重ねて実装プロセスを透明化し、要望に優先順位をつけたものの、新たな要望の実現までのリードタイムは縮まりませんでした。 また、技術スタックが複雑になった結果、要望を実現するための工数が肥大化していくというのも悩みの種でした。

この時点での課題は以下の通りでした。 - リソース不足から、要望を実現するまでに時間がかかる - コードベース、技術スタックが複雑になり、要望を実現するまでの工数が肥大化

次は、この2つの課題をどのように克服して要望を実現したのかについて書いていきます。

一言から始まった打開策

2023年の11月に開かれた要望を整理するミーティングの議題は「データベースへのデータ投入の効率化」でした。本番データの更新は既製品のツールを使っていますが、大規模なデータ投入では時間がかかる、切り戻しなどが難しいといった問題を抱えていたため、社内ツールで対応をしたいというものでした。 これを実装するには、データベースにデータを投入するジョブを管理するバックエンド、データをアップロードしてジョブを可視化するフロントエンドが必要で、現在のリソースでは数ヵ月が見込まれる大工事になるため、かなり時間がかかります。結局、いつも通り優先順位をつけてキューにタスクを積み、ゆるゆるとやっていこうという話になりつつありましたが、そのとき運用担当の方がボソッとおっしゃった一言がとても印象的でした。

「おれはWeb UIじゃなくてCLIツールでもいいけどね」

改めて状況を見直すと、CLIツールとして試作品を実装するというアイデアは非常に魅力的でした。社内ツールが作られた当初のヒアリングでは、誰でも簡単に操作ができるWeb UIツールとして実装することはほぼ必須の要件でした。しかし、運用フローの改善の中で、データの更新を行っているのは4,5人に集約されており、今回の発言をしたのはその統括の方でした。 つまり、ツールが登場した初期と現在では「どのくらい試験運用のためにUIを作りこむ必要があるのか」が大幅に変化していたのです。 しかも、CLIツールにより、ジョブシステムのバックエンドとフロントエンドを開発する工数を大幅に省略したうえで、要望の実現とその検証が可能となります。

CLIツールを作ると決心してからの展開は非常に速いものでした。 要望を実現するために必要なDenoのリポジトリが作成されてから最初のプロトタイプができるまで2時間、試作品が最初に使われるまで2日、そこからさらに実際に本番データ更新の時間が高速化されるまで1週間とかかりませんでした。 この1週間でCLIツールは10回以上バージョンを重ね、ニーズの技術検証としては非常に成功したといっていい状況になりました。

振り返り:どんな学びがあったか?

小さく試すことの重要性

アジャイルなど様々な方法論で示されているように、小さく試すということには非常な利点がありました。社内ツールとして完全な方法を提供するのに先立って小さく試すことで、少ないリソースで以下の事項が達成されました。

  • 実装に必要な技術要素の比較的詳細な洗い出し
  • 当事者からの要望機能フィードバック
  • 実現されたときのインパクトの詳細な見積もり

これらはWeb UIとして対象のツールを提供するときにも必要な事柄ですが、小さく試すことによって、Web UIを実装する際の計画や見積もり、優先度などの判断の精度を大幅に上げることができます。

身の回りにある細かな気づきの重要性

今回の成功につながった本質的なきっかけは、「かけるべき必要があると思われたコストを実はかけなくても検証できるという気づき」でした。この気づきをもたらしたのが何気ない一言だったのは大変センセーショナルでしたが、このような細かな気づきがときには重要な解決策をもたらしうるという教訓は、さまざまな場面で活かせるでしょう。 また、小さく試すことととかかわりがありますが、このような細かな気づきを普段から共有できる仕組みなどもあるといいのかもしれません。

これからやるべきこと

今回のCLIツールはすでにほぼ完成したような状況ですが、社内ツールに対するニーズにはまだ検証もされていないものがいくつもあります。これらの学びを他のものについて適用できないか模索しつつ、リソース不足の解消への取り組みを行っていきます。