I attended the 22nd potatotips meetup for iOS/Android developers in Tokyo on October 13th, 2015. It was held in an office of Mercari. Tips in variety of fields of iOS/Android development were shared in the meetup. The talks were in the local language, but the tips were worth sharing here. I summarized the tips in this blog1.
I was personally interested in the following talks.
- My Personal App Chosen as One of Best New Apps
- Comparison of RxSwift, ReactKit and ReactiveCocoa on Swift 2
- Easy and Practical Deep Learning App with Caffe
IBDesignable x PaintCode
The presenter introduced PaintCode, a vector drawing tool that can export design code of UI to Xcode. The exported code works with
IBDesignable to update the rendering of graphics in Interface Builder. The presenter said the scheme is still not used in products of Mercari, where he works at, but trying and investigating that kind of tools gives a better collaboration way between designers and engineers.
The sample Xcode project is available at a repository in GitHub.
Presented by kitasuke
The presenter also works at Mercari. He developed a HealthKit wrapper framework named Cardio as his personal project. The problem of HealthKit is that it has too many classes to handle. He wrote Cardio to simplify the HealthKit usage specialized to workout apps.
Cardio has an API that takes advantage of protocol extension in Swift 2. You extend
Context protocol of Cardio to configure HealthKit features as shown in 16th page of the slide above. Reading the code gave me good insight to design APIs in Swift 2.
My First tvOS
Apple TV and its development were introduced. Only a few developers in the meetup had/saw Apple TV, and the introduction by the talker who actually has one was interesting for the audience.
What you have to care to develop an tvOS app are:
- So called 10 feet UI
- Difficult text input
- Limited resource
- Shared device within a family or members unlike iPhone, a personal device
The presenter talked his experience that his personally-developed app was chosen as one of Best New Apps in the App Store. He developed his idea and prototype of the app, Revolver Camera since February 2013. Then he paused the development and restarted in the middle of August, 2015 to release with watchOS 2 feature. He is smart taking the strategy to adopt watchOS 2.
He talked his workflow to motivate himself to finish developing it within a month.
- Ticket management with GitHub and Evernote
- Paper prototyping, Illustrator design and implementation
- Limit what the app should do
The presenter, who has deep knowledge about Objective-C since NextStep, talked about Generics in Objective-C. Xcode 7 added the following new features to Objective-C.
- KindOf Types
- New macros
Objective-C generics has the following characteristics, and it is worth adding generics to your framework written in Objective-C if it is too big to rewrite in Swift.
- Lightweight implementation of generics compared with the other languages
- Strongly-typed collection
- Importable to Swift
- Static type checking (compiler warnings)
- Backward compatibility
- RxSwift: Official sample code is in the repo
- ReactKit: Official sample code is in ReactKitCatalog repo
- ReactiveCocoa: No official sample code
Databinding (replacing KVO)
- ReactKit: Use NSObject KVO with
Tips for iOS Hackathon Beginners
Presented by satoshi0212
The presenter talked about tips to join a hackathon for beginners. It was fun to listen to his talk.
Required skills as an iOS engineer:
- API call to a server (e.g. Alamofire or APIKit)
- JSON response handling (e.g. SwiftyJSON or Himotoki)
- UI implementation to display the response
- Machine learning
- Device hacking
Before a hackathon: - Prepare your idea - Check the idea or its implementation do not exist already
At a hackathon:
- Be confident (iOS engineer is popular)
- Keep your output simple
- Get advice from reviewers and mention about it at a presentation (like hackathonhack)
What you achieve through a hackathon
- Connection with people in other fields (like musician)
- Connection with corporate recruiters
Some features of Caffe introduced in the presentations are:
- GPU calculation
- Only 1-2 sec to run single recognition on iPhone5s with his example
- Working locally (without a server)
It was interesting to see that deep learning calculation works on a mobile device within a reasonable period on a mobile device. It looks expanding idea to develop an app handling images.
Type Safe Resource Handling in Swift
The presenter introduced SwiftGen to avoid using strings to specify resources like assets or storyboards.
The problem with those strings is that a typo in the strings cannot be detected by compiler but just causes a failure in run time. SwiftGen generates code to retrieve resources with enums in a type-safe manner.
SwiftGen currently supports:
- Asset catalog
TinderUI and Scroll
The presenter shared his experience to implement Tinder swipe UI with vertical scroll. He thought the implementation was not so difficult at the beginning, but actually struggled with some implementation barriers with limitations of touch events.
Let me excuse to only simply summarize the talks about Android. Some presentations have English slides, so please refer to them if you are interested.
Tips for better CI on Android
Presented by tomoima525
The presentation contains tips to use both Travis CI and Circle CI to split tasks into them to run in parallel.
Groovy/Spock for Android app testing
Presented by izumin5210
Regexp in Android and Java
Presented by KeithYokoma
The presenter talked about differences between Android and Java, especially in regular expressions. The regular expression engines implemented in them are different, causing different behavior.
A Primer of Scketch3 for Engineers (2nd)
Sketch3 was introduced in the talk. The presenter told the tool is good not only for designers but engineers. What I was interested in was
sketchtool command, which might be able to combine with fastlane.
Hand-made Crash Report of Android Library
The presenter shared his experience to develop his own crash reporter to report crashes only within libraries embedded in an app.
Investigation of Uploading/Downloading
Presented by rejasupotaro
The presenter shared his investigation on data upload/download especially for targeting low bandwidth countries. Image format using WEBP instead of JPEG was interesting.
Encryption Library Conceal
The presenter introduced Conceal to store sensitive data in a mobile app.