wantedly / ios_night

Let's talk about iOS development -- iOS Night 📱🌙 You might apply to this meetup from
https://www.wantedly.com/companies/wantedly/projects
18 stars 0 forks source link

2020/02/25 19:30~20:30 #89

Closed jjenko closed 4 years ago

jjenko commented 4 years ago

⚠️ This repository is public. / 公開リポジトリです。

Why

Where

Pearl Jam (Subject to change)

5F, MG Shirokanedai Building (Wantedly, Inc. Tokyo HQ)

Who

You are working for Wantedly? Sure, you can join anytime. If not, you need to contact us first. Or, you can "want to visit" the meetup, which you can find in www.wantedly.com/companies/wantedly/projects.

What

You write topics like below contents and we talk about these on the meetup. Every participant needs to write one topic at least.

Also, you can find new topics from the newsletters:

How

         ・・・

参加者は開催までに話したいことを少なくとも1トピックをコメントしましょう。 ネタ被りを避けるために、まずはタイトルだけでコメントすることを推奨します。 より多くの学びを得るためにどんな内容でもアウトプットを歓迎します!😊

cc/ @wantedly/ios

Previous issue

https://github.com/wantedly/ios_night/issues/86

_Created from https://github.com/wantedly/ios_night/issues/85 by issue-creator_

ShotaKashihara commented 4 years ago

iOS Performance tips you probably didn't know (from an ex-Apple engineer)

https://www.fadel.io/blog/posts/ios-performance-tips-you-probably-didnt-know/

要約

hiranodept commented 4 years ago

Unused images and resources clean up in Xcode

使っていないResourceを探してクリーンできるツール2つ

FengNiaoを使ってみた

Visit-iOS

$ fengniao
Searching unused file. This may take a while...
103 unused files are found. Total Size: 12.61 MB
``` 740.39 KB /visit-ios/js/node_modules/react-native-i18n-ts/doc/demo.gif 664.01 KB /visit-ios/Pods/Sourcery/Resources/daemon.gif 596.05 KB /visit-ios/fastlane/screenshots/ja/2_ipadPro_2.ftl_c41e09883279a905f504d5383a60a0d5_0bc01698dddb9d27536f423fac5e6f44.png 522.19 KB /visit-ios/fastlane/screenshots/en-GB/2_ipadPro129_2.Int'l-appstore-image-iPad02.png 502.96 KB /visit-ios/fastlane/screenshots/ja/3_ipadPro_3.ftl_5087f964af98dc3fcdd39f3527eb8e69_33538b6cb579250935ed64db2e1dd287.png 494.30 KB /visit-ios/fastlane/screenshots/ja/1_ipadPro_1.ftl_2acad1a371784ec4f6534ac9cfbc7159_24655302ebc6c36e8249348e01b33833.png 441.97 KB /visit-ios/fastlane/screenshots/en-GB/1_iphone65_1.1en_6.5.jpg 418.04 KB /visit-ios/fastlane/screenshots/en-GB/2_ipadPro_2.ftl_ca520fc9f0c5f7490d04d7c146f0d374_431ffa3c49c9d8bea5d2fa18e6eaeb67.png 402.24 KB /visit-ios/fastlane/screenshots/ja/4_ipadPro_4.ftl_a217cbe60ab821502520fa85582dd08e_7272fa83f9164b9e0dcd1cd8a2ef97ed.png 391.70 KB /visit-ios/fastlane/screenshots/en-GB/3_ipadPro_3.ftl_d5cb17a64c2f19166d280778288fcb41_39f2fcf6e5a1b48f4e8a16bedfd3e686.png 388.52 KB /visit-ios/fastlane/screenshots/en-GB/4_ipadPro_4.ftl_e2b67661a7be3ece3a0aab9f491606e8_49ea594bd85c0c8a5f6b7da1a4e30cf8.png 359.46 KB /visit-ios/fastlane/screenshots/en-GB/1_ipadPro129_1.Int'l-appstore-image-iPad01.png 359.04 KB /visit-ios/fastlane/screenshots/en-GB/1_ipadPro_1.ftl_00250f33cd58f26dc5bb8e8b447b4d19_b5a3c69746f7d18cd0231f4ee3484892.png 335.36 KB /visit-ios/fastlane/screenshots/ja/6_iphone65_6.6ja_6.5.jpg 322.66 KB /visit-ios/fastlane/screenshots/ja/2_iphone65_2.2ja_6.5.jpg 315.32 KB /visit-ios/fastlane/screenshots/ja/1_iphone65_1.1ja_6.5.jpg 302.59 KB /visit-ios/fastlane/screenshots/en-GB/1_iphone6Plus_1.1en.png 301.80 KB /visit-ios/fastlane/screenshots/ja/1_iphone6Plus_1.1ja.png 293.03 KB /visit-ios/fastlane/screenshots/en-GB/2_iphone65_2.2en_6.5.jpg 270.82 KB /visit-ios/fastlane/screenshots/en-GB/6_iphone6Plus_6.6en.png 267.04 KB /visit-ios/js/node_modules/react-native-i18n/docs/adding-locales.png 256.45 KB /visit-ios/fastlane/screenshots/en-GB/4_iphone65_4.4en_6.5.jpg 244.96 KB /visit-ios/fastlane/screenshots/en-GB/6_iphone65_6.6en_6.5.jpg 242.54 KB /visit-ios/js/node_modules/concurrently/docs/demo.gif 229.18 KB /visit-ios/fastlane/screenshots/ja/4_iphone65_4.4ja_6.5.jpg 229.06 KB /visit-ios/fastlane/screenshots/en-GB/3_iphone65_3.3en_6.5.jpg 228.15 KB /visit-ios/fastlane/screenshots/ja/3_iphone65_3.3ja_6.5.jpg 218.19 KB /visit-ios/fastlane/screenshots/en-GB/4_iphone6Plus_4.4en.png 214.61 KB /visit-ios/fastlane/screenshots/ja/2_iphone6Plus_2.2ja.png 207.90 KB /visit-ios/fastlane/screenshots/ja/6_iphone6Plus_6.6ja.png 188.16 KB /visit-ios/fastlane/screenshots/en-GB/2_iphone6Plus_2.2en.png 187.22 KB /visit-ios/fastlane/screenshots/en-GB/3_iphone6Plus_3.3en.png 184.40 KB /visit-ios/fastlane/screenshots/ja/4_iphone6Plus_4.4ja.png 184.09 KB /visit-ios/fastlane/screenshots/ja/3_iphone6Plus_3.3ja.png 174.79 KB /visit-ios/fastlane/screenshots/ja/5_iphone65_5.5ja_6.5.jpg 172.64 KB /visit-ios/fastlane/screenshots/en-GB/5_iphone65_5.5en_6.5.jpg 160.46 KB /visit-ios/fastlane/screenshots/ja/5_iphone6Plus_5.5ja.png 157.94 KB /visit-ios/fastlane/screenshots/en-GB/5_iphone6Plus_5.5en.png 108.75 KB /visit-ios/js/node_modules/concurrently/docs/frontend-demo.gif 74.59 KB /visit-ios/js/node_modules/concurrently/docs/kill-demo.gif 64.89 KB /visit-ios/js/node_modules/concurrently/docs/raw-demo.gif 27.16 KB /visit-ios/js/node_modules/patch-package/patch-package-banner.png 16.98 KB /visit-ios/js/node_modules/growly/example/muffin.png 15.52 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png 14.81 KB /visit-ios/js/node_modules/growly/example/cake.png 12.93 KB /visit-ios/js/node_modules/rx/logos/logo.png 10.68 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png 9.25 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png 8.54 KB /visit-ios/js/node_modules/patch-package/patch-package.png 7.10 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png 6.46 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png 6.02 KB /visit-ios/js/build/assets/assets/project_shadow.png 6.02 KB /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/assets/assets/project_shadow.png 6.02 KB /visit-ios/js/assets/project_shadow.png 6.02 KB /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/assets/assets/project_shadow.png 5.02 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png 4.98 KB /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/AppIcon-dev76x76@2x~ipad.png 4.57 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png 3.31 KB /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/AppIcon-dev76x76@2x~ipad.png 3.06 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-hdpi/ic_launcher.png 2.86 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png 2.10 KB /visit-ios/js/node_modules/react-native/template/android/app/src/main/res/mipmap-mdpi/ic_launcher.png 1.57 KB /visit-ios/Pods/Sourcery/Sourcery.docset/Contents/Resources/Documents/img/gh.png 529 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteDown@3x.png 529 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoVoteDown@3x.png 529 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteDown@3x.png 515 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoVoteDown@2x.png 515 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteDown@2x.png 515 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteDown@2x.png 507 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteUp@3x.png 507 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoVoteUp@3x.png 507 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteUp@3x.png 439 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoVoteUp@2x.png 439 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteUp@2x.png 439 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteUp@2x.png 324 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoDown@3x.png 324 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoDown@3x.png 324 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoDown@3x.png 315 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteDown.png 315 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteDown.png 315 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoVoteDown.png 303 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoVoteUp.png 303 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteUp.png 303 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoVoteUp.png 287 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoDown@2x.png 287 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoDown@2x.png 287 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoDown@2x.png 274 B /visit-ios/Pods/Sourcery/Sourcery.docset/Contents/Resources/Documents/img/carat.png 272 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/ico_newticket@3x.png 272 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/ico_newticket@3x.png 272 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/ico_newticket@3x.png 248 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/icoDown.png 248 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/icoDown.png 248 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/icoDown.png 219 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/ico_newticket@2x.png 219 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/ico_newticket@2x.png 219 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/ico_newticket@2x.png 209 B /visit-ios/js/node_modules/stream-buffers/coverage/lcov-report/sort-arrow-sprite.png 209 B /visit-ios/js/node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png 209 B /visit-ios/js/node_modules/mute-stream/coverage/lcov-report/sort-arrow-sprite.png 198 B /visit-ios/Pods/ZendeskSDK/ZendeskSDK/5.0/ZendeskSDK.framework/ico_newticket.png 198 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphonesimulator/Visit.app/Frameworks/ZendeskSDK.framework/ico_newticket.png 198 B /visit-ios/DerivedData/Visit/Build/Products/VisitDebug-iphoneos/Visit.app/Frameworks/ZendeskSDK.framework/ico_newticket.png ```

People-iOS

$ fengniao
Searching unused file. This may take a while...
37 unused files are found. Total Size: 10.44 MB
``` 1.36 MB /yashima2/yashima-ios/docs/images/app_badge.png 1.07 MB /yashima2/yashima-ios/docs/images/push_notification.png 779.66 KB /yashima2/yashima-ios/docs/design/ui-flow/sign_up_sign_in.png 573.13 KB /yashima2/yashima-ios/fastlane/screenshots/ja/1_iphone65_1.1.jpg 472.91 KB /yashima2/yashima-ios/docs/images/inner_badge.png 416.29 KB /yashima2/yashima-ios/fastlane/screenshots/ja/1_iphone6Plus_1.1.jpg 364.00 KB /yashima2/yashima-ios/fastlane/screenshots/en-US/1_iphone6Plus_1.ftl_629c3c9e333b471da62b758b10355f59_ffa3892d962728005e5eca24dd64730f.png 322.82 KB /yashima2/yashima-ios/docs/design/uml/signup_facebook.png 321.20 KB /yashima2/yashima-ios/fastlane/screenshots/ja/2_iphone65_2.2.jpg 318.88 KB /yashima2/yashima-ios/fastlane/screenshots/en-US/1_iphone65_1.ftl_98260b551f531b9e8d7b323c3dd3bfff_1_iphone65_1.1e.jpg 288.39 KB /yashima2/yashima-ios/fastlane/screenshots/ja/3_iphone65_3.3.jpg 277.84 KB /yashima2/yashima-ios/fastlane/screenshots/ja/4_iphone65_4.4.jpg 265.19 KB /yashima2/yashima-ios/fastlane/screenshots/en-US/3_iphone65_3.ftl_6af54dd06d7d4e8e24429f9e80f9ea6c_3_iphone65_3.4e.jpg 239.97 KB /yashima2/yashima-ios/fastlane/screenshots/ja/5_iphone65_5.5.jpg 233.70 KB /yashima2/yashima-ios/fastlane/screenshots/ja/6_iphone65_6.6.jpg 219.90 KB /yashima2/yashima-ios/fastlane/screenshots/ja/2_iphone6Plus_2.2.png 205.00 KB /yashima2/yashima-ios/fastlane/screenshots/ja/9_iphone65_9.9.jpg 200.44 KB /yashima2/yashima-ios/docs/design/uml/signin_facebook.png 193.99 KB /yashima2/yashima-ios/fastlane/screenshots/ja/5_iphone6Plus_5.5.png 190.24 KB /yashima2/yashima-ios/fastlane/screenshots/ja/8_iphone6Plus_8.8.png 182.96 KB /yashima2/yashima-ios/fastlane/screenshots/ja/3_iphone6Plus_3.3.png 174.63 KB /yashima2/yashima-ios/fastlane/screenshots/en-US/3_iphone6Plus_3.ftl_399d082b8528066d307720866d401fcc_6d27836bd3d86ac311adceef0684ce1d.png 171.82 KB /yashima2/yashima-ios/fastlane/screenshots/en-US/2_iphone65_2.ftl_debbf4da5af2ecf193488010216cf367_2_iphone65_2.3e.jpg 164.27 KB /yashima2/yashima-ios/fastlane/screenshots/ja/4_iphone6Plus_4.4.png 163.99 KB /yashima2/yashima-ios/fastlane/screenshots/ja/8_iphone65_8.8.jpg 163.86 KB /yashima2/yashima-ios/fastlane/screenshots/ja/9_iphone6Plus_9.9.png 152.83 KB /yashima2/yashima-ios/docs/design/uml/signup_email_input.png 148.80 KB /yashima2/yashima-ios/docs/design/uml/signup_email_scan.png 147.01 KB /yashima2/yashima-ios/fastlane/screenshots/en-US/2_iphone6Plus_2.ftl_9fea0c6228eb0a4e7212ffd84b3a148b_a82ebe61c39ceffac0c700a659d717e5.png 145.01 KB /yashima2/yashima-ios/fastlane/screenshots/ja/7_iphone65_7.7.jpg 134.68 KB /yashima2/yashima-ios/docs/images/make_copy.png 134.27 KB /yashima2/yashima-ios/fastlane/screenshots/ja/6_iphone6Plus_6.6.png 118.17 KB /yashima2/yashima-ios/fastlane/screenshots/ja/7_iphone6Plus_7.7.png 72.31 KB /yashima2/yashima-ios/docs/design/uml/notifications_silent_version.png 51.82 KB /yashima2/yashima-ios/docs/design/uml/signin_email.png 5.00 KB /yashima2/yashima-ios/Danger/lgtm.png 2.24 KB /yashima2/yashima-ios/namecard-scanner/Components/Nenga/Resources/NengaAssets.xcassets/icZoomIn24dpBlack.imageset ```

ref: https://www.avanderlee.com/optimization/unused-images-clean-up/

takashings commented 4 years ago

say good bye "UIApplication.shared.statusBarStyle" 👋

いつの間にか Deprecated。

@available(iOS, introduced: 2.0, deprecated: 13.0, message: "Use the statusBarManager property of the window scene instead.")
open var statusBarStyle: UIStatusBarStyle { get } // default is UIStatusBarStyleDefault

iOS 13からUIStatusBarManagerを使うらしい。

let statusBarStyle = UIApplication.shared.keyWindow?.windowScene?.statusBarManager?.statusBarStyle ?? .default
ngtk commented 4 years ago

XCTest Error Handling Improvements

https://useyourloaf.com/blog/xctest-error-handling-improvements/

Xcode 11.4で追加された:

ThrowingできるsetUpとTearDownメソッド。失敗したらExampleの失敗とみなす。

override func setUpWithError() throws {}
override func tearDownWithError() throws {}

Throwingできるtest exampleメソッド。こちらも失敗したらExampleの失敗とみなす。 今まではXCTAssertNoThrowを使う必要があったが、throwsを書くだけで良くなった。

func testExample() throws {}
func testPerformanceExample() throws {}