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
【リジェクトConライク】Re:cycle〜Kaigi on Rails 2025編〜 登壇資料
Search
Hiromi Kai
October 09, 2025
Programming
0
31
【リジェクトConライク】Re:cycle〜Kaigi on Rails 2025編〜 登壇資料
(株)タイミーの主催枠として発表したものです。
Hiromi Kai
October 09, 2025
Tweet
Share
More Decks by Hiromi Kai
See All by Hiromi Kai
#kaigieffect LT大会 at RubyKaigi2024 登壇資料
hiromikai
0
120
OOC2024 登壇資料
hiromikai
0
150
西区プログラミング勉強会発表資料
hiromikai
0
71
Other Decks in Programming
See All in Programming
XP, Testing and ninja testing ZOZ5
m_seki
3
570
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.2k
Advance Your Career with Open Source
ivargrimstad
0
450
詳しくない分野でのVibe Codingで困ったことと学び/vibe-coding-in-unfamiliar-area
shibayu36
3
4.8k
Signals & Resource API in Angular: 3 Effective Rules for Your Architecture @BASTA 2025 in Mainz
manfredsteyer
PRO
0
110
止められない医療アプリ、そっと Swift 6 へ
medley
1
140
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
230
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
160
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
1.2k
Catch Up: Go Style Guide Update
andpad
0
210
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
170
CSC305 Lecture 03
javiergs
PRO
0
240
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Side Projects
sachag
455
43k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Optimizing for Happiness
mojombo
379
70k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
900
What's in a price? How to price your products and services
michaelherold
246
12k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Code Reviewing Like a Champion
maltzj
525
40k
Statistics for Hackers
jakevdp
799
220k
Transcript
2025/10/07 甲斐 宏味 RSpec Style Guide VS 俺
目次 • 自己紹介 • RSpec Style Guideとは • 規約と自分との戦い
1 自己紹介
自己紹介 名前:甲斐 宏味(かい ひろみ) 所属:エンジニアリング本部 プロダクトエンジニアリング部 職種:バックエンドエンジニア(Rails) 経歴:SE → (転職失敗して紆余曲折)
→ Webスタートアップ数社 → タイミー SNS:やってますが技術の話はしません 得意:ボトムアップアプローチ 苦手:リーダーシップ
2 RSpec Style Guideとは
RSpec Style Guide - RSpecを記述するうえでの望ましいスタイルを記述したもの - いろんな組織が自分流をまとめているため、同名のガイドがいくつか存在する - https://github.com/willnet/rspec-style-guide -
https://rspec.rubystyle.guide/ - https://github.com/rubocop/rspec-style-guide - 弊社はウィルネット版を推奨 - 以前の職場ではこれらをフォークしてアレンジしていた
主な規約 - describeとcontextの使い分け - FactoryBotのデフォルト値をランダムにする - FactoryBotでbelongs_to以外の関連をデフォルトで作成しない - 日付をなるべく相対時間でテストする -
beforeとlet(let!)の使い分け - 控えめなDRY - スコープの外でテストデータを定義しない - updateでデータを変更しない - allow_any_instance_ofを避ける
主観的好き嫌い - describeとcontextの使い分け - FactoryBotのデフォルト値をランダムにする - FactoryBotでbelongs_to以外の関連をデフォルトで作成しない - 日付をなるべく相対時間でテストする -
beforeとlet(let!)の使い分け - 控えめなDRY - スコープの外でテストデータを定義しない - updateでデータを変更しない - allow_any_instance_ofを避ける ☺ 🧐 🧐 🤕 🫡 🤯 🤯 🤯 ☺
遵守結構きつい!
正直嫌い!
ここで冷静になろう
この好き嫌いに普遍性はあるのか?
同僚に聞いてみた
特に気にならない 設計に問題がある サイン 積極的に違反する のはよくない
賛同ゼロ
異常者の相手は疲れた
お前や
3 規約と自分の戦い
昔から「見やすい」「見づらい」という 主観的評価は同僚と意見が合わなかった
考え方は変えられるが 感性を変えるのは難しい
自分と他人の認知の違いは どこから発生しているのだろう
None
認知負荷理論のキーワード - 長期記憶 - 永続的な記憶を保持する - 短期記憶 - 電話番号を一時的に暗記したりするときに使う -
領域の絶対的容量の個人差は少ない - 「チャンク」と呼ばれる意味的なまとまりの形成単位が知識・経験によって変わってくる - 既知の内容はより大きい単位でチャンクを形成できるので保持しやすくなる - ワーキングメモリ - 長期記憶・短期記憶を取り出して実際の思考を司る領域 - 研究によっては短期記憶と混同されていたりするらしい
自分の短期記憶やワーキングメモリが 優れているから複雑なコードを書いて しまう可能性
軽くテストしてみたが普通にダメだった 記憶能力が高いわけではない
「チャンクの認識単位が違う」 ならもしかしたらあるかもしれない
自分の担当ドメインは詳しいから チャンクの認識単位が広くなっている説
ドメインに詳しいと多くのコンテキスト を少ないチャンクに押し込めるから コードの記述量は少ないほうが多くの情 報を処理できる
でも読む人がそうとは限らない
ドメイン知識を活かして 少ない工数で書きたい VS 詳しくない人でも読みやすくしたい
さらにスタイルガイドを読み直してわ かったこと
「describe 外にテストデータを置かない」は 許容パターンが存在してある (前職で同僚と争ったときの認識を更新でき てなかった)
そう考えると受け入れられないスタイルは 結構限定される
工数に余裕がなくていつも焦っている 俺が単に自分本位なだけな気がしてきた
結論があまりにもショボい 聴衆にもっと有意義な 情報を与えられないのか
弊社のテストを片っ端から インプットしてみよう
まずはランダム抜き打ちチェック
一つ一つ調べてみると案外逸脱してる
でもそこまで読むのは苦じゃない
「読みづらいテスト」を探してみよう
おいDevin! スタイルガイドの逸脱性が高いテスト 教えてくれ!
肥大したモデルのテストは早々にワー キングメモリをはみ出してまともに全 容把握できなかった(メソッド単位な らなんとか追える)
読みづらさと量が単純比例する感触
しかし全容が把握できないから設計の 細分化もできずに太り続ける という悪循環
道のりは全然見えてないけど いずれ討伐したい
まとめ - 自分が抱いているスタイルガイドへの不満は「スムーズにテストが書けな い」というフラストレーションがもたらしている - さらにその原因を深堀りすると、スプリントの終盤で工数に余裕がない焦り であったり、ドメイン知識を利用してできるだけ記述量を減らしてチャンク を圧縮したいというインセンティブが働いていることかもしれない - 前職で喧嘩に近い議論をしたせいで冷静さを失っており、但し書きの内容を
利用していくことで適応の道筋がある程度見いだせる - スタイルガイド以前に記述量が多いテストはシンプルに読解が難しい。太っ たモデルは頑張って再設計して負債解消するのがよさそう
結論
どう考えてもスタイルガイドの勝ち!
色々考えてみたけど やっぱりショボかった
落とされて正解だった 次はもっと有意義なアウトプットを 目指す
おしまい