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
940
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
400
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
760
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
1
410
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
3
360
良いテストコードのために悪いテストコードを理解する - 不安定なテスト編: 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
残高管理から台帳サービスへの進化
artoy
1
200
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2.5k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
570
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
1
190
AmebaブログはKMPから卒業します
kmars0605
0
200
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.9k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
220
JIS keyboard support in Omarchy
lef237
0
130
AWSに止められる覚悟してますか?
morizo_1984
2
540
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
23k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
The SEO Collaboration Effect
kristinabergwall1
1
590
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
310
The SEO identity crisis: Don't let AI make you average
varn
0
590
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Done Done
chrislema
187
17k
KATA
mclloyd
PRO
35
16k
Building Applications with DynamoDB
mza
96
7.2k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
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のまま 解決していないやんけ…