Summary of the 22nd potatotips meetup in Tokyo

Oct 22, 2015   #potatotips  #meetup  #tokyo  #ios  #android 

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.


IBDesignable x PaintCode

Presented by 86 with a slide in the local language

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.

Introducing Cardio

Presented by kitasuke

Introducing Cardio from Yusuke Kita

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

Presented by TachibanaKaoru with a slide in the local language

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

My Personal App Chosen as One of Best New Apps

Presented by mnat44 with a slide in the local language

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

Objective-C Generics

Presented by gooichi with a slide in the local language

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.

  • Generics
  • Nullability
  • 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

Comparison of RxSwift, ReactKit and ReactiveCocoa on Swift 2

Presented by ooba with a slide in the local language

The three major reactive programming frameworks in Swift are RxSwift, ReactKit and ReactiveCocoa. The presenter compared the three to pick up one to use in a project.

Sample code

  • RxSwift: Official sample code is in the repo
  • ReactKit: Official sample code is in ReactKitCatalog repo
  • ReactiveCocoa: No official sample code

Databinding (replacing KVO)

  • RxSwift: Variable type
  • ReactKit: Use NSObject KVO with dynamic keyword
  • ReactiveCocoa: MutableProperty

I chose ReactiveCocoa to write an example project of Swinject, but the others also have their own advantages to use in your projects.

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:

Advances skills:

  • Machine learning
  • Device hacking
  • Unity

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

Easy and Practical Deep Learning App with Caffe

Presented by noradaiko with a slide in the local language

The presenter talked about deep learning using Caffe framework with his sample project.

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

Presented by tasanobu with a slide in the local language

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
  • UIStoryboard
  • Localizable.strings
  • UIColor

TinderUI and Scroll

Presented by takahito_morinaga_5 with a slide in the local language

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.

The slide contains tips or workarounds to the collisions of UIPanGestureRecognizer and UIScrollView events. If you have the same problem, try checking the slide with Google Translate.


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

Tips for better CI on Android from Tomoaki Imai

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

RSpec-like testing framework Spock was introduced. It has parameterized test with simple descriptions and messages like power-assert.

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)

Presented by androhi with a slide in the local language

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

Presented by petitviolet with a slide in the local language

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

Presented by ksk_kbys with a slide in the local language

The presenter introduced Conceal to store sensitive data in a mobile app.

  1. Some slides are written in the local language. Try reading them with Google Translate if you are interested. [return]