Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Refactoring Kataを使ってRubyのリファクタリングを練習する会 - 説明資料

Refactoring Kataを使ってRubyのリファクタリングを練習する会 - 説明資料

Yudai Tanaka

May 14, 2021
Tweet

More Decks by Yudai Tanaka

Other Decks in Technology

Transcript

  1. Refactoring Kataを使って
    Rubyのリファクタリングを練習する会
    Wallhack Engineer
    ユーダイタナカ(@ytnk531)

    View Slide

  2. ⽥中悠⼤(@ytnk531)
    来歴
    1992/5/31 静岡県で誕⽣
    2017/4/1 Javaエンジニア
    2019/2/1 Railsエンジニア
    興味
    コンピュータネットワーク、ソフトウェアのモデリング、テスティング
    ギター、APEX
    エディタ
    GEdit -> vim -> さくらエディタ -> neovim -> eclipse -> VSCode -> RubyMine

    View Slide

  3. Wall Hack Engineerについて
    キャリアの壁をいい感じに乗り越えたい⼈の集まり
    発⾜のきっかけ: キャリア形成について漠然とした不安を感じた
    ⾼品質なソフトウェアを作る技術を頑張って学んできたけど、コスパよくない気
    がする
    インプットは多いけど対外的なアウトプットがほぼ無い
    何を勉強するのが良いのかわからない
    解決策
    教えてもらう
    評価してもらう

    View Slide

  4. 今⽇やること
    Gilded Roseの説明 (10min)
    リファクタリング(1.5h)
    振り返り(20min)

    View Slide

  5. GildedRose-Refactoring-Kata
    リファクタリングの練習のためのクソコード可読性の低いコード
    いろいろな⾔語で書かれていて、Rubyもある
    Github
    https://github.com/emilybache/GildedRose-Refactoring-Kata

    View Slide

  6. 導⼊
    仕様の記述は最初はスルー。
    https://github.com/emilybache/GildedRose-Refactoring-
    Kata/blob/main/GildedRoseRequirements_jp.md
    こんにちは、チーム・ギルドローズへようこそ。我々はアリソンという気さくな
    ⼈が経営する、都会の⼀等地にある⼩さな宿です。
    また、私たちは最⾼級の商品のみを仕⼊れて販売しています。残念なことに、商
    品は販売期限が近づくにつれ、品質が低下していきます。
    私たちには在庫を更新するシステムがあります。これは、新たな冒険へと旅⽴っ
    たリーロイという無神経な性格の⼈物によって開発されました。
    あなたの仕事は、システムに新しい機能を追加して、新しいカテゴリーのアイテ
    ムを販売できるようにすることです。

    View Slide

  7. ソースコード
    https://github.com/emilybache/GildedRose-Refactoring-
    Kata/blob/main/ruby/gilded_rose.rb
    Item
    販売する商品。名前、販売期限、品質を持つ。商品ごとに販売期限と品質の変化の仕
    ⽅が異なる。
    GildedRose
    商品を販売する店舗。 #update_quality で陳列している商品の販売期限と品質を更新す

    View Slide

  8. 課題
    最近、"Conjured"アイテムのサプライヤーと契約しました。そのため、システム
    の更新が必要です。
    "Conjured"アイテムは、通常のアイテムの2倍の速さで品質が劣化します。
    ItemクラスやItemsプロパティは変更しないでください。
    これらは、隅にいるゴブリンのものなので、コードの共有所有権を信じていない
    ので、怒り狂ってあなたを⼀発で撃ってきます。

    View Slide

  9. リファクタリング
    進め⽅
    モブプロ形式で、ドライバーを⼊れ替えながら実施
    1. コードの問題点を指摘してタスクリスト化
    2. リストを上から消化する
    3. 全て消化したら1にもどる
    ルール
    変更したらテストする
    1コミット1リファクタリング
    リファクタリングと機能追加は⼀緒にしない
    ドライバーは10分--15分で交代

    View Slide

  10. リファクタリングの着地点
    新しい商品のための機能追加を安⼼してできるところまで
    時間が余ればその先へ

    View Slide

  11. テスト
    https://github.com/ytnk531/GildedRose-Refactoring-Kata/pull/1/files

    View Slide

  12. モブプロ参加者の紹介
    @okuramasafumiさん
    @fukajunさん
    @tamamushiさん

    View Slide

  13. 質疑応答

    View Slide