Rails

技術的負債との付き合い方

はじめに

先日、「技術的負債との付き合い方」についての勉強会に参加してきました。
新しく知ったことが多かったので、自分なりにまとめてみました。

技術的負債との付き合い方

まず、技術的負債へのアプローチの方法は二つあり
・今後の負債を増やさない方法
・現在ある負債を減らしていく方法
この二つです。この記事では二つのアプローチ方法からどのように技術的負債と付き合って行くのかについて記載します。

負債を増やさない方法

「Railsが提供している便利な機能を活用する。」

負債の原因の一つとして、便利な機能を知らずに自分で実装して微妙になるケースがよくあります。
=>なので、こんなメソッド無いかな?と調べてみる。
<対策>
・公式のドキュメントやRailsガイドを読んで調べてみる。
・もしくは強い人に聞いてみる。

便利な機能を活用することで
・コードの読みづらさ
・バグの数
・差分をみてinsert,deleteをする手間

等を抑えることができます。

「要注意な機能/gem等をチーム全体で周知しておく」

便利な機能とはいっても無条件に使用できるものではないので、チーム内で要注意なものに関しては
・なぜ注意が必要なのか。
・どう避けるのか。
・どうときなら使っていいか。
をチーム内で詳細を詰めて共有しておくと、無駄な負債を増やさなくて済みます。

「定期的に$bundle update をする」

その名の通りです。めんどくさがって後回しがちですが、タスク管理して業務フローに入れ込むくらいがいいです。
例えば、Railsのバージョンをあげるときに、gemの仕様が古いとこのアップデートに時間がかかってしまいます。
これを後回しにした結果さらに後回しをする羽目になります。もう借金地獄です。

<対策>
「Bundle Update Flow」を組んでやる。
例えば、
・二週間に一回はする。
・(チーム開発であれば)当番制にする。
などタスク化することです。

この小さな取り組みが大きな負債を産まずに済むので、是非僕も気をつけていきたいところです。

負債を減らしていく方法

「いけるいけるという強い気持ちをもつ」

気持ちといって軽視する人もいると思いますが、この気持ちさえあれば負債を減らして可能だと思います。
しかし一人で気持ちを継続することは難しいですし、いくら根性がある人でも限界があると思います。

どう継続して行くか? => それは「仲間とやる」です。

気持ちで負けないためのモバプロ

「仲間とやる」方法としてはペアプロ,モブプロをして、仲間とともに負債を減らして行くという方法です。

<メリット>
・一人でだと挫折してしまうコードを仲間と一緒だと読める。
・仕様,背景の理解が進む。(一人でやる以上に)
・出来た時の達成感を共有することができる。
・無視したいくらいの負債をその場で解決しよう。となる。

上記のように、
複数でやっていると軽視しがちな「小さな成功体験」を感じながら進めることができるので
より「いけるいけるという気持ち」が強くなり、気持ちも育てることが出来ます。

ただ、「一人で書いた方が効率がいいし、他の人にコードを見られながら開発したく無い。」と思う方も多いかと思います。

しかし、重きを置いているのは負債を減らすこと。問題解決です。

効率がよく開発するのはいいことですが、ソロプロで早いのはPRまでの時間です。
大切なのは、PRのマージ(リリース)までにかかる時間です。

「とにかく頑張る」

最後に、あとはとにかく頑張るです。作ってしまった負債は頑張ってコードをじっとみて
不要なコード/gemは削除して行くことです。
頑張らずして負債が勝手に減ってくれる様なことは起こりえません。
誰かが負債を削除してくれたとしても、それはやはりその人が頑張ってくれたからです。
なので、最後に書きました。「とにかく頑張る」です。

終わりに

最後まで読んでくださりありがとうございました。
また間違ったような表現などありましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。