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
160
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.4k
コードレビューやめた
ytnk531
0
400
リモートで生産性を上げるスクラム開発事例
ytnk531
0
530
Other Decks in Technology
See All in Technology
Snowflake ML モデルを dbt データパイプラインに組み込む
estie
0
110
AWSアカウントのセキュリティ自動化、どこまで進める? 最適な設計と実践ポイント
yuobayashi
7
1.2k
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
1
130
LINE NEWSにおけるバックエンド開発
lycorptech_jp
PRO
0
360
Pwned Labsのすゝめ
ken5scal
2
570
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
3.2k
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
330
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
530
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
19k
20250304_赤煉瓦倉庫_DeepSeek_Deep_Dive
hiouchiy
2
130
Introduction to OpenSearch Project - Search Engineering Tech Talk 2025 Winter
tkykenmt
2
210
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.5k
Why Our Code Smells
bkeepers
PRO
336
57k
Making Projects Easy
brettharned
116
6k
A Philosophy of Restraint
colly
203
16k
Building Adaptive Systems
keathley
40
2.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
YesSQL, Process and Tooling at Scale
rocio
172
14k
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さん
質疑応答