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
SatoshiN
November 03, 2019
73
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
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
Statistics for Hackers
jakevdp
799
230k
Building the Perfect Custom Keyboard
takai
2
880
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
730
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Optimizing for Happiness
mojombo
378
71k
Visualization
eitanlees
153
17k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
520
Everyday Curiosity
cassininazir
0
320
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
まとめ 運用案件において 後々時間を奪う要因になりそうなものに対してはお金と実行ス ピードとのバランスを考えて できることから早めに対処しておくと幸せになれるはず