Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
rspec の --tag オプションがこんなに便利だったなんて...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Shogo Kawahara
June 17, 2026
28
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
rspec の --tag オプションがこんなに便利だったなんて...
Shogo Kawahara
June 17, 2026
More Decks by Shogo Kawahara
See All by Shogo Kawahara
strudel-rb について
kawahara
0
25
Google Apps Script で Ruby を動かす
kawahara
0
490
Rubyで音声「データ」を作る
kawahara
0
110
データベースだけじゃないN+1とその対策
kawahara
0
1.4k
CoderDojo 千葉県総武線沿線の取り組み
kawahara
1
440
SendGrid Template Engine 奮闘記
kawahara
0
390
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
14
40k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
The agentic SEO stack - context over prompts
schlessera
0
970
Design in an AI World
tapps
1
360
Optimizing for Happiness
mojombo
378
71k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Being A Developer After 40
akosma
92
590k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
For a Future-Friendly Web
brad_frost
184
10k
Transcript
rspec の –tag オプション がこんなに便利だったなんて.. かわはら しょうご @ooharabucyou
[email protected]
kyobashi.rb
2026.06.16
最近の悩み 昨今のAI駆動による成果もあってか コミット量 & Pull Request 量はこんな感じになっている
最近の悩み そして、CI の実行累計時間もこんな感じになっている
最近の悩み • 同じ Repository をいじる人もそこそこ多い & 自動生成ファイルもそこそこあるので GitHub の Merge
Queue を有効にして事故を防いでいる ◦ これは、複数人が同時にマージしようとすると、 GitHub 側でそれぞれが順番にマージされた状態で テストを流し、問題ないものをマージしていくという素晴らしい仕組みである • 結構な頻度で 「CI待ち」が発生する ◦ worktree とかで作業したりするのだが、並列作業にも限度というものがある
ミッション: CIを早くしろ
ボトルネックを探る -> 直す • 目標を定める ◦ まずは目標ありき! X分以内であれば業務を止めないだろうという推測 ◦ コストや、CIの実行範囲
(スコープ) はトレードオフがあるので、それぞれの優先順位度を決めよう • 実は、vCPU を使いきれてなかった ◦ ちょうど 50% で打ち止めになってた。 ◦ 2 vCPU あるから、fork して2並列でプロセス回せばいいよね ◦ rspec なら、parallel_test を使う • CI 自体のマシン並列度の調整 • … (こういう細いのをひたすらこなす) … • 早くなった!!
いっぱいある RSpec にメスを入れる • ともかくいっぱいテストがある ◦ ほぼ100%カバレッジがあるというのはいいことだが、時間はかかるよね • ディレクトリ構成が微妙 ◦
Rails アプリの構成に対応した rspec ディレクトリ構成になっているだけなので、テストに対する意 味としてディレクトリ構成を失っている
テストについての話題に関する本を読んでみよう • 『脳に収まるコードの書き方』(Mark Seemann著) の 12.2.2 スローテストによると (p.189) この節では、データベースが関わるテストを行う概略 を説明します。ただし、問題があります。テストが遅く
なりがちなのです。... ... いろいろやり方はありますが、日々の作業を行う既 存のソリューションの隣に2つめの Visual Studio ソ リューションを作るのが簡単です。
つまり、 • 現状の rspec はデータベースに繋げたり、Contrller のテストのため request spec (実際に Rack
にリクエスト投げて、特定のレスポンスがかえるかテスト) をやってい たりといろんなものが混ざっちゃっている... • クリーンアーキテクチャは前提としているので、ビジネスロジックなんかはデータ ベース・フレームワーク非依存だが、モノによってはDBありきのテストを行ってい る。
理想 少量だが遅い request test 中速 DBが必要な類 高速 DB不要なテスト テスト量 DBに
関わる処理 をカット E2E (別管理) この辺は DBを用意 する 環境ごと用 意する これがディレクトリやワークスペースが別 だったらよかったのになぁ。。
そこで、rspec の tag を使う • https://rspec.info/features/3-12/rspec-core/command-line/tag/ • describe や、it といった構造には「タグ」を付与できる
• rspec コマンドは –tag により、実行条件を指定できる • 構造に対して、タグを利用していた場合 include したりする場合には使っていたも のの、--tag オプションのことを何もしらなかったのだ。 RSpec.configure do |config| config.include SomeHelpers, domain: :something end # describe domain: :something ブロックに対して SomeHelper を include して使えるようにする
意外と充実していた –tag の挙動 • https://rspec.info/features/3-12/rspec-core/command-line/tag/ • 単純なフィルターだけでなく、否定条件や複合条件がある • dbが必要なテストには it
‘something’, db_required: true などとして、rspec . –tag ~db_required などとすると、db_required なものを除外して実行できる • データベースが必要なテストをデータベースセットアップのない環境のジョブに逃が せる
長年使っているツールでもドキュメントを読み直すと発見あるよね • そんなこともあるので、見直しのタイミングでドキュメント読もう