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
250
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
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
VueプロジェクトをTypeScript7に対応させる- Side-by-Side戦略による一部高速化 -
koukimiura
0
110
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
140
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
900
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
680
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
210
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
550
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
150
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
330
AHC070解法紹介
eijirou
0
120
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
4.9M
The Invisible Side of Design
smashingmag
301
52k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Side Projects
sachag
456
43k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
540
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
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.