Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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