概要
Sansan株式会社に入社し、営業DX
SansanのiOSアプリを開発するチームに参加した。このチームでの開発を通して、機能の多いアプリでのチーム開発手法を学んだ。機能の多いアプリでは責務を分割する必要性を学んだ。
説明
2024年1月から2024年12月まで、Sansan株式会社に入社し、営業DX
SansanのiOSアプリを開発するチームに参加した。主にiOSアプリのOS対応・基盤刷新のリードとADRによる技術的意思決定の標準化を担った。
iOSアプリのOS対応・基盤刷新のリードでは、iOS 18 / iPadOS 18 / Xcode
16対応を、工数見積もりからタスク起票、テスト整備、リリース後のクラッシュ調査までを一連で推進した。この中から、意思決定の観点で取り上げたい案件が2つある。
1つ目は、OS対応の文脈で下したフローティングタブバーをあえて採用しない判断である。iPadOS
18でAppleが新たに推奨するUIパターンとして導入されたフローティングタブバー(画面上に浮遊表示される新しいタブバーUI)について、調査の結果、既存UIデザインとの整合性を優先し、従来のタブバーを維持する判断を下した。Apple推奨の新OS機能への追従ではなく、プロダクト全体のUX一貫性を優先した技術判断として、調査から実装完遂まで一貫して担当した。
2つ目は、基盤刷新の文脈で主導したタブバー管理責務の分離リファクタリングである。タブバー管理の責務をView
ControllerからRouterに分離する設計を、影響範囲30画面以上のリファクタリングとして主導した。アプリ起動時の初期表示、ユーザーのタブ操作、外部からのディープリンクといった複数の経路からタブ状態が更新されうる難度の高い領域で、「テスト容易性と将来の拡張性を取るか、既存構造の安定を取るか」というトレードオフを整理した上で分離を選択した。結果として画面遷移ロジックの単体テストが可能になり、ディープリンク処理の見通しも改善した。設計からレビュー対応まで一貫して推進した。
ADRによる技術的意思決定の標準化では、iOS /
Androidのモノレポ化に伴う開発運用ルールを、ADR(Architecture Decision
Record)として明文化した。iOS/Android/QAの3チーム・約15名のエンジニアが対象である。単に結論を決めるだけでなく、判断基準と代替案をセットで文書化することで、後から参加するメンバーにも意思決定の背景が伝わる形で残した点を重視した。
主な策定テーマは次の3つである。CI起動方法の選定では、Slackからコマンドでパイプラインを起動する仕組み(Slack
Bolt: Slack上で動くBotフレームワーク)とGitHub Actions
UIを比較し、「コミュニケーションとCIを同じ場所に統合できる」ことを決め手にSlack
Boltを採用した。モノレポのブランチ運用ルールでは、iOS側で運用していたGitLab
Flowをベースに、Android側の既存課題を解消する運用方針を策定した。並行案件時の他ブランチ取り込みルールでは、3チーム体制を見据え、開発スピードと品質を両立させるガイドラインを整備した。
上記2つのリード業務と並行して、チーム横断での継続的な取り組みにも従事した。インシデント対応とQA連携強化として、障害時のリリース主担当を務めるほか、バグ報告時のリスク段階評価運用をQAチームに提案し、優先度判断の迅速化につなげた。開発環境整備として、UIデバッグツール3種の比較検討・ヒアリング・予算申請を主導し、導入まで完遂した。技術広報として、他社5社との共催勉強会の企画・運営や技術ブログ執筆に取り組んだ。
key words
Swift, UIKit, SwiftUI, Kotlin, Objective-C, KMP, ktor, koin, Swift-DocC, SwiftPM, CocoaPods, Carthage, GitHub Actions, CircleCI