🏄‍♂️

開発におけるリアーキとリプレイスとリニューアルの違いまとめ

2023/10/10に公開

プロダクト開発でリアーキとリプレイスとリニューアルといった用語はよく使われると思います。半年ほどこの領域の開発をしていて、それぞれの違いについて少しこんがらがったので整理してみました。

初歩的な内容だと思うかもですが、1コンテンツとして合っても良いかなと。

リアーキとリプレイスとリニューアルの定義

リアーキ(リアーキテクチャ)

定義

既存のシステムやプログラムの内部構造を変更すること。この変更は、外部から見たシステムの動作には影響を与えない。

コードの内部構造のみを変える。目的はメンテナンス性の向上、パフォーマンスの最適化、技術的負債の削減など。

個人的補足

リアーキは技術(的)負債によってプロダクトのパフォーマンスや開発の生産性が落ちた際に検討されることが多いと思います。

規模の大きなプロダクトを一気に置き換えるのは現実的ではないケースも多く、そうした場合はリアーキで部分的な技術刷新を段階的に行っていく形となります。

リアーキはリファクタリングの一種だと言われることもあります。

リプレイス

定義

既存のシステムやプログラムを新しいものに完全に置き換えること。新しいシステムは技術やアーキテクチャが異なる場合が多い。

既存のシステムの技術的制約や限界に対応するため、新しいシステムを導入する。移行コストが高いが、長期的な利益を目指す選択。

個人的補足

リプレイスは大規模な技術刷新となるため、技術選定やそれらの学習コストなど、細かい課題も多数発生します。

それでも今後の運用を考えた時に、既存のシステムを使い続けるよりも高いパフォーマンスやコスト減などの利点があることが多いです。技術的な好みだけでなく、ROIを十分確保できる根拠を見つけてプロジェクトを進めていきたいですね。

リニューアル

定義

既存のシステムやプログラムの一部または全体の機能やデザインを更新・改善すること。ユーザーに見える部分に変更が生じる。

機能や外観に変更が生じることが特徴。ユーザー体験の向上や市場の変化に対応するための変更が行われることが多い。

個人的補足

リニューアルは主に見た目の機能に関する変更を指します。なので、どこかで技術刷新が行われたとしても、見た目や機能に影響がないのであれば、それはリニューアルには当てはまりません。

リニューアルと技術刷新をセットで考えてしまっていたため、リニューアルとリプレイスの棲み分けがこんがらがってしまっていました。

それぞれの違いを図解してみた

リニューアルといえばDB設計から見直して全面的に刷新することが多く、リプレイスは技術刷新でフロントに影響しない場合があると考えました。リアーキは開発物の部分的なリプレイスがメインで多少のUI改善もあるかなといったイメージでした。

リプレイスを行わないリニューアルもあり、逆にリニューアルを行わないリプレイスも存在します。(確かに...)

話の趣旨に応じて「リニューアルとともにリプレイスも行いました」とか「リプレイスに際してリニューアルを行いました」といった話ができ、それぞれの定義は明確に分けて考えることができますね。

なので、リプレイスとリニューアルは並列的に配置し、両方が重なる領域も作成しました。リアーキは部分的な技術刷新がメインでリニューアルが伴うことがあるものの、部分的なUI/UXのリニューアルをリアーキとは言わないので、歪な範囲となっています。

ただ、調べてる感じ明確に使い分けている記事はそう多くなく、リニューアルという表現にリプレイスが含まれていたり、リプレイスという表現にリニューアルも含まれていることもあります。コンテクストを読むことが大事そうです。

技術負債の返済図

引用:Railsアプリケーションの技術的負債3つと、そのリファクタリングについて

技術負債は定期的に返済するものですが、許容範囲を超えてしまうとリプレイスで対応する形がベターかなと思います。

技術負債を放置して、リプレイスで解消すればいいという考えは結構危うそうなので、技術負債の返済に当てる時間は十分確保していきたいですね。

https://tech.zeals.co.jp/entry/2020/07/31/135541

まとめ

技術負債は年間12兆円の経済損失を生む

技術負債は、2025年には最大で12兆円の経済損失を生むとされています。リアーキとリプレイスとリニューアルといったキーワードは今後より使っていくかもなので、整理できてよかったです。

https://transformation-showcase.com/articles/128/

参考

https://twop.agile.esm.co.jp/rafactoring-rearchitecting-bigrewrite-18549cd60004

https://www.oro.com/zac/blog/system-replacement/

https://yapp.li/magazine/2296/

Discussion