Slide 1

Slide 1 text

Sansan iOS での Mockolo の利用実態 i O S T e s t T e a T i m e # 4 Sansan株式会社 技術本部 Mobile Applicationグループ 多鹿 豊

Slide 2

Slide 2 text

@Yut_Taj 多鹿 豊 Yutaka Tajika 技術本部 Mobile Applicationグループ スキル 強み キャリアパス ウェブアプリケーション開発(サーバーサイド) ウェブアプリケーション開発(フロントエンド) 2020 2012 システム開発 エンジニア 22/03 iOSエンジニア プロダクト横断 iOSエンジニア iOS Swift 学習欲 ポジティブ 分析思考 責任感 内省 WALL株式会社 ウェルスタイル株式会社 Sansan株式会社 2015 20/09 Sansan iOSエンジニア iOS AWS Swift プロダクト開発

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

会社概要 社 名 Sansan株式会社 所 在 地 表参道本社 東京都渋谷区神宮前5-52-2 青山オーバルビル13F グ ル ー プ 会 社 Sansan Global PTE. LTD.(シンガポール) Sansan Corporation(アメリカ) ログミー株式会社 従 業 員 数 1036名(2021年11月30日時点) うち、エンジニア職・研究開発職が約30% 表参道本社 神山ラボ Sansan Innovation Lab 2007年6月11日 設 立 支店:大阪、名古屋 サテライトオフィス:徳島、京都、福岡、北海道、新潟 拠 点 寺田 親弘 代 表 者 4

Slide 5

Slide 5 text

Sansan株式会社の働き方を変えるDXサービス ピアボーナスサービス 請求書受領から、月次決算を加速する スマート受付 無人名刺受付システム イベント・セミナー 請求書 契約書 組織コミュニケーション 全文書き起こしメディア 新世代エントリーフォーム セミナー管理から、営業を強くする 名刺作成から、働き方をアップデートする 名刺・顧客データ 名刺作成・発注 営業を強くするデータベース 契約業務のDXから、リスクを管理する 新世代パンフレット 5

Slide 6

Slide 6 text

Agenda - モックライブラリ導入の背景 - 数字で見る利用実態 - 利用方法や運用について - 利用所感 - 今後の課題 Mockolo というモック生成ライブラリの利用実態 6

Slide 7

Slide 7 text

Agenda - Mockolo の詳しい使い方 - #1 の tamadon さんの資料もご覧ください > https://speakerdeck.com/tamadon/introducing-kyash-ios-test-cases-2020 今日話さないこと 7

Slide 8

Slide 8 text

モックライブラリ導入の背景 8

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

なぜ Mockolo にした? - Sansan iOS が求める最低限の機能のみが提供されていた - DSL な書き方がなくシンプルなモッククラスが自動生成されるだけなので、 学習コストが低い - 手作りしていたモッククラスの代替として必要十分 - モック生成がとにかく早い - 開発作業を阻害しない 13

Slide 14

Slide 14 text

なぜ Mockolo にした? mockolo 使用例 公式リポジトリの README より抜粋 https://github.com/uber/mockolo 14

Slide 15

Slide 15 text

数字で見る利用実態

Slide 16

Slide 16 text

どれくらい Mockolo でモック化している? 252 / 921 protocols - 数値は 2022年3月時点のもの - 2020年12月頃に Mockolo 導入 - モック生成は現状 protocol のみ 16

Slide 17

Slide 17 text

モッククラス群の生成時間は? 約 1.1 sec - プロジェクト全体のビルド時間は約 3 min - プロジェクト全体で約 3,000 ファイル - MacBook Pro (13-inch, M1, 2020) にて計測 17

Slide 18

Slide 18 text

利用方法や運用について

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

利用所感

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

今後の課題

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

No content