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
190
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.9k
コードレビューやめた
ytnk531
0
480
リモートで生産性を上げるスクラム開発事例
ytnk531
0
570
Other Decks in Technology
See All in Technology
エンタメとAIのための3Dパラレルワールド構築(GPU UNITE 2025 特別講演)
pfn
PRO
0
330
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
2
630
OAuthからOIDCへ ― 認可の仕組みが認証に拡張されるまで
yamatai1212
0
120
「使い方教えて」「事例教えて」じゃもう遅い! Microsoft 365 Copilot を触り倒そう!
taichinakamura
0
390
プレーリーカードを活用しよう❗❗デジタル名刺交換からはじまるイベント会場交流のススメ
tsukaman
0
160
能登半島地震で見えた災害対応の課題と組織変革の重要性
ditccsugii
0
950
AWS Control Tower に学ぶ! IAM Identity Center 権限設計の第一歩 / IAM Identity Center with Control Tower
y___u
0
170
incident_commander_demaecan__1_.pdf
demaecan
0
140
ニッポンの人に知ってもらいたいGISスポット
sakaik
0
150
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.8k
オープンソースでどこまでできる?フォーマル検証チャレンジ
msyksphinz
0
140
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
930
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
35
6.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Agile that works and the tools we love
rasmusluckow
331
21k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
33
2.3k
The Language of Interfaces
destraynor
162
25k
Site-Speed That Sticks
csswizardry
12
900
It's Worth the Effort
3n
187
28k
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さん
質疑応答