Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AI時代における_iOS設計の守り方と人間の役割
Search
TVer Inc.
PRO
September 17, 2026
Programming
10
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AI時代における_iOS設計の守り方と人間の役割
TVer Inc.
PRO
September 17, 2026
More Decks by TVer Inc.
See All by TVer Inc.
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
260
TVer Web-based TVのリアーキテクチャ
techtver
PRO
0
240
Pub/Sub で実装するワーカープールパターン - BigQuery リバースETLジョブの並行数制御-
techtver
PRO
0
160
株式会社TVer 会社紹介資料
techtver
PRO
9
130k
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
3k
Feature Flagを定義から削除まで 安全に行うために考えたこと
techtver
PRO
0
3.8k
4100万ユーザーを支えるTVer iOSアプリ開発 〜0人から始まったチームのAI活用による挑戦〜
techtver
PRO
1
2.9k
TVer iOSチームの共通認識の作り方 - Findy Job LT iOSアプリ開発の裏側 開発組織が向き合う課題とこれから
techtver
PRO
0
1.3k
20240710_HR SUCCESS SUMMIT 2024_テーマセッション「エンジニア採用2.0」登壇資料(株式会社TVer_香坂)
techtver
PRO
0
170
Other Decks in Programming
See All in Programming
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
170
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
390
Building an Out-of-Order CPU
latte72
1
770
一人だけ、Kiroが静止する日
hideg
0
110
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.9k
XHTMLが残したもの
yosuke_furukawa
PRO
2
800
Jetpack Compose メカニズム
skydoves
0
410
Are APIs Still Relevant in the AI Era?
soyuka
0
190
新卒PdEのリアル
ryu1013
1
500
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
150
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
150
Intent as Code
shoppingjaws
6
1k
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Un-Boring Meetings
codingconduct
0
420
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
520
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
WCS-LA-2024
lcolladotor
0
830
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
Transcript
AI時代における iOS設計の守り⽅と⼈間の役割 遠藤 拓弥 @entaku_0818 株式会社TVer iOSDC Japan 2026 /
2026.09.12 © 2026 TVer INC.
⾃⼰紹介 遠藤 拓弥 株式会社TVer iOSアプリエンジニア 趣味は海外サッカー観戦、⾳楽フェス © 2026 TVer INC.
⾃⼰紹介 Swift愛好会やDroidKaigiのスタッフなどやってます © 2026 TVer INC.
00 TVerのこれまで © 2026 TVer INC.
About TVer TVerとは ⺠放テレビ局がひとつになった テレビの新しい プラットフォーム ⾒放題 0 ¥ ドラマ
バラエティ アニメ/ヒーロー 報道/ ドキュメンタリー スポーツ その他 © 2025 TVer Inc. | Recruiting Deck 5
Data サービス規模 現在、常時約800番組をすべて無料で パソコン‧スマートフォン‧タブレット‧テレビに配信 アプリダウンロード数 MUB (TVer単体‧訪問ベース) 9,000 万 4,460
万 ※MUB=⽉間ユニークブラウザ数 © 2025 TVer Inc. | Recruiting Deck (2025年11⽉時点) (2025年12月時点) 再⽣数 (TVer単体) 認知率 (15〜69歳/男⼥) 6.5 億回 73.3 % (2025年12⽉時点∕TVer DATA MARKETING調べ) (2024年11⽉時点∕株式会社マクロミル調べ) 6
去年までのおさらい TVerは去年⼀昨年とスポンサーセッションで登壇 © 2026 TVer INC. https://speakerdeck.com/techtver/20240826-iosdc-japan-2024 https://speakerdeck.com/techtver/iosdc-2025-slide
去年までのおさらい 2024年正社員⼀⼈でチーム体制も組めなかった © 2026 TVer INC. https://speakerdeck.com/techtver/20240826-iosdc-japan-2024
去年までのおさらい チーム開発が始まりAIを活⽤する⽂化を促進した © 2026 TVer INC. https://speakerdeck.com/techtver/iosdc-2025-slide
去年までのおさらい ⼈が増えAI導⼊が始まり AIに渡す前提を、順番に作ってきた AI関与するコミットPR iOSエンジニア2⼈⼊社 2023/09 が⽉の半分に 2025/07 2025/01 初めてのiOSエンジニア
⼊社 2025/12 Claude Code 導⼊ ここから2年かけて⼈を増やし 初のAIコミットが 7/02。 た この⽉はまだ6本 © 2026 TVer INC. 2026/03 4⼈⽬の iOSエンジニア⼊社
01 AI導⼊から約1年どう変わったか? © 2026 TVer INC.
AI導⼊から約1年 AIに渡す内容を作ってきました 2025-07 初めてAIが関わったコミット。CLAUDE.md を置く 2025-12 レビュー⽤などサブエージェントの構築 2026-03 rules/ を作る。AIが⾃分でブランチを切ってPRを出し始める
2026-04 AI⾃⾝に振り返らせて、ルールを改善させるループを⼊れる 2026-05 アーキテクチャガイドを書く 2026-06 仕様を機械可読な契約に落とす。依存⽅向 lint を導⼊ 2026-08 CI上でAIがバグを修正してDraft PRまで作るようになる © 2026 TVer INC. 12
AI導⼊から約1年 AIが関わったコミットの割合 0% → 73% TVer iOSリポジトリ / 2025-06 →
2026-08 の実測 claude/ ブランチからのPRは累計516本、多い⽇は1⽇25本マージ © 2026 TVer INC.
AI導⼊から約1年 量が増えて、触る⼈も増えた マージされたPR コミット ⽉あたりのコミットメンバー 3.4倍 3.4倍 1.5倍 1,619 →
5,435 5,999 → 20,443 10.7⼈ → 16.2⼈ © 2026 TVer INC.
AI導⼊から約1年 リリースの回数と内容が増加 この1年で 43本リリースした。⽉あたり 3.6本。 リリース回数(⽉あたり) 2.6本 → 3.6本 約1.5倍
1リリースに⼊るPR 66本 → 126本 約2倍 1リリースに⼊るコミット 249 → 475 約2倍 1回のリリースで動くコードの量が、2倍近くになった。 © 2026 TVer INC.
AI導⼊から約1年 増えていくコミット、リリースに対して何をしたか? © 2026 TVer INC.
AI導⼊から約1年 アーキテクチャガイドラインの設定 • 迷わない ◦ • 持続可能 ◦ • 品質を継続的に担保できる構造
安全に変更できる ◦ © 2026 TVer INC. 負債がたまらない。10年後も健全であり続ける テスタブル ◦ • 誰でも、AI でも統⼀した実装ができる 意図しない副作⽤が⽣まれにくい。テストされている
AI導⼊から約1年 機能ごとにPackageを切る 22 → 204 © 2026 TVer INC.
AI導⼊から約1年 22 → 204 約1年間でモジュール数は約10倍 TVerApp / App TVerLibrary LegacyAppFeature
109 94 1 Domain ∕ 画⾯Feature 共有インフラ 114,234⾏の 単⼀ターゲット 境界をはっきりさせて、ビルド時にアーキテクチャの違反を静的に検出できる © 2026 TVer INC.
AI導⼊から約1年 Packageの切り⽅と、依存の向き AppFeature 画⾯Feature 画⾯Feature 画⾯Feature Domain DesignSystem 共通UI Client
- / ClientLive それぞれの画⾯ごとにUIとDomainのパッケージを分ける デザインは共通化されたものを利⽤する © 2026 TVer INC.
AI導⼊から約1年 Packageの切り⽅と、依存の向き AppFeature 画⾯Feature 逆流 禁⽌ × 画⾯Feature 画⾯Feature ×
Domain DesignSystem Client / ClientLive 依存の⽅向性をlintで制限し、CIで確認する © 2026 TVer INC. × 共通UI
AI導⼊から約1年 書く対象が、コードから仕様に移りました 925⾏ → 25,401⾏ リポジトリ内の Markdown 総⾏数 / 14ヶ⽉で27倍
コードを書く時間が減った分、仕様を書く時間が増えた © 2026 TVer INC.
AI導⼊から約1年 テストファイル 23 → 1,094 CI実⾏時間も⽇々増加 © 2026 TVer INC.
AI導⼊から約1年 AI導⼊から1年経って.... 1. コミット数とPR数が3.4倍、リリース数も⽐例して上昇 2. アーキテクチャのガイドラインやlintなどでAIで増加す るコミットに対応 3. テストファイルや仕様の記述も増えてきたが適切な量な のかはまだわからない
© 2026 TVer INC.
02 AIは速い。でも、任せきれない © 2026 TVer INC.
AIは速い。でも、任せきれない バグがあれば、そのバグが仕様として書かれる ローカルの仕様ドキュメントはソースコードからリバースエンジニアリング で作成されたものであり、ソースコードにバグがあれば、そのバグが仕様と して記載されている可能性がある。 .claude/agents/ios-spec-reviewer.md AIでコードから動作を⾔語化できる。でも、それが仕様かバグかは判別できない。 © 2026 TVer
INC.
AIは速い。でも、任せきれない AIは全体像ではなく、近くのコードを手本にする /// メニュー「シェア」で共有する URL。 /// /// 同じ組み立てが `EnderListPage` と
`HomePage.shareURL(for:contentID:)` にもある。 /// 暫定なので、BE 供給が入ったら各所をまとめて応答の値へ差し替える。 func shareURL(contentID: String) -> URL? { ... } 13 モジュール・ 15 箇所に散っていた組み立てを集約した。各画面の実装は互いにコピーで、 同じ FIXME コメントも 15 箇所に重複 していた。空 contentID のガードは従来 3 画面にしか 無かった 。 © 2026 TVer INC.
AIは速い。でも、任せきれない 嘘が、仕様になってしまう // 上限エラーを返すのも series(70003)のみ // (`FavoriteCategory.init(contentType:)` の doc 参照)。
事実は対象エラーコードは対象種別によらず 4008。70003 は legacy API 由来で、この説明は最初から誤り。 ad863ac684 LiveDetailPage に混入 Claude Fable 5 f0083452e2 SpecialDetailPage へコピー — 参照先を FavoriteLimitModal に差し替えて Claude Sonnet 5 36ec01ec80 RealtimeLivePage へコピー、テストのコメントにも波及 Claude Opus 5 106a4a711f 17 日後、8 ファイルを一括修正 FavoriteLimitModal と FavoriteRepositoryLive が互いを出典として参照し合う循環をやめる。 →本番にリリースする前に気づくことはできた © 2026 TVer INC.
AIは速い。でも、任せきれない 仕組み化するのが難しい問題 SwiftUIか?UIKitか? © 2026 TVer INC.
AIは速い。でも、任せきれない UIKit は 34 箇所。それぞれ理由がある SDK‧OS標準がUIKitでしか来ない。選べない 13箇所 SwiftUI にその機能が存在しない 9箇所
特定のOSバージョンでSwiftUIが動かない 3箇所 ⾒た⽬はSwiftUI、挙動だけUIKitで直す 5箇所 UIの都合ではない 4箇所 © 2026 TVer INC.
AIは速い。でも、任せきれない SDK‧OS標準がUIKitしかない。選べない SDK が UIKit の部品として配っている。包む以外にやることがない private struct Representable: UIViewRepresentable
{ func makeUIView(context _: Context) -> TapReportingCastButton { let button = TapReportingCastButton(frame: .zero) // 純正ボタンは渡したアイコンを tintColor で塗る。 button.tintColor = UIColor(tintColor) // a11y ラベルは SDK が cast state ごとのローカライズ済み文言を // 既定で設定するため、こちらでは触らない。 button.onTap = onTap return button } } © 2026 TVer INC.
AIは速い。でも、任せきれない 特定のOSバージョンでSwiftUIが期待通りに動かない SwiftUI では、特定のOSバージョンで動かない private func attach() { var view:
UIView? = superview while let c = view, !(c is UIScrollView) { view = c.superview } guard let sv = view as? UIScrollView else { return } // iOS 17 では onScrollPhaseChangeはないので、UIScrollViewで実装 offsetObs = sv.observe(\.contentOffset, options: [.initial, .new]) { [weak self] _, _ in self?.scheduleEmit() } // 慣性中を掴んで離す操作は offset が動かないので pan からも拾う sv.panGestureRecognizer.addTarget(self, action: #selector(panStateChanged)) } © 2026 TVer INC.
AIは速い。でも、任せきれない SwiftUI にその機能が存在しない SwiftUI の Menu には開いているか閉じているかを表す情報を返せない private func deferredRowElement(
resolve: @escaping @MainActor @Sendable () async -> [MenuAction], onSelect: @escaping @MainActor (MenuAction) -> Void, ) -> UIDeferredMenuElement { UIDeferredMenuElement.uncached { completion in Task { @MainActor in completion(await resolve().map { $0.uiAction(onSelect: onSelect) }) } } } © 2026 TVer INC.
AIは速い。でも、任せきれない AIは速い。でも、任せきれない • AIでコードから動作を⾔語化できる。でも、それが 仕様かバグかは判別できない。 • 特にUIの技術的決定でUIKitがいいのかSwiftUIがいい のか?を判断するのは難しい © 2026
TVer INC.
03 決めるのは⼈間。 © 2026 TVer INC.
決めるのは⼈間 指摘は、決定じゃない AIがやったこと AIが⾔わなかったこと 重複を15箇所にコピーする → 「集約しましょう」とは⾔わない 嘘の出典を循環させる → 「⼀次情報を⾒に⾏きましょう」とは⾔わない
バグを仕様として書く → 「これバグじゃないですか」とは聞かない © 2026 TVer INC.
決めるのは⼈間 AIの失敗は、決定の不在だった 02章で⾒た失敗と、そこで⼈間が決めていなかったこと。 AIがやったこと(02章) ⼈間が決めること 近くのコードを⼿本にする → 嘘の仕様が正しくなる → バグが、バグのまま仕様になる
→ UIKitがいいのか? SwiftUIがいいのか? → © 2026 TVer INC. ① 構造を決める 境界を切り、参照すべき場所を作る ② 正の在り処を決める どこを信じるかを指定する ③ 仕様の中⾝を決めて返す 外から正を持ってくる ④ 実機で動作を⾒てUI を承認する
決めるのは⼈間 何を失うかを決める // SwiftUI Text には無い指定 let style = NSMutableParagraphStyle()
style.lineBreakMode = .byCharWrapping // 代償: byCharWrapping を選ぶと // © 2026 TVer INC. UILabel は末尾省略(…)を描かない。
決めるのは⼈間 仕様の中⾝を決めて返す PdM が決めきれないことを、動くものにして返す。 これスクロール追従とか、どうしたら違和感な さっき話した内容⼀旦プロトタイプ作ってみま いとか想像しながらPdMが規定するの難しい と思うので、僕らでできる「良い感じ」を作っ した!これベースに時間とって、どんな動作に するか相談させてください
て提案する形がスムーズかなと思います! iOSエンジニア / 2026-08-24 2026-06-24 「PRDに書いてある」から、仕様を書き⾜す側へ。 AIに決めさせられないことは、AIの外で決めて、持ち込む。 © 2026 TVer INC.
決めるのは⼈間 決めたら、仕組み化するまでが決定 決めたこと 置き直した先 次からどうなるか アーキテクチャ モジュール + 依存⽅向 lint
違反すると CI で PR が⽌まる 正しさの根拠 .claude/agents/ rules/ Confluence / Figma 同じ仕様から実装される 実機で動作を⾒てUI を 承認する UI パッケージで共通化する 同じUIパーツを利⽤すれば問題は今 後起こらない © 2026 TVer INC.
決めるのは⼈間 決めるのは⼤変 技術的に⼤変 • 正解が事前に分からない。試さないと決まらない • どの選択肢にも代償がある。何かを捨てることになる 精神的に⼤変 • 決めた後も、合っているか分からない
• 前の⾃分の判断を、⾃分で取り下げることになる AIで早くなっても決める⼤変さは変わらない © 2026 TVer INC.
まとめ AI時代における iOS設計の守り⽅と、⼈間の役割 • AIによってコミット数/PR数/リリース数が増えた • Lintやテストなどで設計を守る仕組みを構築していく • 仕組みにないものは⼈間が決める必要がある •
⼈間が決めた内容を再度仕組み化する 決めることは⼤変。決められるだけの技術⼒が必要 © 2026 TVer INC.
ご清聴ありがとうございました © 2026 TVer INC.