Career

会社でつくり、
ひとりでもつくる
Building at work,
building on my own

iOSエンジニア7年目です。ヤフーでPayPayフリマの立ち上げからグロースまで、DeNAでPococha、 いまはZOZOでZOZOTOWNと、大規模なtoCアプリをつくってきました。 UIKitからSwiftUIへの移行、テストとCIの基盤づくり、リリースマネジメントが軸になっています。I'm in my 7th year as an iOS engineer. I've built large consumer apps: PayPay Flea Market at Yahoo Japan from launch through growth, Pococha at DeNA, and now ZOZOTOWN at ZOZO. My core areas are migrating from UIKit to SwiftUI, building test and CI foundations, and release management.

並行して個人開発が10年目に入りました。100本以上をApp Storeに出して、累計72万ダウンロード。 「うんちくん」は公開から7ヶ月で26万ユーザー、55言語に対応しています。Alongside that, my indie development is now in its 10th year. I've shipped over 100 apps to the App Store, with 720,000 downloads in total. UNCHIKUN reached 260,000 users within 7 months of launch and supports 55 languages.

副業ではiOSだけでなくCloud FunctionsやFlutterも書いていて、AIを足がかりにiOSの外へ越境しているところです。In my side work I write Cloud Functions and Flutter as well as iOS, and I'm using AI as a foothold to move beyond iOS.

7年7 yrsiOSエンジニアiOS engineer
10年10 yrs個人開発Indie dev
100+リリースしたアプリApps released
72万720K累計ダウンロードTotal downloads

本業Full-time roles

新しいものから順に並べています。Listed newest first.

ZOZO 正社員Full-time 2024.08 — 現在2024.08 — Present

ZOZOTOWN / iOSエンジニアZOZOTOWN / iOS Engineer

長く運用されてきた大規模なコードベースのSwiftUI移行を、自分の案件を持ちながら進めています。 あわせてテストとCI、リリースの基盤改善と、バージョン単位のリリースマネジメントを担当。 直近1年で219本のPRを出しました。課題を自分で見つけて起案し、実装からリリースまで完結させる進め方をしています。I'm migrating a large, long-running codebase to SwiftUI while also carrying my own projects. I'm also in charge of improving the test, CI and release infrastructure, and of release management for each version. I opened 219 PRs in the past year. I work by finding problems myself, proposing a fix, and seeing it through from implementation to release.

  • 肥大化したレガシー画面のSwiftUI全面リプレイス。稼働中の画面を止めないよう5つのフェーズに分けて置き換えたFully replaced a bloated legacy screen with SwiftUI. To keep the live screen running, I split the replacement into 5 phases
  • 生成AIによる仕様駆動開発を自分の案件で実証し、内製ツールへ還元。実装着手前のタスク分割を設計したProved out spec-driven development with generative AI on my own projects and fed it back into our internal tools. Designed how tasks get broken down before implementation starts
  • CIの成功率とテストカバレッジの改善を主導。切り分けの難しいFlakyテストを特定して解消し、知見をチームへ展開Led the work to improve CI success rate and test coverage. Tracked down and fixed flaky tests that were hard to isolate, and shared what I learned with the team
  • クラッシュのシンボル化が失敗しても気づけない構造を特定し、再発防止の仕組みを実装Found a setup where failed crash symbolication could go unnoticed, and built a mechanism to keep it from happening again
  • ホーム画面ウィジェットを個人の試作からボトムアップで起案し、正式な社内案件として立ち上げProposed home screen widgets bottom-up from my own prototype and got them launched as an official internal project

Swift / Objective-C / SwiftUI / WidgetKit / App Intents / XCTest / Swift Testing / Bitrise / GitHub Actions / fastlane / Danger / SwiftLint / Firebase

DeNA 正社員Full-time 2023.02 — 2024.07

Pococha / iOSエンジニアPococha / iOS Engineer

ライブ配信アプリのソーシャル寄りの領域を受け持ちました。 いちばん大きな担当は配信者のプロフィール動画機能で、そもそも実現できるのかという技術検証から入り、 再生基盤、投稿フロー、BGM合成、ログ設計まで一通りを担当しています。在籍中に978本のコミット。I handled the more social side of a live streaming app. My biggest piece of work was the profile video feature for streamers. I started with technical validation of whether it was even possible, then covered everything from the playback infrastructure and posting flow to BGM mixing and log design. 978 commits during my time there.

  • スクロールで次々と動画が切り替わる体験のため、AVPlayerItemのキャッシュ機構を自前で実装し、再生開始までの待ち時間を削ったFor an experience where videos switch one after another as you scroll, I built my own caching mechanism for AVPlayerItem and cut the wait before playback starts
  • 動画とBGMを並列再生したときの音量バランスを、Android版と突き合わせて検証Checked the volume balance when video and BGM play at the same time against the Android version
  • SNS連携、Twitter APIの仕様変更への追従、招待コード機能のSMS認証フローSocial media integration, keeping up with Twitter API changes, and the SMS verification flow for the invite code feature
  • Swift Concurrency対応とMainActorへの移行を推進Drove Swift Concurrency adoption and the move to MainActor
  • ペアプログラミングとテスト駆動開発をチーム内で実践し、Mockoloを導入Practiced pair programming and test-driven development within the team, and introduced Mockolo

Swift / SwiftUI / AVFoundation / Swift Concurrency / Mockolo

ヤフーYahoo Japan 正社員Full-time 2019.07 — 2023.02

PayPayフリマ / iOSエンジニア・テックリードPayPay Flea Market / iOS Engineer, Tech Lead

新卒で入社し、立ち上げ途中から参画してグロースまで携わりました。後半はテックリードとしてチームの生産性を高める役割です。 開発体制はLeanXPで、テスト駆動開発とペアプログラミングが日常。約4年で3,400本以上のコミットを積み、 リポジトリ全体で最もコミット数の多いメンバーでした。I joined straight out of university, came onto the project partway through its launch, and stayed through its growth. In the second half I was the tech lead, focused on raising the team's productivity. The team worked in LeanXP, so test-driven development and pair programming were everyday practice. Over about 4 years I made more than 3,400 commits, the most of anyone across the whole repository.

  • 動画出品の著作権侵害対策。ShazamKitが使えない制約からiOS標準のSound Analysisによる音分類に切り替え、出品を止めずに撮影直後へ注意喚起を出す設計にしたCopyright infringement countermeasures for video listings. ShazamKit couldn't be used, so I switched to sound classification with iOS's built-in Sound Analysis, and designed it to show a warning right after recording without blocking the listing
  • ContextMenusを導入し、商品を非表示にするのに詳細画面まで進む必要があった問題を一覧から解けるようにした。ストアレビューの改善につながったIntroduced ContextMenus so items could be hidden straight from the list, instead of having to open the detail screen first. This led to better store reviews
  • ユーザーフォロー、ハッシュタグフォロー、投稿機能といったソーシャル系の大規模案件Large social features such as following users, following hashtags, and posting
  • 出品導線、ほしい物ランキング、持ち物リスト、閲覧履歴まわり、集荷依頼、ホーム画面ウィジェットThe listing flow, the most-wanted ranking, the belongings list, browsing history, pickup requests, and home screen widgets
  • SwiftPMへの移行、Snykによるライブラリ脆弱性チェック、fastlaneのリリース整備Migrating to SwiftPM, checking libraries for vulnerabilities with Snyk, and setting up releases with fastlane

Swift / Clean Architecture + Coordinator / Sound Analysis / SwiftPM / fastlane / Firebase

副業・業務委託Side work and contracts

本業と並行して、小さなチームで企画から運用まで受け持っています。Alongside my full-time job, I take on everything from planning to operations with small teams.

Bitta 業務委託Contract 2023.04 — 現在2023.04 — Present

7プロダクトのiOSとサーバーを一人で開発 / フルスタックエンジニアBuilding iOS and server for 7 products single-handedly / Full-stack Engineer

開発者は基本的に自分ひとりで、企画の壁打ちから設計、実装、ストア申請、保守運用まで受け持っています。 3年で7プロダクト、1,700本以上のコミット。オーナーと1対1で仕様を詰めるので、 言語化される前の会話から入って、実現できる形に翻訳して実装まで運ぶ進め方です。I'm basically the only developer, so I handle everything from bouncing around ideas to design, implementation, store submission, maintenance and operations. 7 products and over 1,700 commits in 3 years. I work out the specs one-on-one with the owner, so I start from conversations before anything has been put into words, translate them into something buildable, and carry it through to implementation.

  • リマインダーアプリでAlarmKitを本番投入し、Live ActivityとApp Intentsを組み合わせた。前例の少ないフレームワークだったため、仕様設計とデザイン仕様書、実装方針書を先に書いて実装に入っているShipped AlarmKit to production in a reminder app, combined with Live Activity and App Intents. There was little precedent for the framework, so I wrote the spec, a design document and an implementation plan before building
  • ここで得た知見がiOSDC Japan 2025の登壇につながったWhat I learned here led to my talk at iOSDC Japan 2025
  • 写真共有アプリでAction ExtensionとShare Extension、ウィジェットからの起動、In-App Purchase、ペアリングによるルーム参加For a photo sharing app: Action Extension and Share Extension, launching from widgets, In-App Purchase, and joining rooms by pairing
  • 法人向けアプリでCloud Functions連携、メディアのアップロードとダウンロード、利用実績の記録、アカウント削除まわりFor a business app: Cloud Functions integration, media upload and download, usage logging, and account deletion
  • FlutterとゲームエンジンでSNS障害時に集まるアプリを、StoreKit課金つきで開発Built an app with Flutter and a game engine where people gather when social networks go down, with StoreKit purchases

iOS / SwiftUI / AlarmKit / Live Activity / App Intents / Flutter / Firebase / Firestore / Cloud Functions (TypeScript) / StoreKit

結.JAPANYui.JAPAN 業務委託Contract 2020.12 — 2026.05

旅行アプリ「nicody」のiOSとサーバーサイド / iOSエンジニアiOS and server side for the travel app nicody / iOS Engineer

1〜10名の小規模チームで、iOSアプリだけでなくCloud FunctionsとFirestoreのセキュリティルールまで担当しました。 立ち上げ期は旅程を組み立てる「しおり」機能から入り、その後はポイント経済圏まわりを受け持っています。On a small team of 1 to 10 people, I handled not just the iOS app but also Cloud Functions and the Firestore security rules. During the launch phase I started with the shiori feature for putting together travel itineraries, and after that I took on the points economy.

  • ポイント付与の正しさをFirestoreのトランザクションで担保。報酬受け取りの二重付与リスクと、二重クリック時のフォールバックを実装したMade sure points were awarded correctly using Firestore transactions. Implemented handling for the risk of rewards being granted twice on claim, and a fallback for double taps
  • HealthKit連携の歩数機能と、ホーム画面ウィジェットA step count feature using HealthKit, and home screen widgets
  • 期間限定クイズ、タイアップクイズ、動画リワード広告、外部ポイントサービスとの交換導線Limited-time quizzes, tie-in quizzes, rewarded video ads, and flows for exchanging points with external point services
  • アフィリエイトのトラッキングURL対応をユニットテスト付きで実装、SMS認証とURLスキームによるディープリンクAffiliate tracking URL support with unit tests, SMS verification, and deep links via URL schemes

Swift / SwiftUI / UIKit / Combine / Firebase / Firestore / Cloud Functions / HealthKit

できることWhat I can do

仕事で実際に手を動かしてきた範囲です。The areas I've actually worked in hands-on at my jobs.

iOS

Swift、SwiftUI、UIKit、WidgetKit、App Intents、AlarmKit、Live Activity、Swift Concurrency、AVFoundation、HealthKit、StoreKitSwift, SwiftUI, UIKit, WidgetKit, App Intents, AlarmKit, Live Activity, Swift Concurrency, AVFoundation, HealthKit, StoreKit

設計・テストArchitecture and testing

MVVMとRepository、Translator層によるAPI依存の分離、Clean Architecture、XCTest、Swift Testing、テスト駆動開発、Flakyテストの解消MVVM and Repository, isolating API dependencies with a Translator layer, Clean Architecture, XCTest, Swift Testing, test-driven development, fixing flaky tests

サーバー・基盤Server and infrastructure

Firebase、Firestore、Cloud Functions(TypeScript)、セキュリティルール、FlutterFirebase, Firestore, Cloud Functions (TypeScript), security rules, Flutter

CI・リリースCI and release

Bitrise、GitHub Actions、fastlane、Danger、SwiftLint、DeployGate、TestFlight、リリースマネジメントBitrise, GitHub Actions, fastlane, Danger, SwiftLint, DeployGate, TestFlight, release management

話したことTalks

アウトプットが好きで、iOSDCやLT会で話しています。I like sharing what I learn, so I give talks at iOSDC and lightning talk events.

資格Certifications

 

応用情報技術者(2018)Applied Information Technology Engineer (2018) 基本情報技術者(2016)Fundamental Information Technology Engineer (2016) ITパスポートIT Passport MOS 2013 Master 普通自動車免許Driver's license