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

Sansan iOS での Mockolo の利用実態

Sansan iOS での Mockolo の利用実態

■イベント
iOS Test TeaTime #4
https://testonline.connpass.com/event/239922/

■登壇概要

タイトル:Sansan iOS での Mockolo の利用実態

登壇者:技術本部 Mobile Applicationグループ iOSエンジニア 多鹿 豊

▼Sansan Engineering
https://jp.corp-sansan.com/engineering/

C686512aa23516fcb9b1565050c7a1d7?s=128

Sansan
PRO

March 24, 2022
Tweet

More Decks by Sansan

Other Decks in Technology

Transcript

  1. Sansan iOS での Mockolo の利用実態 i O S T e

    s t T e a T i m e # 4 Sansan株式会社 技術本部 Mobile Applicationグループ 多鹿 豊
  2. @Yut_Taj 多鹿 豊 Yutaka Tajika 技術本部 Mobile Applicationグループ スキル 強み

    キャリアパス ウェブアプリケーション開発(サーバーサイド) ウェブアプリケーション開発(フロントエンド) 2020 2012 システム開発 エンジニア 22/03 iOSエンジニア プロダクト横断 iOSエンジニア iOS Swift 学習欲 ポジティブ 分析思考 責任感 内省 WALL株式会社 ウェルスタイル株式会社 Sansan株式会社 2015 20/09 Sansan iOSエンジニア iOS AWS Swift プロダクト開発
  3. 3

  4. 会社概要 社 名 Sansan株式会社 所 在 地 表参道本社 東京都渋谷区神宮前5-52-2 青山オーバルビル13F

    グ ル ー プ 会 社 Sansan Global PTE. LTD.(シンガポール) Sansan Corporation(アメリカ) ログミー株式会社 従 業 員 数 1036名(2021年11月30日時点) うち、エンジニア職・研究開発職が約30% 表参道本社 神山ラボ Sansan Innovation Lab 2007年6月11日 設 立 支店:大阪、名古屋 サテライトオフィス:徳島、京都、福岡、北海道、新潟 拠 点 寺田 親弘 代 表 者 4
  5. Sansan株式会社の働き方を変えるDXサービス ピアボーナスサービス 請求書受領から、月次決算を加速する スマート受付 無人名刺受付システム イベント・セミナー 請求書 契約書 組織コミュニケーション 全文書き起こしメディア

    新世代エントリーフォーム セミナー管理から、営業を強くする 名刺作成から、働き方をアップデートする 名刺・顧客データ 名刺作成・発注 営業を強くするデータベース 契約業務のDXから、リスクを管理する 新世代パンフレット 5
  6. Agenda - モックライブラリ導入の背景 - 数字で見る利用実態 - 利用方法や運用について - 利用所感 -

    今後の課題 Mockolo というモック生成ライブラリの利用実態 6
  7. Agenda - Mockolo の詳しい使い方 - #1 の tamadon さんの資料もご覧ください >

    https://speakerdeck.com/tamadon/introducing-kyash-ios-test-cases-2020 今日話さないこと 7
  8. モックライブラリ導入の背景 8

  9. 導入前は・・・ - テスト用のモッククラスを手作りしていた 9

  10. 導入前は・・・ - テスト用のモッククラスを手作りしていた - protocol にメソッドが追加されると、当然モッククラスにも修正が必要 10

  11. 導入前は・・・ - テスト用のモッククラスを手作りしていた - protocol にメソッドが追加されると、当然モッククラスにも修正が必要 - 諸々面倒でテストを書くハードルが上がっていた 11

  12. 導入前は・・・ - テスト用のモッククラスを手作りしていた - protocol にメソッドが追加されると、当然モッククラスにも修正が必要 - 諸々面倒でテストを書くハードルが上がっていた モックライブラリ入れましょう! 12

  13. なぜ Mockolo にした? - Sansan iOS が求める最低限の機能のみが提供されていた - DSL な書き方がなくシンプルなモッククラスが自動生成されるだけなので、

    学習コストが低い - 手作りしていたモッククラスの代替として必要十分 - モック生成がとにかく早い - 開発作業を阻害しない 13
  14. なぜ Mockolo にした? mockolo 使用例 公式リポジトリの README より抜粋 https://github.com/uber/mockolo 14

  15. 数字で見る利用実態

  16. どれくらい Mockolo でモック化している? 252 / 921 protocols - 数値は 2022年3月時点のもの

    - 2020年12月頃に Mockolo 導入 - モック生成は現状 protocol のみ 16
  17. モッククラス群の生成時間は? 約 1.1 sec - プロジェクト全体のビルド時間は約 3 min - プロジェクト全体で約

    3,000 ファイル - MacBook Pro (13-inch, M1, 2020) にて計測 17
  18. 利用方法や運用について

  19. モッククラスを生成するタイミングは? - Build Phase に Build Script をおいてビルドごとに毎回モックを作り直し ている 19

  20. Build Phase のモック生成スクリプト 20

  21. Build Phase のモック生成スクリプト ビルド毎に都度生成 21

  22. Build Phase のモック生成スクリプト マルチモジュール化 過渡期なため 複数ディレクトリを対象に 22

  23. Build Phase のモック生成スクリプト 生成されたモッククラスに final をつける 23

  24. Build Phase のモック生成スクリプト 生成されたモック群全体に DEBUG マクロを追加 24

  25. モック生成対象はどうやって決める? - VIPER モジュールのボイラープレート生成のテンプレートに /// @mockable をつけている 25

  26. モック生成対象はどうやって決める? - VIPER モジュールのボイラープレート生成のテンプレートに /// @mockable をつけている - その他はルールはなく、開発者が必要に応じてモック生成したい protocol

    に /// @mockable を付与してモック生成対象にする 26
  27. 利用所感

  28. 利用所感 - 機能面 - Sansan iOS としては十分に足りている 28

  29. 利用所感 - 機能面 - Sansan iOS としては十分に足りている - 学習コスト -

    想定通り、学習コストが低く、テストを書くにあたってモックの使い方で躓く ということがほぼなかった 29
  30. 利用所感 - 機能面 - Sansan iOS としては十分に足りている - 学習コスト -

    想定通り、学習コストが低く、テストを書くにあたってモックの使い方で躓く ということがほぼなかった - ビルド時間 - 体感ではビルド時間が延びる感覚はなく、快適に利用できている 30
  31. 利用所感 - 機能面 - Sansan iOS としては十分に足りている - 学習コスト -

    想定通り、学習コストが低く、テストを書くにあたってモックの使い方で躓く ということがほぼなかった - ビルド時間 - 体感ではビルド時間が延びる感覚はなく、快適に利用できている 継続利用していく 31
  32. 今後の課題

  33. 今後の課題 - 自動生成されるモック群ファイルがメインターゲットに入っている - 諸事情があり、やむを得ずメインターゲットに入っている - 諸事情を解決し、テストターゲットに含めるようにしたい 33

  34. We are hiring! 募集職種一覧は こちら 「もう少し話を聞いてみたい」 という方へ カジュアル面談を受け付けています

  35. None