何度もプログラムやソースコードを改修していると、次第にプログラムは意図の不明な処理や重複した処理を複製して肥大化してしまいます。
もちろん、最初からきちんとコーディングルールを決めてそれに従ったプログラミングが出来ていれば問題無いですが、時間の問題やコードの量と規模次第で良いソースコードが狂ってくることがあります。
また、仕様が変わる度に、最初に作成した大枠のプログラムにまで手を入れずに小手先だけの小細工で実装してしまう事もあると思います。
そういった、複雑になってしまったソースコードはリファクタリングによって蘇らせる事が出来ます。
もちろん、リファクタリングには大きな時間とコストが必要になりますが、今後もシステムを改修していく予定があれば、リファクタリングによって今後の改修が楽になり、費用を回収出来るようになる可能性も秘めています。
目次
リファクタリングとは?
ソースコードにおけるリファクタリングとは、ソースコードの構造に修正を加えて整理することです。
整理というのは、ソースコードを読みやすく修正のしやすい状態に持っていくという事です。
読みやすく、修正のしやすいソースコードが出来上がると、そこに新たに手を加える時に楽に修正することが出来ます。
そのため、修正にかかる時間が短縮され、おまけにバグの発生数も少ない良いプログラムが出来上がります。
そのような良いプログラムを書くコードは、“変更に強いソースコード”と呼ばれています。

リファクタリングのタイミングはいつ?
リファクタリングのタイミングは“リファクタリングをしたいと思った時”です。
と言うと、少し無責任なので順を追って説明します。
まず、本来のリファクタリングのタイミングとしては
基本的には定期的にある程度書いたらソースコードを見直すというのが最もコストをかけずに、ソースコードを綺麗な状態に保つタイミングです。
実装を行って間もないタイミングでリファクタリングを行う事で、直近で実装したソースコードなら読み返す時間も内容を理解する手間もかかりにくいです。
しかし、現実問題として
リファクタリングをする暇が無かったからリファクタリングが必要なソースコードが生まれてしまった
というのが、やはり多いと思います。
それが、“リファクタリングをしたいと思った時”です。
この時点ですでに手遅れですが、もしここでリファクタリングをせずに実装を続けてしまうと次のような負のスパイラルに陥ってしまいます。
- 意味不明なソースコードの内容を理解するのに時間がかかる
- 実装に時間がかかる
- バグが大量発生して、修正に時間がかかる
- リファクタリングのコストが増大する
そのため、リファクタリングをしないとまずいなと思った時は、躊躇せずにリファクタリングを行いましょう。
また、すでに問題の多いプログラムを抱えている人はすぐにリファクタリングの必要性を相談しましょう。
リファクタリングのやり方
リファクタリングの方法は大きく分けて二つの方法があります。
- リファクタリングの期間をしっかり取って、全て見直す
- 日々の実装の中でリファクタリングを取り入れる
リファクタリングの期間をしっかり取って、全て見直す
時間に余裕がある場合はこちらがオススメです。
最初に修正する内容を洗い出して、全て一斉に修正します。そのために、リファクタリングだけの時間をしっかりと取ってソースコードを見直す期間を設けます。
一定期間リファクタリングに時間を取られるというデメリットがありますが、一度しっかりと軌道修正を行い、良いソースコードで記述することを継続していけば非常に運用のしやすいシステムになります。
日々の実装の中でリファクタリングを取り入れる
リファクタリングだけに時間を取れない場合は、日々の実装の中で少しずつリファクタリングを反映させていきましょう。
既存のソースコードを修正しつつ、新たな実装を行う事で、新たな実装の所でも綺麗なソースコードで実装することが出来ます。
また、時間に捕らわれずリファクタリングを行う事が出来るので、スケジュールに合わせて運用しやすくなります。
ただし、デメリットとしていつ終わるのかが分からなくなるという事があるので要注意です。
コーディングルールを決める、見直す
リファクタリングを行う際に重要なものとして“コーディングルール”があります。
リファクタリングを行うには、”正解のソースコードを知る必要性”と”全員が同じ認識である必要性”が重要です。
というのも、修正方法が確立していない間はリファクタリングを行っても結局複雑なままであまり変わり映えしない時もあるからです。
また、全員が同じ修正方法の認識を持っていないと、各々が考える最良の方法で修正すると結局ソースコードを全体でみるとバラバラのままになってしまいます。
そういった問題を回避するために、リファクタリングするために最初にコーディングルールを考える必要があります。
また、既存のコーディングルールに従って実装を進めた結果複雑なプログラムが出来てしまった場合は既存のソースコードを見直す必要があります。
コーディングルールのメリットと作り方についてはこちらで詳しく説明しています。

まとめ
今回はリファクタリングの必要性とやり方についてご紹介してきました。
リファクタリングとは、かなり手間のかかる作業です。
そのため、手を抜いたり妥協してしまうこともあると思います。
しかし、妥協してしまうような事があるということはコーディングルールがしっかりと定まっていないという事です。
なので、妥協をすると結局また複雑なソースコードが出来上がり再度リファクタリングを行う必要性が出てきてしまうかもしれません。
うまくリファクタリングが出来ると、その後の運用も楽になります。是非、試してみて下さい。
- ある程度書いたら見直す
- 見直すための観点をあらかじめ決めておく
- コーディングルールを用意する
- 妥協を許さない
リファクタリングの本質は綺麗なソースコードで書くことです。
もし、コーディングルールも綺麗なソースコードもいまいちピンと来ない場合は、こちらの記事で綺麗なソースコードの書き方についてご紹介しているのであわせて読みましょう。

また、この記事を読んでいる方の中には、上流工程エンジニアで自分でソースコードは書かないけど、リファクタリングをしたいと思っている人もいると思います。
そんな方には、こちらの記事をオススメしています。
