タディのブログ

人狼ゲームのことや、猫カフェの画像や身近に起きたことを適当に書いてます。旧薫平ブログです。

アジャイルとリファクタリングとデグレード

アジャイルにおけるリファクタリング(再構築)の重要性の話。

アジャイルとは開発しながらソースのリファクタリングを行い、システム精度を高めていくのが絶対条件と言える。リファクタリングをしないと、デグレードが頻発するからだ。デグレードは全体の開発を遅め、停滞させる。ここで大事なのは、デグレードを放置すると、取り返しのつかないレベルでアプリケーションが退化してしまう点にある。

リリースを優先すべき時は必ずある。しかし、リファクタリングを十分にせず、デグレードを頻発させ、バグフィックスに追われてしまう状況では、その瞬間のリリースは達成できても、そのソースを使った次のリリースに必ず影響を及ぼす。一瞬の戦果のために、埋めた者すら場所を忘れる地雷を埋めるような作業だ。

自分は、過去にそういうアプリケーションを山ほど見てきた。そしてそれらの多くは、廃棄となった。新しいアプリケーションを作った方が早くなってしまうからだ。そして、その判断は、ほとんどの場合正しい。なぜなら、近年のアプリケーション開発に置いて、数年前ーあるいは半年であろうとも、過去の設計思想やフレームワーク、技術は、最新のものと大きく性能が離れているのは当然だからだ。

そのリニューアルの判断が出来ない、もしくは黙殺されたアプリケーションは悲惨だ。リファクタリングもされず、機能改修を続けるということは、いずれそのアプリケーションの荒廃を招く。埋めた地雷を避けて通れない、そんな膨大な数の地雷が埋められた死の戦場だ。そして、一番恐ろしいのは、その事実をプログラマー以外が気づいたときは、もう既に手遅れである場合がほとんどだということだ。

この自体を防げるのは、能力のあるプログラマー、つまり最前線の戦士しかいない。現場で自ら銃を持たない指揮官では気づくことは出来ない。なぜなら、ソースのリファクタリングされていないとき、死の戦場となる前にその提案できるのは、現場で日々ソースを見ているプログラマーしかいないからだ。

これが、なかなか居ないんだ。 だからリファクタリングの重要性を説明するのは難しい。