待ち時間にサヨナラ!iOS開発を加速するSelective Testの設計と実装 by jarinosuke

iOSDC Japan 2025
レギュラートーク(20分)

待ち時間にサヨナラ!iOS開発を加速するSelective Testの設計と実装

jarinosuke jarinosuke jarinosuke
8

「またCIが落ちた...」「テスト完了まであと25分...」このような経験はありませんか?私たちのiOSチームでは、ちょっとしたUIの修正でも全テストスイートの実行に30分以上かかり、開発者の集中力とモチベーションを奪っていました。1日に何度もPRを出すアクティブな開発では、この待ち時間が積み重なり、チーム全体の生産性を大きく損なっていたのです。

この課題を解決するため、私たちは「Selective Test」という仕組みを使いました、「変更した部分に関係するテストだけを実行する」というアプローチです。たとえば、ログイン画面のボタンの色を変更した場合、決済機能のテストまで実行する必要はありません。

仕組みはこうです。まず、プロジェクト内のすべてのファイルの「つながり」を把握します。AというファイルがBを使い、BがCを使っているという関係性を地図のように可視化。次に、変更されたファイルから、その地図をたどって影響を受ける部分を特定し、関連するテストだけを選び出します。

実装では壁にぶつかりました。最大の課題は、Swiftの「見えない依存関係」でした。プロトコルやextensionを多用するiOS開発では、静的解析だけでは不十分で、必要なテストが実行されない「見
逃し」が発生しました。私たちは実行時の情報も組み合わせることで、この問題を解決しました。

本セッションは、日々のCI待ち時間にフラストレーションを感じているiOSエンジニア、チームの開発効率を改善したいテックリード、大規模プロジェクトでのテスト戦略に悩んでいる方々に向けた内容です。セッション終了後、あなたは自分のプロジェクトでSelective Testを導入するための具体的な手順と、避けるべき落とし穴を理解し、明日から実践できる知識を持ち帰ることができます。