Sansan iOS App Dev Team

top profile works link

Overview

Joined Sansan, Inc. and became part of the team developing the Sansan sales DX iOS app. Through development on this team, learned team development practices for feature-rich apps. Learned the necessity of separating responsibilities in apps with many features.

Description

From January 2024 to December 2024, joined Sansan, Inc. and became part of the team developing the Sansan sales DX iOS app. Primarily took responsibility for leading OS support and platform renewal for the iOS app and standardizing technical decision-making through ADRs.

For leading OS support and platform renewal for the iOS app, drove the entire iOS 18 / iPadOS 18 / Xcode 16 support effort, from workload estimation and task creation to test preparation and post-release crash investigation. Among these, two cases are worth highlighting from a decision-making perspective.

The first is the deliberate decision not to adopt the floating tab bar made in the context of OS support. Regarding the floating tab bar (a new tab bar UI that appears floating on the screen), newly recommended by Apple as a UI pattern in iPadOS 18, the investigation led to the decision to maintain the conventional tab bar, prioritizing consistency with the existing UI design. Rather than following Apple's newly recommended OS feature, this was a technical decision that prioritized product-wide UX consistency. Owned the process end-to-end, from investigation to implementation completion.

The second is the refactoring to separate tab bar management responsibility, led in the context of platform renewal. Led a design that separated tab bar management responsibility from the View Controller to a Router, as a refactoring affecting more than 30 screens. In a challenging area where tab state can be updated from multiple paths—initial display at app launch, user tab operations, and deep links from outside—chose separation after organizing the trade-off between "testability and future extensibility vs. stability of the existing structure." As a result, unit testing of screen transition logic became possible, and deep link handling became more transparent. Drove the effort end-to-end, from design to review response.

For standardizing technical decision-making through ADRs, documented development and operational rules accompanying the iOS / Android monorepo consolidation as ADRs (Architecture Decision Records). The target audience was approximately 15 engineers across three teams: iOS, Android, and QA. The emphasis was on documenting not only the conclusion but also the decision criteria and alternatives as a set, so that the background of each decision would be preserved for members joining later.

The main topics were the following three. For selecting the CI trigger method, compared a mechanism that triggers the pipeline via commands from Slack (Slack Bolt: a bot framework running on Slack) against the GitHub Actions UI, and adopted Slack Bolt with the deciding factor being the ability to integrate communication and CI in the same place. For monorepo branch operation rules, based on the GitLab Flow operated on the iOS side, formulated an operational policy that also addressed existing issues on the Android side. For rules for incorporating other branches during parallel projects, developed guidelines that balance development speed and quality, anticipating the three-team structure.

In parallel with the two lead roles above, also engaged in ongoing cross-team initiatives. For incident response and QA collaboration, served as the primary release owner during incidents, and proposed a risk-severity evaluation process for bug reports to the QA team, which helped accelerate prioritization decisions. For development environment improvements, led the comparative evaluation, stakeholder interviews, and budget request for three UI debugging tools, seeing the introduction through to completion. For technical outreach, worked on planning and operating joint study sessions co-hosted with five other companies, and contributed to the technical blog.

key words

Swift, UIKit, SwiftUI, Kotlin, Objective-C, KMP, ktor, koin, Swift-DocC, SwiftPM, CocoaPods, Carthage, GitHub Actions, CircleCI


back to works