Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Refactoring Kataを使ってRubyのリファクタリングを練習する会 - 説明資料
Search
Yudai Tanaka
May 14, 2021
Technology
0
170
Refactoring Kataを使ってRubyのリファクタリングを練習する会 - 説明資料
https://wall-hack.connpass.com/event/211464/
Yudai Tanaka
May 14, 2021
Tweet
Share
More Decks by Yudai Tanaka
See All by Yudai Tanaka
ふつうのWebサービス開発者がRubyKaigiを楽しむためのRubyの知識
ytnk531
4
3.7k
コードレビューやめた
ytnk531
0
440
リモートで生産性を上げるスクラム開発事例
ytnk531
0
550
Other Decks in Technology
See All in Technology
初めてのGoogle Cloud by AWS出身者
harukasakihara
1
720
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
GitHub Coding Agent 概要
kkamegawa
1
990
Digitization部 紹介資料
sansan33
PRO
1
3.7k
Okayama WordPress Meetup #12 | そのバックアップ、本当に復元できますか? リストアやってみた!
takeshifurusato
0
110
LT:組込み屋さんのオシロが壊れた!
windy_pon
0
120
Oracle Cloud Infrastructure:2025年5月度サービス・アップデート
oracle4engineer
PRO
0
280
OTel meets Wasm: プラグイン機構としてのWebAssemblyから見る次世代のObservability
lycorptech_jp
PRO
0
230
会社員しながら本を書いてきた知見の共有
sat
PRO
3
660
OSMnx Galleryの紹介
mopinfish
0
130
Introduction to Bill One Development Engineer
sansan33
PRO
0
230
グループ ポリシー再確認 ③
murachiakira
0
140
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
610
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
Why Our Code Smells
bkeepers
PRO
336
57k
Adopting Sorbet at Scale
ufuk
76
9.4k
How STYLIGHT went responsive
nonsquared
100
5.6k
Building Applications with DynamoDB
mza
95
6.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Transcript
Refactoring Kataを使って Rubyのリファクタリングを練習する会 Wallhack Engineer ユーダイタナカ(@ytnk531)
⽥中悠⼤(@ytnk531) 来歴 1992/5/31 静岡県で誕⽣ 2017/4/1 Javaエンジニア 2019/2/1 Railsエンジニア 興味 コンピュータネットワーク、ソフトウェアのモデリング、テスティング
ギター、APEX エディタ GEdit -> vim -> さくらエディタ -> neovim -> eclipse -> VSCode -> RubyMine
Wall Hack Engineerについて キャリアの壁をいい感じに乗り越えたい⼈の集まり 発⾜のきっかけ: キャリア形成について漠然とした不安を感じた ⾼品質なソフトウェアを作る技術を頑張って学んできたけど、コスパよくない気 がする インプットは多いけど対外的なアウトプットがほぼ無い 何を勉強するのが良いのかわからない
解決策 教えてもらう 評価してもらう
今⽇やること Gilded Roseの説明 (10min) リファクタリング(1.5h) 振り返り(20min)
GildedRose-Refactoring-Kata リファクタリングの練習のためのクソコード可読性の低いコード いろいろな⾔語で書かれていて、Rubyもある Github https://github.com/emilybache/GildedRose-Refactoring-Kata
導⼊ 仕様の記述は最初はスルー。 https://github.com/emilybache/GildedRose-Refactoring- Kata/blob/main/GildedRoseRequirements_jp.md こんにちは、チーム・ギルドローズへようこそ。我々はアリソンという気さくな ⼈が経営する、都会の⼀等地にある⼩さな宿です。 また、私たちは最⾼級の商品のみを仕⼊れて販売しています。残念なことに、商 品は販売期限が近づくにつれ、品質が低下していきます。 私たちには在庫を更新するシステムがあります。これは、新たな冒険へと旅⽴っ たリーロイという無神経な性格の⼈物によって開発されました。
あなたの仕事は、システムに新しい機能を追加して、新しいカテゴリーのアイテ ムを販売できるようにすることです。
ソースコード https://github.com/emilybache/GildedRose-Refactoring- Kata/blob/main/ruby/gilded_rose.rb Item 販売する商品。名前、販売期限、品質を持つ。商品ごとに販売期限と品質の変化の仕 ⽅が異なる。 GildedRose 商品を販売する店舗。 #update_quality で陳列している商品の販売期限と品質を更新す
る
課題 最近、"Conjured"アイテムのサプライヤーと契約しました。そのため、システム の更新が必要です。 "Conjured"アイテムは、通常のアイテムの2倍の速さで品質が劣化します。 ItemクラスやItemsプロパティは変更しないでください。 これらは、隅にいるゴブリンのものなので、コードの共有所有権を信じていない ので、怒り狂ってあなたを⼀発で撃ってきます。
リファクタリング 進め⽅ モブプロ形式で、ドライバーを⼊れ替えながら実施 1. コードの問題点を指摘してタスクリスト化 2. リストを上から消化する 3. 全て消化したら1にもどる ルール
変更したらテストする 1コミット1リファクタリング リファクタリングと機能追加は⼀緒にしない ドライバーは10分--15分で交代
リファクタリングの着地点 新しい商品のための機能追加を安⼼してできるところまで 時間が余ればその先へ
テスト https://github.com/ytnk531/GildedRose-Refactoring-Kata/pull/1/files
モブプロ参加者の紹介 @okuramasafumiさん @fukajunさん @tamamushiさん
質疑応答