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
930
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
380
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
750
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
1
410
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
3
350
良いテストコードのために悪いテストコードを理解する - 不安定なテスト編: iOSアプリ開発ユニットテストの場合
yimajo
22
6.8k
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
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
310
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
410
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
220
Intent as Code
shoppingjaws
6
1.1k
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
140
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
240
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
280
Webの地図
yosuke_furukawa
PRO
6
4.9k
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
18
19k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
20
6.5k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.5k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Product Roadmaps are Hard
iamctodd
55
13k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
510
Leo the Paperboy
mayatellez
10
2.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
The agentic SEO stack - context over prompts
schlessera
0
940
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Producing Creativity
orderedlist
PRO
348
41k
Ruling the World: When Life Gets Gamed
codingconduct
0
370
Embracing the Ebb and Flow
colly
88
5.2k
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のまま 解決していないやんけ…