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
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
15
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
Google Apps Script で Ruby を動かす
kawahara
0
110
Rubyで音声「データ」を作る
kawahara
0
72
データベースだけじゃないN+1とその対策
kawahara
0
1.4k
CoderDojo 千葉県総武線沿線の取り組み
kawahara
1
430
SendGrid Template Engine 奮闘記
kawahara
0
370
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Mind Mapping
helmedeiros
PRO
1
290
Discover your Explorer Soul
emna__ayadi
2
1.2k
Optimizing for Happiness
mojombo
378
71k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
250
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
740
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 なものを除外して実行できる • データベースが必要なテストをデータベースセットアップのない環境のジョブに逃が せる
長年使っているツールでもドキュメントを読み直すと発見あるよね • そんなこともあるので、見直しのタイミングでドキュメント読もう