Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcod...

Avatar for yimajo yimajo
January 23, 2026

OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編

#potatotips 94で発表する資料

Avatar for yimajo

yimajo

January 23, 2026
Tweet

More Decks by yimajo

Other Decks in Programming

Transcript

  1. ϏϧυΛ044൛ʹࠩ͠ସ͑σόοά͢Δ TXJGUCVJMEΛ9DPEFͰσόοά w (JU)VC͔ΒTXJGUCVJMEΛHJUDMPOF w 9DPEFͰTXJGUCVJME1BDLBHFTXJGUΛ։͘ w %FCVH"UUBDIUP1SPDFTTCZ1*%PS/BNF w A48##VJME4FSWJDF#VOEMFAΛࢦఆ

    w ϒϨʔΫϙΠϯτΛషͬͯTXJGUCVJMEΛͱΊΒΕΔΑ͏ʹ͓ͯ͘͠ w TXJGUQBDLBHFEJTBCMFTBOECPYMBVODIYDPEF w ࣗಈͰ9DPEF͕։͖ϓϩδΣΫτΛࢦఆͰ͖ΔΑ͏ʹͳΔͷͰࢦఆ w Ϗϧυ͢Δ
  2. TXJGUQBDLBHFEJTBCMFTBOECPYMBVODIYDPEF TXJGUCVJMEΛ9DPEFͰ։͘ PQFO1BDLBHFTXJGU 9DPEFϏϧυ࣌ʹ9DPEFΛ TXJGUCVJMEʹࠩ͠ସ͍͑ͨ Έͳ͞ΜͷQSPKFDU 48##VJME4FSWJDF#VOEMF ϓϩηεʹରͯ͠ 48##VJME4FSWJDF#VOEMF ͱ͍͏໊Ͱ"UUBDI͠ͱ͘ͱ

    9DPEFͰ։͍ͨTXJGUCVJMEଆ͕ σόοΨʔͱͯ͠࢖͑Δ 9DPEF͕։͖ ϓϩδΣΫτΛબ୒Ͱ͖Δɻ ͦͷ9DPEFͰ͸؀ڥม਺ 9$##6*-%4&37*$&@1"5)Λ ੾Γସ͑ɺ TXJGUCVJMEࣗମͷύε͕౉Δɻ 9DPEF͸ϓϩδΣΫτΛ։͚ͩ͘Ͱ΋ QSFCVJME͕ಈ͘͸ͣͰͦͷͱ͖ 9$##6*-%4&37*$&@1"5)ͷTXJGUCVJME ͕ىಈ͢Δ͸ͣɻ ϏϧυΛ044൛ʹࠩ͠ସ͑Δ
  3. TXJGUCVJMEͬͯԿ͢Μͷʁ  ґଘͷ੔ཧ  ग़ྗ5BSHFU#VJME(SBQI  Ϗϧυܭըʢґଘͷௐ੔ʣ  ೖྗ5BSHFU#VJME(SBQI 

    ग़ྗ#VJME1MBO  ΠϯΫϦϝϯλϧϏϧυ൑ఆ  4XJGUίϯύΠϧ  $0CKFDUJWF$ίϯύΠϧ  -JOLFS  Ξηοτͷॲཧ
  4. TXJGUCVJMEͬͯԿ͢Μͷʁ  ґଘͷ੔ཧ  ग़ྗ5BSHFU#VJME(SBQI  Ϗϧυܭըʢґଘͷௐ੔ʣ  ೖྗ5BSHFU#VJME(SBQI 

    ग़ྗ#VJME1MBO  ΠϯΫϦϝϯλϧϏϧυ൑ఆ  4XJGUίϯύΠϧ  $0CKFDUJWF$ίϯύΠϧ  -JOLFS  Ξηοτͷॲཧ ϏϧυܭըϑΣʔζ͸ 9DPEF಺ͷ5BSHFU΍ 1BDLBHFTXJGUͰఆٛͨ͠ґଘΛղܾ͠ ϥΠϒϥϦʢϑϨʔϜϫʔΫʣΛ ࣗಈͰ%ZOBNJD4UBUJD-JOLʹ ੾Γସ͑ͯ͘ΕΔ
  5. TXJGUCVJMEͬͯԿ͢Μͷʁ  ґଘͷ੔ཧ  ग़ྗ5BSHFU#VJME(SBQI  Ϗϧυܭըʢґଘͷௐ੔ʣ  ೖྗ5BSHFU#VJME(SBQI 

    ग़ྗ#VJME1MBO  ΠϯΫϦϝϯλϧϏϧυ൑ఆ  4XJGUίϯύΠϧ  $0CKFDUJWF$ίϯύΠϧ  -JOLFS  Ξηοτͷॲཧ ϏϧυܭըϑΣʔζ͸ 9DPEF಺ͷ5BSHFU΍ 1BDLBHFTXJGUͰఆٛͨ͠ґଘΛղܾ͠ ϥΠϒϥϦʢϑϨʔϜϫʔΫʣΛ ࣗಈͰ%ZOBNJD4UBUJD-JOLʹ ੾Γସ͑ͯ͘ΕΔ "QQ 4UBUJD -JC ґଘؔ܎ʹ໰୊ͳ͘ࢦఆ΋ͳ͚Ε͹4UBUJD-JOL
  6. ·ͣ1BDLBHFTXJGUͰґଘؔ܎ٯసͷݪଇͷΑ͏ͳ͜ͱΛ΍Δ ʢҙਤͱͯ͠'FBUVSF͸*OGSBʹґଘͤͣ$POUSBDUT͸QSPUPDPM͚͕ͩ͋ΔɻԿ͕خ ͍͔͠ͱ͍͏ͱྫ͑͹*OGSBʹ'JSFCBTFJPTTELґଘ͕͋Δ͔Β'FBUVSF͕ͦͷढ͍ ʹґଘͤͣ'FBUVSFΛεΩʔϚʹͯ͠Ϗϧυͨ͠Β1SFWJFX͕ߴ଎ɺΈ͍ͨͳʣ products: [ .library( name: “Infrastructure” targets:

    [“Infrastructure”] ), .library( name: “Feature” targets: [“Feature”] ), .library( name: “Contracts” targets: [“Contracts”] ), ], targets: [ .target( name: “Feature” dependency: [“Contracts”] ), .target( name: “Contracts” dependency: [“”] ), .target( name: “Infrastructure ” dependency: [“Contracts”] ), ], $POUSBDUT 'FBUVSF *OGSBTUSVDUVSF staticͱ͔dynamicΛࢦఆͤͣ ͔ͭ֎෦ʹެ։͢Δͷ͸Target୯ҐͷΑ͏ʹͯ͠͠·͏ʢ͜Ε͕ϛεʣ
  7. ϫʔΫΞϥ΢ϯυͱ͔ͳ͍Μ͔ʁ w ݪҼ͔Βߟ࡯ w TXJGUCVJMEͷίʔυͰ͸ɺτοϓϨϕϧͷ֊૚ͷґଘΛվળͨ͠ޙɺ5BSHFUͷґଘͷνΣοΫ͕ෳ਺ஈ֊ w ཧ༝͸஌ΒΜ͚ͲɺτοϓϨϕϧͷνΣοΫͰ%ZOBNJD൑ఆ͸ߦͬͯΔ w ͦͷ%ZOBNJDʹͨ͠UBSHFUT΁ͷνΣοΫ͸εΩοϓͯ͠νΣοΫ͍ͯ͠ͳ͍Α͏ʹݟ͑Δ w

    ۩ମతʹ͸τοϓϨϕϧͷ"QQͱ&'͕ґଘ͍ͯ͠Δ*OGSBTUSVDUVSF1SPEVDUΛ%ZOBNJDʹͨ͠ޙɺͦ ͷ5BSHFUͰ͋Δ*OGSBTUSVDUVSFͷEFQFOEFODJFTͷνΣοΫΛεΩοϓͯ͠͠·͍ͬͯΔʁ w ͭ·Γɺஈ֊໨͚ͩͰॏෳνΣοΫͤ͞Ε͹ྑ͘ͳ͍ʁ w ۩ମతʹ͸τοϓϨϕϧͷஈ֊Ͱ5BSHFUͷॏෳݕ஌Λͤ͞ͳ͍Α͏ʹ͢ΔͨΊɺ1BDLBHFTXJGU Ͱެ։͢Δ1BDLBHF1SPEVDUΛ֎෦5BSHFUͱʹͳΔΑ͏ʹ͢Δ
  8. ϫʔΫΞϥ΢ϯυ products: [ // τοϓϨϕϧͷAppͱEF͔ΒLink͞ΕͯΔɻ .library( name: “Infrastructure” // Dynamicʹ൑ఆ͞ΕΔ

    targets: [“Infrastructure”] // ͜Ε͕εΩοϓʁ ), .library( // App͔ΒͷΈLink͞Εͯͨ name: “Feature” // static൑ఆ targets: [“Feature”] // ͜ͷઌͷґଘνΣοΫ͠ͳ͍ʁ ), .library( // App͔ΒͷΈLink͞Εͯͨ name: “Contracts” // Static൑ఆ targets: [“Contracts”] // ͜ͷઌͷґଘνΣοΫ͠ͳ͍ʁ ), ],
  9. ϫʔΫΞϥ΢ϯυ products: [ // τοϓϨϕϧͷAppͱEF͔ΒLink͞ΕͯΔɻ .library( name: “Infrastructure” // Dynamicʹ൑ఆ͞ΕΔ

    targets: [“Infrastructure”] // ͜Ε͕εΩοϓʁ ), .library( // App͔ΒͷΈLink͞Εͯͨ name: “Feature” // static൑ఆ targets: [“Feature”] // ͜ͷઌͷґଘνΣοΫ͠ͳ͍ʁ ), .library( // App͔ΒͷΈLink͞Εͯͨ name: “Contracts” // Static൑ఆ targets: [“Contracts”] // ͜ͷઌͷґଘνΣοΫ͠ͳ͍ʁ ), ], products: [ // ͜Ε͸App͔ΒͷΈLink͢Δ .library( name: “AppLib” targets: [ “Feature”, // Static൑ఆ // EFLibʹ΋͋ΔͷͰDynamic൑ఆ ”Infrastructure” ] ), // ͜Ε͸EF͔ΒͷΈLink͢Δ .library( name: “EFLib” targets: [ “Contracts” // Static൑ఆ // AppLibʹ΋͋ΔͷͰ “Infrastructure”, // Dynamic൑ఆ ɹ] ), ], // .targets: [] ͸ݩͷ··ґଘΛهड़ վળ