Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
担当しているiOSアプリを全部作り直す開発中に_いろいろ半自動化した事_簡易版.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
SatoshiN
November 03, 2019
0
70
担当しているiOSアプリを全部作り直す開発中に_いろいろ半自動化した事_簡易版.pdf
SatoshiN
November 03, 2019
Tweet
Share
More Decks by SatoshiN
See All by SatoshiN
開発スピード向上Tipsその2.pdf
satoshin303
0
51
秘伝のタレ.pdf
satoshin303
0
27
GitHub小技集.pdf
satoshin303
0
30
iOS_DC_2018_参加レポート.pdf
satoshin303
0
27
量子コンピュータ_の仕組みとQ_.pdf
satoshin303
0
200
モバイルアプリ_開発スピード向上Tips.pdf
satoshin303
0
25
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
320
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
230
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
53k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
700
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Designing Experiences People Love
moore
143
24k
Transcript
担当しているiOSアプリを 全部作り直す仮定で いろいろ半自動化した事 簡易版
自己紹介 佐藤慎(さとしん) Twitter @satoshin2071 GitHub https://github.com/SatoshiN303 最近の趣味は カレコ (カーシェア) できままにドライブです
話すこと 0. 前提 & 開発環境の確認 1. ビルド成果物の配布自動化 2. PR時に最低限のコードレヴューを自動化 3.
ObjCの実装からSwiftでの新設計へ半自動で出力 4. UITest実行時に画面のスナップショットを撮影 5. WebやAndroidで似た様な事をするには
前提 & 開発環境の確認 - 2014年?から続いてる年賀状ECアプリ (2017から参加) - 時期によって利用できる機能や見た目が変わる -
2019/10/1にSwiftで再設計・再実装してリリース - iOSアプリは 3名~5名くらいで開発 - TD/ PG で顧客との折衝、設計・実装 担当(なんでもやる)
前提 & 開発環境の確認
案件の一番の課題 毎年エンジニアがほぼ入れ替わる 対策の一つとして自動化
1. ビルド成果物の配布自動化
None
2. PR時に最低限のコードレヴューを半自動で行う
None
None
3. ObjCの実装からSwiftでの新設計へ半自動で出力 ▪解決したい課題 • 2019はObjCの実装をSwiftで書き直してリリース • 新しい設計はファイル数が増えるデメリット (画面関連だけで約360個くらい)
時間が掛かる依存関係の解決方法
None
依存関係が解決されたファイルを360個 生成 旧実装をpythonでクロールしてSwiftファイルを生成 依存関係のあるプロパティはファイル名に応じて変更
依存関係をコード生成時に解決 Swinject / SwinjectStoryboard x CleanArchitecture を採用しているので DIグラフの解決がほぼ定型文で pythonでの生成が容易
時間が掛かるどの画面で何のWebAPIを 叩いてるかを紐付けした上で生成 ※MVCでいうModelとEntityにあたる部分は別途生成済み
どの画面がどのAPIを叩いてるかを抽出 tail -rで旧ファイルを逆表示して読み込み、APIを使用しているメ ソッドを取得する。 そのメソッドを使っているViewControllerをク ロール 例 AddressBookEditViewController' ['address_send_parse.php','as_updateScanUnconfirmData.php', 'address_parse.php',
'postcode.php', 'get_address.php'],
通信まわりの責務を持つファイルに追記 抽出結果を元に 生成済みの下記ファイルに 利用するAPIを叩く処理を追記すれば紐付けは完了 ◦◦Protocols.swift, ◦◦UseCase.swift, ◦◦Gateway.swift
4. UITest実行時に画面のスナップショットを撮影 ▪解決したい課題 * 複数デバイスでの表示崩れの確認に時間が掛かる。 * 改修前の表示との比較が一発で出来ない
UITestを実際に動かしてみるデモ
現状のUITest運用の課題 - Xcodeのバージョンを上げると通っていたテストが通らなくなるなど安定性に欠ける - 録画機能で UITestの記述自体は楽にはなったが 自前で条件分岐等を書かないと 通らない箇所もある - WebView
の中身のテストは省いている - 時間が掛かる => 簡易的な表示系の確認はSnapShotTestCaseを検討 - 運用問題
5. WebやAndroidで似た様な事をするには * 設計 => CleanArchitecture * UITest + スナップショット
=> Selenium, screenshot-tests-for-android * 自動レヴュー => danger-js, GitlabCI
まとめ 運用案件において 後々時間を奪う要因になりそうなものに対してはお金と実行ス ピードとのバランスを考えて できることから早めに対処しておくと幸せになれるはず