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

2019/09/10 19:30~20:30 #66

Closed ngtk closed 4 years ago

ngtk commented 4 years ago

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

Edit this template

Previous issue

jiro commented 4 years ago

今日は @tomozip @ry-itto @imjn がゲストで参加予定です!

jiro commented 4 years ago

いよいよですね! :apple:

https://www.apple.com/apple-events/

Live from the Steve Jobs Theater. September 10, 2019 at 10 a.m. PDT

今年はYoutubeでも配信されます。

https://www.youtube.com/watch?v=996wliAI_y4

ShotaKashihara commented 4 years ago

People でログ計測テストをできるようにした話

詳細 ## WHY Testing logs is very hard and very fragile ## WHAT Make logs testable in UITest ## Usage 1. setup `TrackLogServer` ```swift override func setUp() { super.setUp() // endpoint: POST `http://localhost:9080/log_cache` TrackLogServer.shared.start() } override func tearDown() { super.tearDown() TrackLogServer.shared.stop() } ```
log ```bash Test Suite 'Selected tests' started at 2019-09-03 15:07:05.644 Test Suite 'namecard-scannerUITests.xctest' started at 2019-09-03 15:07:05.645 Test Suite 'TrackLogServerTest' started at 2019-09-03 15:07:05.645 Server has started ( port = 9080 ). Try to connect now... endpoint: http://localhost:9080["/log_cache"] ```
2. capture your log ```swift public static func send(eventName: String, parameters: [String: Any]) { Analytics.logEvent(eventName, parameters: formatValue(parameters: parameters)) #if DEBUG // send to POST `http://localhost:9080/log_cache` TestLogUploader.sendLogCache(eventName: eventName, parameters: parameters) #endif } ```
log ```bash 📝 log. { source: "firebase", track_event: { event_name: "action_tap", appendix1: "start_button", appendix2: "", appendix3: "" } } ```
3. run UITest and check log ```swift func test_log_firstLaunch() { app.launch() waitForElementToAppear(app.buttons["getStartedButton"], timeout: 10) app.buttons["getStartedButton"].tap() sleep(5) let firstLaunch = TrackLogServer.shared.cache .filter { $0.source == .firebase } .filter { $0.trackEvent.eventName == "action_tap" } .filter { $0.trackEvent.appendix1 == "start_button" } XCTAssertEqual(firstLaunch.count, 1) } ``` これは アプリ起動直後の "Getting Started" ボタンをタップした際に、 ```json { "event_name": "action_tap", "appendix1": "start_button" } ``` というログが取られたかのテストケース
ngtk commented 4 years ago

Dark Mode on i​OS 13

https://nshipster.com/dark-mode/

hiranodept commented 4 years ago

iOSSnapshotTestCase

https://github.com/uber/ios-snapshot-test-case

スナップショットテスト実戦投入

ry-itto commented 4 years ago

Function Builders

https://github.com/apple/swift-evolution/blob/9992cf3c11c2d5e0ea20bee98657d93902d5b174/proposals/XXXX-function-builders.md

ShotaKashihara commented 4 years ago

ついにForbesにまで登場してますね。AppleのARヘッドセットのプロジェクト名は「Garta」。2-3年に市場投入されて行く予感が。楽しみですね #きょうのAR

Apple Leaks Indicate AR Headset In Development via @forbes https://twitter.com/takashifuke/status/1169600098675748866

ngtk commented 4 years ago

Modality changes in iOS13

https://sarunw.com/posts/modality-changes-in-ios13

jiro commented 4 years ago

Differentiable Programming Mega-Proposal

https://forums.swift.org/t/differentiable-programming-mega-proposal/28547

hiranodept commented 4 years ago

Aspects使ってますよね?

https://github.com/steipete/Aspects

Aspects hooks deep into the class hierarchy and creates dynamic subclasses, much like KVO. There's known issues with this approach, and to this date (February 2019) I STRICTLY DO NOT RECOMMEND TO USE Aspects IN PRODUCTION CODE. We use it for partial test mocks in, PSPDFKit, an iOS PDF framework that ships with apps like Dropbox or Evernote, it's also very useful for quickly hacking something up.

kanamenoriyuki commented 4 years ago

あらためて、リジェクトについて考えよう。

iOSアプリのリジェクトリスクを早期に発見するための取り組み

https://speakerdeck.com/kesin11/iosapurifalseriziekutorisukuwozao-qi-nifa-jian-surutamefalsequ-rizu-mi

imjn commented 4 years ago

Value SemanticsReferenceSemanticsについて

Value Semanticsを持たない問題

Swiftの標準ライブラリはほぼすべてがValue型 SwiftはCopy On Writeという仕組みでValue型の配列を実現している

SwiftのArrayが実はすばらしかった - Qiita

Swift での Copy on Write の実装方法の解説 - Qiita

型システムの理論からみるSwiftの存在型(Existential Type) - Qiita

iOSDC2019 より

jiro commented 4 years ago

iOSSnapshotTestCase

https://github.com/artsy/eigen/tree/master/Artsy_Tests/View_Controller_Tests

スナップショットテストが多用されていているので参考になるはず。

ngtk commented 4 years ago

https://developer.apple.com/videos/play/wwdc2019/215/