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
UIKitにSwiftUIを埋め込んだら 罠にハマった話
Search
Hayate Kuronuma
May 12, 2026
Programming
14
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UIKitにSwiftUIを埋め込んだら 罠にハマった話
Hayate Kuronuma
May 12, 2026
More Decks by Hayate Kuronuma
See All by Hayate Kuronuma
本番だけWebViewが500エラーになる
hayatekuronuma
0
47
ユーザー価値を届け続けるために、ウォンテッドリーが大切にしている文化
hayatekuronuma
0
6
Other Decks in Programming
See All in Programming
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
280
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
APNsからLive Activityを開始する話
yumnumm
0
150
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
Workers Cache を知る
syumai
0
340
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
440
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
340
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
690
ジョジョの世界をXRで再現する
mofurune
0
120
FreeBSDでZabbixを動かす
kenkino
0
360
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
620
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
740
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
270
How to train your dragon (web standard)
notwaldorf
96
6.8k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
570
Balancing Empowerment & Direction
lara
6
1.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
260
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
WENDY [Excerpt]
tessaabrams
14
40k
Transcript
© 2026 Wantedly, Inc. UIKitにSwiftUIを埋め込んだら 罠にハマった話 #24 Mobile勉強会 ウォンテッドリー ×
チームラボ × Sansan Apr.21 2026 - Hayate Kuronuma
© 2026 Wantedly, Inc. 名前:黒沼 疾風 入社日:2025.09 ポジション:iOSエンジニア 性格診断:コントリビューター 自己紹介
hayate_k_eng
© 2026 Wantedly, Inc. 01 やったこと 02 起きた不具合 03 原因
04 修正と教訓 目次
© 2026 Wantedly, Inc. やったこと 01
© 2026 Wantedly, Inc. UIKitベースの応募モーダルに、 SwiftUIのチェックボタン群を 埋め込んだ • UIHostingController で
ラップ • 親子関係を定義: addChild → addSubview UIKitの画面にSwift UIを部分導入
© 2026 Wantedly, Inc. 同一モーダル内で複数 Sceneを切り替えて表示している UIKitの画面にSwift UIを部分導入 options loading
completed
© 2026 Wantedly, Inc. 1. モーダル内の Viewを全て非表示 2. 対象のSceneだけ表示 UIKitの画面にSwift
UIを部分導入 Control Logic isHidden = true / false で制御
© 2026 Wantedly, Inc. 起きた不具合 02
© 2026 Wantedly, Inc. プレミアムプランユーザーは応募後にメッセージ送信をすることができる 前提
© 2026 Wantedly, Inc. プレミアムユーザーが メッセージを入力出来なくなった! (キーボードの表示にとても時間がかかるようになった)
© 2026 Wantedly, Inc. 原因 03
© 2026 Wantedly, Inc. 起きていたこと CPU負荷:高 メッセージ入力画面において、 CPU負荷が 高まっている メソッドの呼び出し回数
viewDidLayoutSubviews() 約57,000回 の異常な呼び出しを検知
© 2026 Wantedly, Inc. 仮説:キーボード表示がトリガー? キーボードなし viewDidLayoutSubviews は1回だけになった キーボードあり 57,000回のレイアウトループが発生
結論:キーボード表示がトリガーだった
© 2026 Wantedly, Inc. レイアウトループの流れ 1. メッセージ入力モーダルでキーボード表示 2. キーボード表示時のレイアウト調整で layoutIfNeeded()を実行
3. Viewのレイアウト更新が走る 4. isHiddenで隠していたUIHostingViewがレイアウト更新対象になる 5. UIHostingViewがさらにレイアウト更新を要求しているよう(ブラックボックス)
© 2026 Wantedly, Inc. 修正と教訓 04
© 2026 Wantedly, Inc. HostingControllerをViewから完全に削除 レイアウトループの原因となっていた UIHostingControllerを整理し、Viewから完全に削除 表示された🙌
© 2026 Wantedly, Inc. 表示しないHostingViewは removeしよう 教訓・まとめ isHiddenで隠しても、View階層に残ったUIHostingControllerが レイアウトループの原因になりうるケースがある
© 2026 Wantedly, Inc.
© 2026 Wantedly, Inc. ご清聴ありがとうございました!