TDDの技法で、mikado method(ミカドメソッド)という、なにやら怪しい名前の方法が流行ってるらしいので、調べてみた。

ミカドメソッドとは

ミカドメソッドとは、大規模なコードをリファクタリングするための方法論。

本もある。

動画もある。

Large-scale refactorings using the Mikado Method - Ola Ellnestam & Daniel Brolund from Øredev Conference on Vimeo.

ミカドメソッドの由来

Mikado(ミカド)メゾッドの名前は、ヨーロッパでポピュラーなテープルゲームが由来らしい。ミカドは、天皇(帝」である。

ちなみに、日本をバカにした『ミカド』というオペレッタもあるというのはどうでもいい雑学。

ミカドメソッドの方法

以下のステップに従う。

  1. ミカドゴール(最終到着目標)を決める
  2. おバカな方法でまずはゴールを実装する。
  3. エラーをたくさんみつける。
  4. 速やかにエラーを除去する。
  5. 新しい解決方法を必要条件として導き出す。
  6. エラーが取れなかったら、初めのスタート地点に戻る。
  7. 2から6を繰り返していく。
  8. エラーがなくなったか確認。

数学用語の『必要条件』を利用して目標を展開していく。PはMikadoの必要条件。

Mikado => P

MikadoのためにはA、B、Cが必要。Bのためには、E、Fが必要など。必要条件の展開は、ミカドグラフ?に描いていく。

Micado
======
| | |
A B C
  |
 E F

いくらでも失敗してよい、失敗したら初めに戻ればよい。はじめに戻る方法は以下。

git reset --hard && git clean -f

成功した道をミカドグラフに残していく。この失敗を恐れぬ大胆な挑戦と、確実な道筋を描いていくことが、大規模リファクタリングに適しているのだとか。あまり、書籍で読んだだけでは実感がわかないな。

ということで、練習用のリポジトリがgithubにある。練習方法は以下の記事が参考。この記事を書いているときは、やっていないけれども、あとで挑戦してみる。