- iOS Application Development
- 💎 Making User Interface
- Smooth UI
- Making micro UI Component to save development time.
- 💎 Thinking Application Architecture
- MVC / MVVM / Flux like
- Multi-module application
- 💎 Contribute more productivity
- OpenSource work
- Setting up Automation
- 💎 People Management
- Japanese - 日本語
I'm Hiroshi Kimura. I'm using Muukii as handle name. My profession is development iOS Application. In Japan, I work for an IT company providing own services, and mainly I create iOS Application. I like creating iOS Application that has nice UI and good performances. To get this efficiently, it's a good way to create as a library. Then sometimes I share that library on the internet. I hope every mobile application get more goodness efficiently with my libraries.
iOS Application Development
Strong point (what I like)
💎 Making User Interface
Focusing to make UI that has no drop frames.
💡Why we use
I spent a lot of time to find a way of speeding up UI. (Especially, scrolling TableView, CollectionView) And I found that AutoLayout system sometimes increase the cost of layout. So, I've tried to use other layout engines (Yoga, LayoutKit, Texture) Our team decided to use Texture in our application. Because Texture has also a lot of optimizations for UI rendering.
During using Texture, I've tried to create a small library to be more easily usage in Swift Especially, this library is so inspired by SwiftUI Syntax. Using ProperyWrapper and Function builders. https://github.com/muukii/TextureSwiftSupport
💡What the product gets by using Texture
💡 What I get by using Texture
The animation has 2 types roughly.
- Static Animation
- Calculation all values before starting animation.
- Dynamic Animation
- Calculation next value dynamically.
- e.g. facebook/pop, UIDynamicAnimator.
According to Fluid Interfaces, I use UIViewPropertyAnimator aggressively.
The one of Fluid Interfaces meaning is interruptible.
Designing Fluid Interfaces - WWDC 2018 - Videos - Apple Developer
Discover the techniques used to create the fluid gestural interface of iPhone X. Learn how to design with gestures and motion that feel...
Apple has started using the half modal UI on several built-in applications. (Maps, Stocks, Shortcuts) Unfortunately, Apple does not provide API to third party application.
So, I created a library that make us can use the half modal UI anywhere.
Making micro UI Component to save development time.
💎 Thinking Application Architecture
MVC / MVVM / Flux like
Around 2012-2015, I use a lot of shared instances (like xxxManager). But, this approach made so complicated source code. I know shared-instances is not actual bad things, but using that makes the developer can write the code they want to do. And, separating each environment (e.g. multi-user) will be harder.
Around 2016, RxSwift became a part of trend. Our development team started to use RxSwift with MVVM architecture. However, using RxSwift with two way binding was so hard. Basically, the codebase will get more complicated. So next, What we thought was bring the concept of flux into ViewModel. And I created a library to get the more simplified syntax.
Verge - Unidirectional State Management library https://github.com/muukii/Verge/commit/9701318654a15350c4d1f44ba3a5304e7521ee38
In 2018, I created the design website at Eureka, Inc. This built with GatsbyJS. It has given me a lot of inspiration and experiences. Especially, Component Oriented Programming(Building UI). With this, I have been able to get more understanding of Texture's layout system. It's really similar to writing JSX. Even now, these experiences help me.
💎 Contribute more productivity
My OpenSource work focuses on Swift and iOS Development. I'm really interested in how much the code I make works well in the real-world. Especially, most of the libraries are used on production at @eure.
- making library (as a OSS, micro extension)
Setting up Automation
I have experience that setting up following automations.
- Uploading to AppStoreConnect, Fabric, Firebase
- Synchronization dSYM from AppStoreConnect to Crashlytics
These automations are built with Fastlane.
Running on Bitrise or Jenkins.
Previously, I have an experience that makes CI/CD application from scratch with Swift. With this, I get a super expensive experience of creating an application like Jenkins. It's so difficult. We have to think about so many things, queueing, managing system resources, etc...
The source code of that application is here. https://github.com/eure/Tower
💎 People Management
I have experience in managing around 10 engineers.
- Including junior to senior