RubyKaigi 2016レポート

Justin Searlsさん,恐怖のないリファクタリングを求めて 〜RubyKaigi 2016 基調講演 2日目

この記事を読むのに必要な時間:およそ 2 分

リファクタリングのコストを下げる

リファクタリングが高コストである理由を,Justinさんは次のように説明しました。

  • プレッシャーを感じる。たくさんのことを一度に把握してなければならない
  • 多くのことを短い時間で行わなければならない
  • ツールがない。新しいものをつくるツールはあふれているが,古いコードのメンテナンスを支援するツールは少ない

Justinさんはそもそもリファクタリングが怖いそうです。

では,リファクタリングのコストを低くするにはどうすればよいでしょうか。現時点では次のツールが使えます。

  1. リファクタリングパターン
  2. 仕様化テスト
  3. A/Bテスト / 実験

ここではそれぞれ,リファクタリングパターン,仕様化テスト,A/Bテストの資料として,リファクタリング:Rubyエディション』⁠レガシーコード改善ガイド』⁠Scientist!を紹介しました。

Development,Testing,Staging,Production,すべての環境で使えるツールは?

仕様化テストもA/Bテストも,それだけでは,次の4つの環境

Development, Testing, Staging, Production

には対応できません。

画像

その4つの環境で十分に力を発揮するツールはどのようになるでしょうか。まだ存在しないものの,話をしなければならないということで,JustinさんはTDDことTalk Driven Developmentで,代わりにgemを作ることにしました。

Suture

以後はSutureの説明です。Sutureの発音は「スーチャー」が近いです。

「外科手術としてのリファクタリング」

Sutureとは,手術後に傷口を縫合した縫い目のことです。外科手術的なリファクタリングを想起する言葉として良いと思い選んだそうです。⁠リファクタリングを外科手術のようにあつかう」という意味が込められています。

外科手術の目的は,恐ろしい箇所に処置を施し安心できるようにすることです。そして,外科手術には事前の入念な計画や柔軟なツール,一貫したプロセスが求められます。Sutureにはそういった機能やワークフローが備えられています。

Sutureが持つ一連の機能とワークフローについて,コード例を実際にリファクタリングしていく形で説明がされました。pure function, mutationの場合の両方について,それぞれ段階的に解説されていきます。Sutureを使い,レガシーコードがリファクタリングされていく様子を,基調講演の動画で是非ご確認ください。16:40頃からSutureの説明が始まります。

ここからは英語ではなく,Justinさんはコミュニティの一番の共通言語であるRubyで語ってくださいました;)

画像

https://speakerdeck.com/searls/surgical-refactors

Suture 🏥

おまけ

さすがです。

著者プロフィール