ハウテレビジョンブログ

『外資就活ドットコム』『Liiga』『Mond』を開発している株式会社ハウテレビジョンのブログです。

外資就活ドットコムの技術負債に挑む!

はじめに

こんにちは、4月から新卒2年目になった大平 (id:so_sky) です。

外資就活ドットコムでは、PHP中心に書かれたコードをNext.jsとGo言語を用いて書き換えるという技術負債解消プロジェクトが約一年前から走っております。 私は、この技術負債解消プロジェクトのソフトウェアエンジニア兼プロジェクトマネージャーを担当しています。 本ブログでは、私がプロジェクトマネージャーとしてやってきたこれまでの取り組み、取り組みの成果、今後の課題、そしてその課題に対しての対処法について報告します。

これまでの取り組み

大前提、私がプロジェクトマネージメントを始めたのは、プロジェクトが始まっって半年ほど経った2023年10月頃からになります。2023年10月頃から、2024年3月までに主に取り組んだことをまとめます。

1. 進捗率の可視化とシミュレーション

プロジェクトの進行状況を把握するために、グラフを用いて進捗率の可視化を行いました。また、このままのペースでプロジェクトの完了が間に合うのか定期的にシミュレーションもしています。これらにより、プロジェクトの状態を正確に把握し、適切なアクションを取ることができます。

進捗率の可視化

2. UIの統一

元のPHPでの実装では、PC画面とスマホ画面でUIが異なる場合が多いです。どれぐらい異なるかは対象の機能によります。レスポンシブデザインを導入し、PCとスマートフォンの画面UIを統一することで、フロントエンドの実装に必要な工数を削減しました。

レスポンシブデザインの例

3. 既存のネイティブアプリ用APIの活用

外資就活ではネイティブアプリ用にGo言語で実装されているAPIがいくつもあります。アプリ用に開発されているAPIをWebにも利用できるようなデザインをデザイナーさんの協力を得て設計しました。これにより、バックエンドの開発に要する工数を削減しました。

ネイティブアプリ用のAPIを活用した例

4. 工数見積もりのやり直し

本プロジェクトでは完了する期日が把握できるようにタスク1つ1つを人日単位で管理しています。しかし、プロジェクトが始まった当初と今とでは1つのタスクを消化するのに必要な時間が短縮されています。これは、使用している言語・ライブラリなどへの理解の向上、共通関数やコンポーネントの利用、GitHub Copilotの導入などが背景にあります。開発速度が向上したことによって、元の見積もり通りだと1つ1つのタスクに対して実際より大きな数字(人日)が当てられていることになります。よって、まだ開発に着手していない画面に対して、今の開発スピードに見合った見積もりをやり直しました。これでタスクがどれぐらい残っているかをより正確に把握することができました。

5. 稼働日数ベースでのタスク消化をやめる

技術負債解消チームでは当初からスクラム開発のようにスプリント制を導入しています。1スプリントは2週間です。これまでは、各スプリントでメンバーそれぞれの稼働日数に基づいた目標消化工数を設定していました。(例えば、2週間で9日稼働であれば、目標消化工数は9人日)しかし、これでは目標消化工数をギリギリ達成できるペースで日々開発を進める傾向がありました。つまり、無意識のうちに開発速度や時間をセーブすることが起こっていました。開発において予期せぬ問題が発生することはよくありますので、このやり方だと目標工数を下回るリスクが高まります。そこで、プロジェクトの完了が確実に期日に間に合うためのチャレンジングな値を目標消化工数として定めることにしました。このチャレンジングな目標を達成するために、最適な開発手順の模索や朝会での進捗報告がより活発になりました。

取り組みの成果

これらの取り組みにより、プロジェクトの進捗率に変化が生じました。実際の進捗率と理想進捗率の乖離が負の方向に日々広がっていたのが、徐々に縮まり、逆転するという好ましい結果が得られました。

技術負債解消プロジェクトの進捗率

直近の課題と対処法

最近では新たな課題が発生しました。業務委託の契約満了や正社員の育児休暇などの理由で4月からプロジェクトに関わるエンジニアのメンバーが10人から6人に減少してしまい、このままでは開発スピードがダウンしてしまいます。

対処法

1. タスクの適切なアサイン

各メンバーが得意とする領域に応じて、適切なタスクをアサインしていく方針を取ります。また、タスクの領域だけでなく粒度もそうです。大きくて複雑なタスクを整理して小さなタスクに分解するのが得意な人もいれば、タスク自体を消化していくのが得意な人もいます。これらにより、効率的な作業を実現し、チーム全体の生産性を向上させることができます。

2. 長期インターン生への徹底したオンボーディング

4月からこれまでの倍以上の長期インターン生が採用されました。インターン生の皆さんは、既に実務経験を積んでいる方も多く、能力の高い方ばかりなので、丁寧なオンボーディングを通じて、社員と同じぐらいの価値を発揮してくれると期待しています。オンボーディングとタスク管理の増加により、私自身のアウトプットは必然的に減少するかもしれませんが、チーム全体で考えると、大幅なアウトプットの向上が期待できます。

これらの取り組みを始めてからまだ1週間分の進捗しかトラッキングできていませんが、メンバー数が減った前後で進捗率が大きくダウンするといったことはなかったです。 今後も引き続き理想進捗率を下回らないように開発を進めて行きます。

直近1週間の進捗

最後に

以上が、これまでの取り組みと最近の課題に対する対処法についての報告でした。今後もチーム全体で協力し、プロジェクトの成功に向けて努力していきます。