Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Claude CodeでサクサクTestコードを移行しよう

Avatar for Kazuki Chigita Kazuki Chigita
September 29, 2025
420

Claude CodeでサクサクTestコードを移行しよう

2025/09/29 AI Agentで変わるモバイルアプリ開発におけるテスト における登壇資料です。
https://trident-qa.connpass.com/event/367282/

資料内でリンクされているページ一覧は以下です。

p. 11,12 Migrating a test from XCTest, https://developer.apple.com/documentation/testing/migratingfromxctest
p. 14,15 swift-testing-revolutionary, https://github.com/giginet/swift-testing-revolutionary
p. 14,15 SwiftFormat, https://github.com/nicklockwood/SwiftFormat

Avatar for Kazuki Chigita

Kazuki Chigita

September 29, 2025
Tweet

Transcript

  1. 5 ©MIXI プロダクションコードよりも⼿⼊れが後回しになりがち Testコードが抱える課題 Testコードは書かれてはいるが、 - (iOS) Swift Testing化できていない -

    (Android) 使っているmockライブラリが場所によってばらついている 新しいテスト体験を享受できず、 開発効率が⻑期的にみて落ちてしまう
  2. 6 ©MIXI プロダクションコードよりも⼿⼊れが後回しになりがち Testコードが抱える課題 Testコードは書かれてはいるが、 - (iOS) Swift Testing化できていない -

    (Android) 使っているmockライブラリが場所によってばらついている 新しいテスト体験を享受できず、 開発効率が⻑期的にみて落ちてしまう ⼈間がコードを書くときにも迷いがあり、 AIと協業するときも正しく書くコストが⾼まる
  3. 7 ©MIXI プロダクションコードよりも⼿⼊れが後回しになりがち Testコードが抱える課題 Testコードは書かれてはいるが、 - (iOS) Swift Testing化できていない -

    (Android) 使っているmockライブラリが場所によってばらついている ⻑期的にリスクが⼤きいので改善したいが、 なかなか時間がとれない...
  4. 11 ©MIXI Swift Testingへの移⾏の多くはルールベースの置換 XCTestからSwift Testingへの移⾏ https://developer.apple.com/documentation/testing/migratingfromxctest XCTest Swift Testing

    import XCTest import Testing class FooTests: XCTestCase { // code snip… } struct FooTests { // code snip… } XCTAssert(x) #expect(x)
  5. 12 ©MIXI Swift Testingへの移⾏の多くはルールベースの置換 XCTestからSwift Testingへの移⾏ https://developer.apple.com/documentation/testing/migratingfromxctest XCTest Swift Testing

    import XCTest import Testing class FooTests: XCTestCase { // code snip… } struct FooTests { // code snip… } XCTAssert(x) #expect(x) たとえmigration URLを読ませても、AI Agentは 確実に同じ操作を⾏うとは限らない
  6. 14 ©MIXI 以下2つの既存のライブラリ併⽤する XCTestからSwift Testingへの移⾏ https://github.com/giginet/swift-testing-revolutionary https://github.com/nicklockwood/SwiftFormat giginet/swift-testing-revolutionary - Swift

    Testingへの移⾏のための - CLIモードと、オプションに--dry-runがある nicklockwood/SwiftFormat - SwiftFormatの1つのオプションとして、preferSwiftTestingというルールがある - 上記とほとんど同じことができる
  7. 15 ©MIXI 以下2つの既存のライブラリ併⽤する XCTestからSwift Testingへの移⾏ https://github.com/giginet/swift-testing-revolutionary https://github.com/nicklockwood/SwiftFormat giginet/swift-testing-revolutionary - Swift

    Testingへの移⾏のための - CLIモードと、オプションに--dry-runがある nicklockwood/SwiftFormat - SwiftFormatの1つのオプションとして、preferSwiftTestingというルールがある - 上記とほとんど同じことができる これらの操作を⾏うtoolとして定義し、 MCP Serverとしてプロジェクトで読み込む
  8. 20 ©MIXI 基本的な課題解決⽅法はSwift Testingと同じ MockitoからmockKへの移⾏ - 移⾏のルールを明⽂化する‧必要に応じてMCP Serverにする - Mockito

    -> mockK の場合はライブラリはないので、 置き換えルールを⼿で⽤意し、まとめておく。 - カスタムコマンドとして、1ファイルごと修正を⾏っていく - 同じタイミングで、適切なリファクタリングをはさむ ここでは、Swift Testingの時とは異なる課題 について共有します
  9. 22 ©MIXI MockitoからmockKへの移⾏ Mockito based test codes mockK based test

    codes 移⾏の最終盤、ヘビーなテストファイルとどう向き合うか 1カスタムスラッシュコマンドで移⾏できる?
  10. 23 ©MIXI MockitoからmockKへの移⾏ Mockito based test codes mockK based test

    codes 移⾏の最終盤、ヘビーなテストファイルとどう向き合うか 1カスタムスラッシュコマンドで移⾏できる? 多分No
  11. 24 ©MIXI MockitoからmockKへの移⾏ 移⾏の最終盤、ヘビーなテストファイルとどう向き合うか 1. 途中状態を許容できるようにする - 元のテストコードのファイル名を更新 (`Deprecated` suffixをつける等)

    - 新しく空のクラスを作成し、関数毎に移⾏していく。 2. Claude Code ⾃⾝に実⾏順序を考えさせる - 歴史があるコードの場合、どのテストコードの移⾏がしやすいのかが ⾒えにくいため、移動できるものから徐々に移動するのがおすすめ。 - 実⾏順序もAI Agentと壁打ちしながら決める。
  12. 25 ©MIXI MockitoからmockKへの移⾏ Mockito based test codes mockK based test

    codes 移⾏の最終盤、ヘビーなテストファイルとどう向き合うか
  13. 27 ©MIXI MockitoからmockKへの移⾏ Mockito based test codes mockK based test

    codes 移⾏の最終盤、ヘビーなテストファイルとどう向き合うか
  14. 29 ©MIXI AI Agentの1つの使い⽅としてTestコードのメンテナンス まとめ コツ : 現状のAI Agentは⾼性能な推論機であることを意識する -

    ルールを⾔語化‧プロジェクト全体で繰り返し使っているパターンに対して有効 - ⾔語化が難しい場合には、MCP Serverを使いながら確実に適切な⽳埋めをさせる メリット : プロジェクトで後回しになりがちなTestコード⾃体のメンテナンス - プロジェクト内での不統⼀感を解消できる - AIとコードを書くときに、⼿戻り少なくTestコードを書けるようになる