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
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Refactoring Kataを使ってRubyのリファクタリングを練習する会 - 説明資料
https://wall-hack.connpass.com/event/211464/
Yudai Tanaka
May 14, 2021
More Decks by Yudai Tanaka
See All by Yudai Tanaka
ふつうのWebサービス開発者がRubyKaigiを楽しむためのRubyの知識
ytnk531
4
4.4k
コードレビューやめた
ytnk531
0
520
リモートで生産性を上げるスクラム開発事例
ytnk531
0
610
Other Decks in Technology
See All in Technology
AI時代における最適なQA組織の作り方
ymty
3
240
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
300
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
160
ClaudeCodeの公式Memory Architecture
nagatsu
0
110
toB プロダクトから見たWAF
tokai235
0
260
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
170
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
290
テスト設計の本質を改めて考えてみる~生成AIを活用する時代だからこそ、作ったテストの説明性を高めよう~
yamasaki696
1
190
トークン最適化のためのユーザーストーリー分析 / User Story Analysis for Token Optimization
oomatomo
0
140
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
190
GitHub Copilot運用のリアル ~AI Credit時代にどう向き合うか~
takafumisu2uk1
0
540
4人目のSREはAgent
tanimuyk
0
300
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
55k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
330
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
A designer walks into a library…
pauljervisheath
211
24k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
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さん
質疑応答