Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
担当しているiOSアプリを全部作り直す開発中に_いろいろ半自動化した事_簡易版.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
SatoshiN
November 03, 2019
75
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
担当しているiOSアプリを全部作り直す開発中に_いろいろ半自動化した事_簡易版.pdf
SatoshiN
November 03, 2019
More Decks by SatoshiN
See All by SatoshiN
開発スピード向上Tipsその2.pdf
satoshin303
0
55
秘伝のタレ.pdf
satoshin303
0
31
GitHub小技集.pdf
satoshin303
0
34
iOS_DC_2018_参加レポート.pdf
satoshin303
0
30
量子コンピュータ_の仕組みとQ_.pdf
satoshin303
0
220
モバイルアプリ_開発スピード向上Tips.pdf
satoshin303
0
29
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
210k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
Ethics towards AI in product and experience design
skipperchong
2
440
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
WCS-LA-2024
lcolladotor
0
890
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
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
まとめ 運用案件において 後々時間を奪う要因になりそうなものに対してはお金と実行ス ピードとのバランスを考えて できることから早めに対処しておくと幸せになれるはず