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
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcod...
Search
yimajo
January 23, 2026
Programming
970
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
#potatotips 94で発表する資料
ダイアモンド問題が失敗しているということを書いてますが、その原因についてはここの記述は古く間違っています。
yimajo
January 23, 2026
More Decks by yimajo
See All by yimajo
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
420
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
780
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
1
420
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
3
370
良いテストコードのために悪いテストコードを理解する - 不安定なテスト編: iOSアプリ開発ユニットテストの場合
yimajo
22
6.9k
TCAの Shared Stateって どういう仕組みになってんの?
yimajo
0
2.8k
Swift 5.9 からの Observation はiOS17 未満 からも使えて struct の変更検知もできるんすかね?
yimajo
2
1.2k
不安定なテストは200種類あんねん
yimajo
3
1.3k
TCA v0.19.0からのSwitchStore/CaseLetが良い
yimajo
0
2.1k
Other Decks in Programming
See All in Programming
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.7k
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
370
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
410
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
230
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.4k
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
310
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
290
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
210
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
200
ChromeでローカルLLM
ryu1013
0
200
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.8k
Getting Started with Vibe Coding
miccheng
0
190
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
550
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
Six Lessons from altMBA
skipperchong
29
4.6k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Music & Morning Musume
bryan
48
7.5k
Agile that works and the tools we love
rasmusluckow
331
22k
The SEO Collaboration Effect
kristinabergwall1
1
620
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
680
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
48k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Transcript
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編 2026.1.23 #potatotips 94 @yimajo
ビルドをOSS版に差し替える どういう仕組み? • GUIのXcodeもビルドシステムをサービスとして切り出している • Xcodeはサービスとプロセス間通信をしてる Xcode SWBBuildService (旧名: XCBBuildService)
ビルドをOSS版に差し替える どういう仕組み? • GUIのXcodeもビルドシステムをサービスとして切り出している • Xcodeはサービスとプロセス間通信をしてる • 切り出したswift-buildをデバッグ実行さえもできる Xcode OSSのswift-buildを参照するよう
に環境変数でパスを変える Xcodeによって本来 起動されるswift-build cloneしたswift-build
ビルドをOSS版に差し替えデバッグする swift-buildをXcodeでデバッグ • GitHubからswift-buildをgit clone • Xcodeでswift-build/Package.swiftを開く • Debug >
Attach to Process by PID or Name • ̀SWBBuildServiceBundlèを指定 • ブレークポイントを貼ってswift-buildをとめられるようにしておく • $ swift package --disable-sandbox launch-xcode • 自動でXcodeが開きプロジェクトを指定できるようになるので指定 • ビルドする
ビルドをOSS版に差し替える SWBBuildServiceBundle 4: Xcodeはプロジェクトを開くだけでも prebuildが動くはずでそのとき XCBBUILDSERVICE̲PATHのswift-build が起動するはず。 2:プロセスに対して SWBBuildServiceBundle という名でAttachしとくと
Xcodeで開いたswift-build側が デバッガーとして使える 1:swift-buildをXcodeで開く $ open Package.swift $ swift package --disable-sandbox launch-xcode 3: Xcodeが開き プロジェクトを選択できる。 そのXcodeでは環境変数 XCBBUILDSERVICE̲PATHを 切り替え、 swift-build自体のパスが渡る。 Xcode: ビルド時にXcodeを swift-buildに差し替えたい みなさんのproject
これで自分のプロジェクトでビルド結果がおかしな結果に なった時、ビルドの過程を実際にデバッグ実行させられる -LTは以上です。ご清聴ありがとうございました-
おまけ
ビルド結果がおかしい とは何? そもそもswift-buildって何してんの?
swift-buildって何すんの? 1. 依存の整理 1. 出力: TargetBuildGraph 2. ビルド計画(依存の調整) ビルド計画フェーズは Xcode内のTargetや
Package.swiftで定義した依存を解決し 1. 入力: TargetBuildGraph 2. 出力: BuildPlan 3. インクリメンタルビルド判定 4. Swiftコンパイル 5. C/Objective-Cコンパイル ライブラリ(フレームワーク)を 自動でDynamic/Static Linkに 切り替えてくれる 6. Linker App 7. アセットの処理 Static Lib 依存関係に問題なく指定もなければStatic Link
実際にプロジェクトを作ってみよう あえてダイアモンド依存問題のあるようにつくる
何がDynamic/Staticか見てみよう otool/nmコマンドで中身がわかる AppName.app AppName otool -LはDynamic Linkしているパスがわかる AppName.debug.dylib Contracts.framework Frameworks/
EF.framework Infrastructure.framework Contracts.framework nm -gUはファイルの構造がわかるのでswift-demangleとくみ合わせると Static Linkされてるかがわかるので、 型が見つからなければStatic Linkでないとみなせる。
無限ループに ならないように 最後の値と現在の値が 違う場合にのみ ループを続ける処理。。。 これはループは抜けてるけど 問題は解決していない Diamondsが2のまま 解決していないやんけ…