リファクタリングより効く、コードを綺麗に保つ方法
機能を削除していますか?
機能開発をしていますか?
ほとんどの方は 「はい」 と答えるでしょう。
プロダクトやサービス開発に携わっている方は、日々機能の追加や改善を行っていると思います。
では、機能の削除 はされていますか?
なかなか 「はい」 と答えるのは難しいかもしれません。
中には、外部サービスの利用料を減らすため・外部サービスの終了などの理由で機能を削除することはあるかもしれません。
しかし、この記事では 「開発者が主導で機能を削除する」 ことについて紹介します。
なぜ機能を削除するべきなのか?
機能を削除することによって、以下のようなメリットがあります。
開発チーム(エンジニア、デザイナー、QA、企画者、プロダクトオーナー、カスタマーサポート等)
- メンテナンスコストの削減
- ドメイン知識の一部が不要になる
- 問い合わせ、バグ報告が減る(もしくは既存のバグ報告を丸ごと解決できる)
ユーザ
- サービス利用時の混乱を避ける(使わない機能があると、使いたい機能が見つけにくい)
- ユーザーのメモリや、通信量の負担を減らす
このように、機能の削除は開発者とユーザー双方にメリットがあります。
どのような機能を削除するべきか?
単に機能を削除するといっても、使われている機能やサービスの重要な機能を消すことはできません。また、機能を削除することで、ユーザーに不利益を与えることも避けなければなりません。
そこでよく行われるのが 、KPI モニタリングツールで使われていない機能を特定し、削除することです。
これにより、以下のような機能を削除できます。
- 使われていない機能
- 他の機能で代替可能な機能
- サービスのコンセプトに合わない機能等(これは KPI だけでは判断できないが)
しかし、開発者は 「どの機能にメンテナンスコストがかかっているか」、「将来的にメンテナンスコストがかかる機能」 を把握しているはずです。すると単に使われていないだけではなく、使われていない + メンテナンスコストがかかる機能 が洗い出せます。
- メンテナンスコストが高い機能(バグ報告が多い、ドメイン知識が必要な機能)
- メンテナンスコストが将来的に高くなる機能
たとえば、使われていない2つの機能があるとします。
- DBの内容をほぼそのまま返すだけのAPI
- DBの内容を加工して、外部APIと結合し、キャッシュを更新するAPI
この2つの API のメンテナンスコストはどちらが高いでしょうか?
もちろん、2番目の API の方がメンテナンスコストが高くなります。
このような API を削除することは、開発者にとって非常にメリットがあります。
※複雑な処理が丸ごと消えるし、将来のリファクタリングの際にもその処理を考慮する必要がなくなる
開発者はコードベースを適切に管理すべき
開発者は今作っている機能を、十分な拡張性や堅牢性等を考慮して作る必要があります。
一方で、将来の開発を楽にするための動きも必要です。
機能の追加に対して、機能の削除は開発者以外から見ると必要性がわかりにくいかもしれません。
しかし、メンテナンスコストや、ドメイン知識が必要な機能を把握しているのは開発者です。
そのため開発者が 「この機能を削除しませんか?」 と提案し、将来の自分達が楽に機能追加やリファクタリングができるようにしていきましょう。
まとめ
- 機能の削除は開発者とユーザー双方にメリットがある
- 使われていない機能だけでなく、メンテナンスコストがかかる機能を削除する
- 開発者はコードベースを適切に管理し、将来の開発を楽にするための動きも必要
Discussion