大規模コードをリファクタリングする方法『ミカドメソッド(Mikado Methood)』について

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

    ミカドメソッドとは

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

    本もある。

    動画もある。

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

    [//www.youtube.com/embed/OTccRWjriOM?rel=0]

     ミカドメソッドの由来

    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にある。練習方法は以下の記事が参考。この記事を書いているときは、やっていないけれども、あとで挑戦してみる。