Codex ã®iOSã¢ããªéçºã®ããã®ããã³ãããŸãšã
以äžã®èšäºãé¢çœãã£ãã®ã§ãç°¡åã«ãŸãšããŸããã
1. iOSã¢ããªã®ãã«ã
1.1 ã¯ããã«
iOS SwiftUIãããžã§ã¯ãã®ã²ãªåœ¢ãäœæããã«ã¯ãCodexãã䜿çšãããã«ãã«ãŒãã¯ãxcodebuildããŸãã¯ãTuistãã䜿çšããŠCLIåªå ã§é²ããäœæ¥ãé«åºŠåããã«ã€ããŠãXcodeBuildMCPããSwiftUIã«ç¹åããã¹ãã«ã远å ããŸãã
1-2. ã¹ãã«ãšãã©ã°ã€ã³
ã»Build iOS Apps
SwiftUI UIã®æ§ç¯ãŸãã¯ãªãã¡ã¯ã¿ãªã³ã°ãLiquid Glassãªã©ã®ææ°ã®iOSãã¿ãŒã³ã®æ¡çšãã©ã³ã¿ã€ã ããã©ãŒãã³ã¹ã®ç£æ»ããããŠXcodeBuildMCPãæŽ»çšããã¯ãŒã¯ãããŒã«ããã·ãã¥ã¬ãŒã¿äžã§ã®ã¢ããªã®ãããã°ãå®çŸããŸãã
1-3. ã¢ããªã®ã¹ã±ã«ãã³åãšãã«ãã«ãŒãã®æ§ç¯
ã¢ããªã®æ°èŠéçºã¯ãã·ã³ãã«ãªããã³ããããå§ããŸããCodexã«iOS SwiftUIã¹ã¿ãŒã¿ãŒã¢ããªã®ã¹ã±ã«ãã³åãäŸé ŒããããŒã«ã«ç°å¢ã§ãã«ãã¢ã¯ã·ã§ã³ã«çŽä»ããããå°ããªãã«ãïŒèµ·åã¹ã¯ãªãããäœæããŸãã
ã«ãŒãã¯CLIãã¡ãŒã¹ãã§é²ããŸããAppleã®ãxcodebuildãã¯ãã¹ããŒã ã®äžèŠ§è¡šç€ºããã«ãããã¹ããã¢ãŒã«ã€ãããã¹ãçšãã«ãããã«ããªããã¹ããšãã£ãã¢ã¯ã·ã§ã³ãã¿ãŒããã«ããå®è¡ã§ãããããCodexã¯Xcode GUIã«åãæ¿ããã«ãšãŒãžã§ã³ãã«ãŒãå ã§äœæ¥ãç¶ããããšãã§ããŸãã
ããã¯ãªãŒã³ãªãããžã§ã¯ããžã§ãã¬ãŒã¿ãŒãå¿ èŠã§ããµãŒãããŒãã£ããŒã«ã®äœ¿çšã«æ £ããŠããå Žåã¯ããTuistããæ¬¡ã®ã¹ããããšããŠé©ããŠããŸããTuistã¯GUIãå¿ èŠãšããã«Xcodeãããžã§ã¯ããçæã»ãã«ãã§ããCodexã¯ã¿ãŒããã«ããã¢ããªã®ãã«ããšèµ·åãè¡ãããšãã§ããŸãã
Xcodeãããžã§ã¯ãå šäœãæ±ããããé«åºŠãªèªååãå¿ èŠã«ãªã£ãå Žåã¯ããXcodeBuildMCPãã䜿çšããŸããã¹ããŒã ãã¿ãŒã²ãããã·ãã¥ã¬ãŒã¿ãŒå¶åŸ¡ãã¹ã¯ãªãŒã³ã·ã§ããããã°ãUIæäœãªã©ãéèŠã«ãªããåçŽãªã·ã§ã«ã³ãã³ãã ãã§ã¯å¯Ÿå¿ã§ããªããªã段éã§ãã
1-4. ã¹ãã«ã®æŽ»çš
æåã®æ®µéã§ã¯ãã¹ãã«ãMCPãµãŒããŒã¯å¿ ãããå¿ èŠãããŸãããäœæ¥ãå°éçã«ãªã£ããããã匷åãªSwiftUIã®èŠçŽãå®è£ ãããå Žåã«ãã¹ãã«ã远å ããŠãã ããã
ã»SwiftUI expert
å€ãã®ãã¹ããã©ã¯ãã£ã¹ãçµã¿èŸŒãŸãããæ±çšæ§ã®é«ã匷åãªSwiftUIã¹ãã«ã§ãã
ã»SwiftUI Pro
ææ°ã®APIãä¿å®æ§ãã¢ã¯ã»ã·ããªãã£ãããã©ãŒãã³ã¹ã«é¢ããå¹ åºãSwiftUIã¬ãã¥ãŒãè¡ãã¹ãã«ã§ãã
ã»Liquid Glass expert
CodexãiOS 26ã®æ°ããLiquid Glass APIãæ¡çšããã«ã¹ã¿ã ã³ã³ããŒãã³ããææ°ã®ã·ã¹ãã èšèšã«é©åãããã®ã«åœ¹ç«ã¡ãŸãã
ã»SwiftUI performance
æ©èœã®åäœãé ãå ŽåããSwiftUIãã¥ãŒã®æŽæ°ãã¹ã«çãããç¹ãããå Žåã«åœ¹ç«ã¡ãŸããäžè¬çãªSwiftUIã®ãšã©ãŒãã¹ãã£ã³ããä¿®æ£ãã¹ãç®æãšæã广çãªæ¹åç¹ãåªå é äœä»ãããã¬ããŒããçæããŸãã
ã»Swift concurrency expert
倿Žã劚ããŠããé£è§£ãªãšã©ãŒãã³ã³ãã€ã©èŠåãçºçããå Žåã«åœ¹ç«ã¡ãŸãã GPT-5.4ã§ã¯äœ¿çšé »åºŠã¯å°ãªããªããããããŸããããSwiftã®äžŠè¡åŠç蚺æããã€ãºã®å€ãå Žåã«åœ¹ç«ã¡ãŸãã
ã»SwiftUI view refactor
ãã¡ã€ã«ãµã€ãºãå°ããä¿ã¡ããªããžããªå šäœã§SwiftUIã³ãŒãã®äžè²«æ§ãé«ããã®ã«åœ¹ç«ã¡ãŸãã
ã»SwiftUI patterns
ã¢ããªã®æé·ã«åãããŠãäºæž¬å¯èœãª@Observableããã³@Environmentã¢ãŒããã¯ãã£ãã¿ãŒã³ãæ¡çšããã®ã«åœ¹ç«ã¡ãŸãã
ã¹ãã«ã®ã€ã³ã¹ããŒã«æ¹æ³ãšäœ¿ç𿹿³ã«ã€ããŠè©³ããã¯ãã¹ãã«ã®ããã¥ã¡ã³ããåç §ããŠãã ããã
1-5. ååŸ©äœæ¥
æåã®ããŒãžã§ã³ãåäœããããã«ãªã£ããããŸãã¯æ¢åã®ãããžã§ã¯ãããå§ããå Žåã¯ãUIãåäœã®ååŸ©äœæ¥ãéå§ã§ããŸãã
ãã®æ®µéã§ã¯ã倿Žãããå 容ãšå€æŽæ¹æ³ãå ·äœçã«èšè¿°ããŠãã ãããããã³ããã¬ã€ã€ãŒãæç¢ºã«å®çŸ©ããŠãã ãããCodexã«å¯ŸããŠãæ°èŠãªããžããªã§äœæ¥ããŠããã®ããæ¢åã®Xcodeãããžã§ã¯ãã§äœæ¥ããŠããã®ããã©ã®iOSããã€ã¹ãŸãã¯ãããã€ã¡ã³ãã¿ãŒã²ããã§åäœãç¶æããå¿ èŠãããã®ãââããããŠã©ã®ãããªæ€èšŒã«ãŒããæåŸ ããŠããã®ããäŒããŠãã ããã
1-6. ããã³ããäŸ
æ¢åã®ã¢ããªã«æ©èœã远å ãããå ŽåãCodexã«æ¬¡ã®ãããªå€æŽäŸé Œãè¡ãããšãã§ããŸãã
Add the onboarding flow for this SwiftUI app.
Constraints:
- Reuse existing models, navigation patterns, and shared utilities.
- Use XcodeBuildMCP to list the right targets or schemes, build the app, launch it, and capture screenshots if you need visual verification.
- Keep the implementation focused on iPhone and iPad unless I explicitly ask for a shared iOS/macOS abstraction.
- Tell me exactly which scheme, simulator, and checks you used.
Implement the slice, verify it with the smallest relevant build or run loop, and summarize what changed.ãã®SwiftUIã¢ããªã®ãªã³ããŒãã£ã³ã°ãããŒã远å ããŠãã ããã
Constraints:
- æ¢åã®ã¢ãã«ãããã²ãŒã·ã§ã³ãã¿ãŒã³ãããã³å ±æãŠãŒãã£ãªãã£ãåå©çšããŠãã ããã
- XcodeBuildMCPã䜿çšããŠãé©åãªã¿ãŒã²ãããŸãã¯ã¹ããŒã ããªã¹ãã¢ããããã¢ããªããã«ããèµ·åããå¿ èŠã«å¿ããŠã¹ã¯ãªãŒã³ã·ã§ããããã£ããã£ããŠãã ããã
- iOS/macOSå ±éã®æœè±¡åãæç€ºçã«èŠæ±ããªãéããå®è£ ã¯iPhoneãšiPadã«ç¹åããŠãã ããã
- 䜿çšããã¹ããŒã ãã·ãã¥ã¬ãŒã¿ãããã³ãã§ãã¯ãæ£ç¢ºã«å ±åããŠãã ããã
ã¹ã©ã€ã¹ãå®è£ ããæå°éã®é¢é£ãããã«ããŸãã¯å®è¡ã«ãŒãã§æ€èšŒãã倿Žç¹ãèŠçŽããŠãã ããã
1-7. å®è·µçãªãã³ã
(1) åºæ¬ããå§ãã
æ°èŠéçºã§ã¯ããŸãã·ã³ãã«ãªããã³ããããå§ããŸããCodexã«SwiftUIã¹ã¿ãŒã¿ãŒã¢ããªã®ã¹ãã£ãã©ãŒã«ãã£ã³ã°ãäŸé ŒããããŒã«ã«ç°å¢ã§ãã«ãã¢ã¯ã·ã§ã³ã«çŽä»ãããããç°¡åãªãã«ãïŒèµ·åã¹ã¯ãªãããäœæããŸããæåã®æ®µéã§ã¯ãç¹å¥ãªã¹ãã«ãMCPãµãŒããŒã¯å¿ èŠãããŸããã
(2) ä¿¡é Œæ§ã®é«ãå°ããªæ€èšŒã«ãŒããæŽ»çš
倿Žãå ãããã³ã«ãCodexã«ã倿Žå 容ãå®éã«æ€èšŒã§ããæå°éã®ã³ãã³ããå®è¡ããããã«æç€ºããŸããããåºç¯ãªãã«ãã¯åŸããæ¡åŒµããŸããããããããšã§ãç·šéããšã«ã¢ããªå šäœã®ãã«ããå¿ èŠã«ãªããšããåæã眮ããã«ãCodexã®é«éæ§ãç¶æã§ããŸãã
(3) ã«ãŒãã¯CLIåªå ã§å®è¡
ã«ãŒãã¯CLIåªå ã§å®è¡ããŸããAppleã®xcodebuildããŒã«ã䜿ãã°ãã¿ãŒããã«ããã¹ããŒã ã®äžèŠ§è¡šç€ºããã«ãããã¹ããã¢ãŒã«ã€ãããã¹ãçšãã«ãããã«ããªããã¹ããªã©ã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸããããã«ãããCodexã¯Xcode GUIã«åãæ¿ããã«ããšãŒãžã§ã³ãã«ãŒãå ã§åŠçãå®è¡ã§ããŸãã
(4) XcodeBuildMCPãæŽ»çš
Xcodeãããžã§ã¯ãå šäœãæ±ããããé«åºŠãªèªååãå¿ èŠã«ãªã£ãããããã«XcodeBuildMCPã䜿ãå§ããŸããã¹ããŒã ãã¿ãŒã²ãããã·ãã¥ã¬ãŒã¿ãŒå¶åŸ¡ãã¹ã¯ãªãŒã³ã·ã§ããããã°ãUIæäœãªã©ãéèŠã«ãªããåçŽãªã·ã§ã«ã³ãã³ãã ãã§ã¯å¯Ÿå¿ã§ããªããªã段éã§ãã
2. SwiftUIç»é¢ã®ãªãã¡ã¯ã¿ãªã³ã°
2-1. ã¯ããã«
CodexãšãBuild iOS Appsããã©ã°ã€ã³ã䜿çšããŠãé·ãSwiftUIãã¥ãŒãå°çšã®ã»ã¯ã·ã§ã³ãã¥ãŒã«åå²ããå¯äœçšãbodyããåé¢ããStateãšObservationã®äœ¿çšãå®å®ãããäžèŠãªãã¥ãŒã¢ãã«ãå°å ¥ããã®ã§ã¯ãªããMVãã¡ãŒã¹ãã®ãªãã¡ã¯ã¿ãªã³ã°ãç¶æããŸãã
2-2. ã¹ãã«ãšãã©ã°ã€ã³
ã»Build iOS Apps
SwiftUIãã¥ãŒã®ãªãã¡ã¯ã¿ãªã³ã°ã¹ãã«ã䜿çšãããšãå°çšã®ãµããã¥ãŒãæœåºããå®å®ããããŒã¿ãããŒãç¶æããObservationã®äœ¿çšãç°¡çŽ åããCodexãå€§èŠæš¡ãªSwiftUIç»é¢ãç·šéããŠããéãåäœããã®ãŸãŸç¶æã§ããŸãã
2-3. ã¹ã¿ãŒã¿ãŒããã³ãã
Use the Build iOS Apps plugin and its SwiftUI view refactor skill to clean up [NameOfScreen.swift] without changing what the screen does or how it looks.
Constraints:
- Preserve behavior, layout, navigation, and business logic unless you find a bug that must be called out separately.
- Default to MV, not MVVM. Prefer `@State`, `@Environment`, `@Query`, `.task`, `.task(id:)`, and `onChange` before introducing a new view model, and only keep a view model if this feature clearly needs one.
- Reorder the view so stored properties, computed state, `init`, `body`, view helpers, and helper methods are easy to scan top to bottom.
- Extract meaningful sections into dedicated `View` types with small explicit inputs, `@Binding`s, and callbacks. Do not replace one giant `body` with a pile of large computed `some View` properties.
- Move non-trivial button actions and side effects out of `body` into small methods, and move real business logic into services or models.
- Keep the root view tree stable. Avoid top-level `if/else` branches that swap entirely different screens when localized conditional sections or modifiers are enough.
- Fix Observation ownership while refactoring: use `@State` for root `@Observable` models on iOS 17+, and avoid optional or delayed-initialized view models unless the UI genuinely needs that state shape.
- After each extraction, run the smallest useful build or test check that proves the screen still behaves the same.
Deliver:
- the refactored screen and any extracted subviews
- a short explanation of the new subview boundaries and data flow
- any places where you intentionally kept a view model and why
- the validation checks you ran to prove behavior stayed intactBuild iOS Appsãã©ã°ã€ã³ãšãã®SwiftUIãã¥ãŒãªãã¡ã¯ã¿ãªã³ã°ã¹ãã«ã䜿çšããŠã[NameOfScreen.swift]ã®ç»é¢ã®åäœãå€èгã倿Žããã«ã³ãŒããæŽçããŸãã
Constraints:
- å¥éå ±åããå¿ èŠã®ãããã°ãèŠã€ãããªãéããåäœãã¬ã€ã¢ãŠããããã²ãŒã·ã§ã³ãããžãã¹ããžãã¯ã¯ç¶æããŸãã
- MVVMã§ã¯ãªãMVãããã©ã«ããšããŸããæ°ãããã¥ãŒã¢ãã«ãå°å ¥ããåã«ã`@State`ã`@Environment`ã`@Query`ã`.task`ã`.task(id:)`ã`onChange`ãåªå ãããã®æ©èœã«ãã¥ãŒã¢ãã«ãæããã«å¿ èŠãªå Žåã«ã®ã¿ãã¥ãŒã¢ãã«ãä¿æããŸãã
- ä¿åããããã£ãèšç®ç¶æ ã`init`ã`body`ããã¥ãŒãã«ããŒããã«ããŒã¡ãœãããäžããäžãŸã§ç°¡åã«ã¹ãã£ã³ã§ããããã«ããã¥ãŒã®é åºã倿ŽããŸãã
- æå³ã®ããã»ã¯ã·ã§ã³ããå°ããªæç€ºçãªå ¥åã`@Binding`ãã³ãŒã«ããã¯ãæã€å°çšã®`View`åã«æœåºããŸãã巚倧㪠`body` ãã倿°ã®èšç®æžã¿ `some View` ããããã£ã§çœ®ãæããªãã§ãã ããã
- è€éãªãã¿ã³æäœãå¯äœçšã¯ `body` ããå°ããªã¡ãœããã«ç§»åããå®éã®ããžãã¹ããžãã¯ã¯ãµãŒãã¹ãŸãã¯ã¢ãã«ã«ç§»åããŠãã ããã
- ã«ãŒããã¥ãŒããªãŒãå®å®ãããŠãã ãããããŒã«ã©ã€ãºãããæ¡ä»¶ã»ã¯ã·ã§ã³ã修食åã§ååãªå Žåã¯ãå šãç°ãªãç»é¢ãåãæ¿ãããããã¬ãã«ã® `if/else` åå²ã¯é¿ããŠãã ããã
- ãªãã¡ã¯ã¿ãªã³ã°äžã¯ Observation ã®æææš©ãä¿®æ£ããŠãã ãããiOS 17 以éã§ã¯ãã«ãŒãã® `@Observable` ã¢ãã«ã«ã¯ `@State` ã䜿çšããUI ãæ¬åœã«ãã®ç¶æ æ§é ãå¿ èŠãšããå Žåãé€ãããªãã·ã§ã³ãŸãã¯é å»¶åæåã®ãã¥ãŒã¢ãã«ã¯é¿ããŠãã ããã
- åæœåºåŸã«ã¯ãç»é¢ã®åäœã以åãšåãã§ããããšã蚌æã§ããæå°éã®æçšãªãã«ããŸãã¯ãã¹ããã§ãã¯ãå®è¡ããŠãã ããã
Deliver:
- ãªãã¡ã¯ã¿ãªã³ã°åŸã®ç»é¢ãšæœåºããããµããã¥ãŒ
- æ°ãããµããã¥ãŒã®å¢çãšããŒã¿ãããŒã«é¢ããç°¡åãªèª¬æ
- ãã¥ãŒã¢ãã«ãæå³çã«ä¿æããç®æãšãã®çç±
- åäœãç¶æãããŠããããšã蚌æããããã«å®è¡ããæ€èšŒãã§ãã¯
2-4. åäœã倿Žããã«ç»é¢ããªãã¡ã¯ã¿ãªã³ã°
ãã®ãŠãŒã¹ã±ãŒã¹ã¯ãSwiftUIãã¡ã€ã«ã巚倧ãªç»é¢ã«èšãäžãããã¡ãã£ãšãã倿Žã§ããªã¹ã¯ã䌎ããããªç¶æ³ãæ³å®ããŠããŸããç®çã¯ãæ©èœãåèšèšããããæ°ããã¢ãŒããã¯ãã£ãæ§ç¯ãããããããšã§ã¯ãããŸãããCodexã«åäœãšã¬ã€ã¢ãŠããç¶æããããã«æç€ºããç»é¢ãæç¢ºãªããŒã¿ãããŒãæã€å°ããªãµããã¥ãŒã«åå²ããããšã§ã次ã®å€æŽã®ã¬ãã¥ãŒã容æã«ããŸãã
ãã®ãããªã¯ãªãŒã³ã¢ããã«ã¯ããBuild iOS Appsããã©ã°ã€ã³ã䜿çšããŠãã ããããã®ãã©ã°ã€ã³ã®SwiftUIãã¥ãŒãªãã¡ã¯ã¿ãªã³ã°æ©èœã¯ãæçšãªæ¹æ³ã§èšèšææ³ã«åºã¥ããŠããŸããMVVMãããMVãåªå ããããžãã¹ããžãã¯ã¯ãµãŒãã¹ãŸãã¯ã¢ãã«ã«ä¿æããããŒã«ã«ãã¥ãŒã®ç¶æ ãšç°å¢äŸåé¢ä¿ãåªå çã«äœ¿çšããæ©èœã«ãã¥ãŒã¢ãã«ãæããã«å¿ èŠãªå Žåã«ã®ã¿ãã¥ãŒã¢ãã«ãä¿æããŸãã
2-5. Codexã«äŸé Œããå 容
ãŸããå ·äœçãªç»é¢ãã¡ã€ã«ã1ã€æå®ããCodexã«åäœãç¶æãã€ã€æ§é ãæ¹åããããäŸé ŒããŸããããã³ããã«çŽæ¥èšè¿°ãã䟡å€ã®ãããªãã¡ã¯ã¿ãªã³ã°ã«ãŒã«ã¯ä»¥äžã®ãšããã§ãã
ã»ç°å¢äŸåé¢ä¿ãä¿åããããã£ãèšç®ãããéãã¥ãŒç¶æ ãåæåãæ¬æããã¥ãŒãã«ããŒããã«ããŒã¡ãœãããäžããäžãŸã§å®¹æã«ã¹ãã£ã³ã§ããããã«ããã¡ã€ã«ã®é åºã倿ŽããŸãã
ã»æå³ã®ããã»ã¯ã·ã§ã³ããå°ããªæç€ºçãªå ¥åã@Bindingãã³ãŒã«ããã¯ãæã€å°çšã®ãã¥ãŒåã«æœåºããŸãã
ã»èšç®ããããã¥ãŒãã«ããŒã¯å°ãªããå°ããããŸãããã©ã€ããŒããªèšç®ããããã¥ãŒãã©ã°ã¡ã³ãã®é·ããªã¹ããšããŠã巚倧ãªç»é¢ãåæ§ç¯ããªãã§ãã ããã
ã»è€éãªãã¿ã³ã¢ã¯ã·ã§ã³ãšå¯äœçšã¯æ¬æããå€ããå®éã®ããžãã¹ããžãã¯ã¯ãµãŒãã¹ãŸãã¯ã¢ãã«ã«ç§»åããŸãã
ã»ã«ãŒããã¥ãŒããªãŒãå®å®ãããŸããç»é¢å šäœãåãæ¿ãããããã¬ãã«ã®if/elseåå²ããããã»ã¯ã·ã§ã³ãŸãã¯ä¿®é£Ÿåå ã®å±æçãªæ¡ä»¶åå²ãåªå ããŸãã
ã»Observationã®æææš©ã¯éæä¿®æ£ããŸããiOS 17以éã®ã«ãŒã@Observableã¢ãã«ã®å Žåãææãã¥ãŒã¯ãããã@Stateã«æ ŒçŽããå¿ èŠããããŸããåŸæ¥ã®ãªãã¶ãŒããã«ã©ãããŒã¯ããããã€å ã§å¿ èŠãšãããå Žåã«ã®ã¿äœ¿çšããŠãã ããã
2-6. å°èŠæš¡ãªæ€èšŒã«ãŒããèŠæ±ãã
åäœãç¶æãããªãã¡ã¯ã¿ãªã³ã°ã«ã¯ããã®èšŒæ ãå¿ èŠã§ããCodex ã«ãæå³ã®ããæœåºãè¡ããã³ã«ãç»é¢ãæ€èšŒããæå°éã®ãã«ãããã¬ãã¥ãŒããã¹ãããŸãã¯ã·ãã¥ã¬ãŒã¿ãŒãã§ãã¯ãå®è¡ããããã«äŸé Œããæ§é çã«å€æŽãããéšåãšæå³çã«å€æŽãããªãã£ãéšåãèŠçŽããŠããããŸãã
2-7. å®è·µçãªãã³ã
(1) ãŸãã¯åå²ããããããã¢ãŒããã¯ãã£ã«ã€ããŠè°è«
ç»é¢ã倧ããããå Žåã¯ãæ°ããæœè±¡åã¬ã€ã€ãŒãå°å ¥ããåã«ãCodex ã«ã»ã¯ã·ã§ã³ãã¥ãŒã®æœåºãäŸé ŒããŠãã ãããããçããããæç¢ºãªãã¥ãŒããªãŒãäœæããããšã§ããã¥ãŒã¢ãã«ã远å ããå¿ èŠæ§ããªããããšãã§ããŸãã
(2) åãµããã¥ãŒã«ã¯ãå¯èœãªéãæå°éã®ã€ã³ã¿ãŒãã§ãŒã¹ãæž¡ã
ãã¹ãŠã®åãã¥ãŒã«èŠªã¢ãã«å šäœãæž¡ãããããlet å€ã@Bindingsãããã³ç®çãéå®ãããã³ãŒã«ããã¯ã䜿çšããæ¹ãæãŸããã§ããããã«ãããæœåºãããåã»ã¯ã·ã§ã³ã®ãã¬ãã¥ãŒã容æã«ãªãã誀ã£ãŠç»é¢å šäœã«çµåããŠããŸããªã¹ã¯ã軜æžã§ããŸãã
(3) Codex ã«æå³çãªå€æŽãªããææ
å®å šãªãªãã¡ã¯ã¿ãªã³ã°ã®ããã«ã¯ãCodex ã倿ŽããŠããªãé ç®ïŒããžãã¹ã«ãŒã«ãããã²ãŒã·ã§ã³åäœãæ°žç¶åãåæã»ãã³ãã£ã¯ã¹ããŠãŒã¶ãŒã«è¡šç€ºãããã¬ã€ã¢ãŠããªã©ïŒãæç€ºçã«ãªã¹ãã¢ããããŠããããšäŸ¿å©ã§ããããã«ãããã¬ãã¥ãŒãã¯ããã«è¿ éã«ãªããŸãã
3. Liquid Glass ã®æ¡çš
3-1. ã¯ããã«
CodexãšãBuild iOS Appsããã©ã°ã€ã³ã䜿çšããŠãæ¢åã®iPhoneããã³iPadã®UIãç£æ»ããã«ã¹ã¿ã ã®ãŒãã广ããããªã¢ã«ã¹ã¿ãã¯ããã€ãã£ãã®ãLiquid Glassãã«çœ®ãæããiOS 26ã®å¯çšæ§ãã§ãã¯ãšã·ãã¥ã¬ãŒã¿ãŒã«ããæ€èšŒã§ç§»è¡ã®å®å šæ§ã確ä¿ããŸãã
3-2. ã¹ãã«ãšãã©ã°ã€ã³
ã»Build iOS Apps
SwiftUI Liquid GlassãSwiftUI UIãã¿ãŒã³ãããã³ã·ãã¥ã¬ãŒã¿ãŒãããã°ã®ã¹ãã«ã掻çšããŠãiOSç»é¢ãææ°åãããã€ãã£ãã®ã¬ã©ã¹å¹æãæ¡çšããiOS 26ã·ãã¥ã¬ãŒã¿ãŒã§çµæãæ€èšŒããŸãã
3-3. ã¹ã¿ãŒã¿ãŒããã³ãã
Use the Build iOS Apps plugin and its SwiftUI Liquid Glass skill to migrate one high-traffic flow in this app to Liquid Glass.
Constraints:
- Treat this as an iOS 26 + Xcode 26 migration, but preserve a non-glass fallback for earlier deployment targets with `#available(iOS 26, *)`.
- Audit the flow first. Call out custom backgrounds, blur stacks, chips, buttons, sheets, and toolbars that should become native Liquid Glass and call out surfaces that should stay plain content.
- Prefer system controls and native APIs like `glassEffect`, `GlassEffectContainer`, `glassEffectID`, `.buttonStyle(.glass)`, and `.buttonStyle(.glassProminent)` over custom blurs. Use `glassEffectID` with `@Namespace` only when a real morphing transition improves the flow.
- Apply `glassEffect` after layout and visual modifiers, keep shapes consistent, and use `.interactive()` only on controls that actually respond to touch.
- Use XcodeBuildMCP to build and run on an iOS 26 simulator, capture screenshots for the migrated flow, and mention exactly which scheme, simulator, and checks you used.
Deliver:
- a concise migration plan for the flow
- the implemented Liquid Glass slice
- the fallback behavior for pre-iOS 26 devices
- the simulator validation steps and screenshots you usedBuild iOS Appsãã©ã°ã€ã³ãšãã®SwiftUI Liquid Glassã¹ãã«ã䜿çšããŠããã®ã¢ããªå ã®ãã©ãã£ãã¯éã®å€ããããŒãLiquid Glassã«ç§»è¡ããŸãã
Constraints:
- ããã¯iOS 26 + Xcode 26ãžã®ç§»è¡ãšããŠæ±ããŸããã以åã®ãããã€ã¡ã³ãã¿ãŒã²ããåãã«ã`#available(iOS 26, *)`ã䜿çšããŠéLiquid Glassã®ãã©ãŒã«ããã¯ãç¶æããŸãã
- ãŸããããŒãç£æ»ããŸãããã€ãã£ãLiquid Glassã«ç§»è¡ãã¹ãã«ã¹ã¿ã èæ¯ããã©ãŒã¹ã¿ãã¯ããããããã¿ã³ãã·ãŒããããŒã«ããŒãç¹å®ãããã¬ãŒã³ã³ã³ãã³ãã®ãŸãŸã«ããŠããã¹ããµãŒãã§ã¹ãç¹å®ããŸãã
- ã«ã¹ã¿ã ãã©ãŒãããã`glassEffect`ã`GlassEffectContainer`ã`glassEffectID`ã`.buttonStyle(.glass)`ã`.buttonStyle(.glassProminent)`ãªã©ã®ã·ã¹ãã ã³ã³ãããŒã«ãšãã€ãã£ãAPIãåªå ããŸãã`glassEffectID`ã`@Namespace`ãšãšãã«äœ¿çšããã®ã¯ãå®éã®ã¢ãŒãã£ã³ã°ãã©ã³ãžã·ã§ã³ããããŒãæ¹åããå Žåã«ã®ã¿è¡ããŸãã
- ã¬ã€ã¢ãŠãããã³ããžã¥ã¢ã«ä¿®é£Ÿåã®åŸã« `glassEffect` ãé©çšãã圢ç¶ã®äžè²«æ§ãä¿ã¡ãã¿ããã«å®éã«åå¿ããã³ã³ãããŒã«ã«ã®ã¿ `.interactive()` ã䜿çšããŠãã ããã
- XcodeBuildMCP ã䜿çšã㊠iOS 26 ã·ãã¥ã¬ãŒã¿ã§ãã«ãããã³å®è¡ããç§»è¡åŸã®ãããŒã®ã¹ã¯ãªãŒã³ã·ã§ããããã£ããã£ãã䜿çšããã¹ããŒã ãã·ãã¥ã¬ãŒã¿ãããã³ãã§ãã¯æ¹æ³ãæèšããŠãã ããã
Deliver:
- ãããŒã®ç°¡æœãªç§»è¡èšç»
- å®è£ æžã¿ã® Liquid Glass ã¹ã©ã€ã¹
- iOS 26 ããåã®ããã€ã¹åãã®ãã©ãŒã«ããã¯åäœ
- 䜿çšããã·ãã¥ã¬ãŒã¿æ€èšŒæé ãšã¹ã¯ãªãŒã³ã·ã§ãã
3-4. iOS 26ãããŒã¹ã©ã€ã³ãšããŠéçºãéå§
ãLiquid GlassããiOS 26ããã³Xcode 26ãžã®ç§»è¡ãããžã§ã¯ããšããŠæåã«æ±ããŸããiOS 26 SDKã䜿çšããŠã¢ããªãåãã«ãããæšæºã®SwiftUIã³ã³ãããŒã«ããèªåçã«ååŸãããèŠçŽ ãæ€èšŒããŸãããã®åŸãCodexã«ããŸã å¹³åŠããããéãããããŸãã¯ã·ã¹ãã ã¯ããŒã ããä¹é¢ããããŠããã«ã¹ã¿ã ããŒãã®åèšèšãäŸé ŒããŸãã
ã¢ããªã以åã®iOSããŒãžã§ã³ããµããŒãããŠããå Žåã¯ããã®å¶çŽãäºåã«æç¢ºã«ããŠãã ããããBuild iOS Appsããã©ã°ã€ã³ã®SwiftUI Liquid Glassã¹ãã«ã¯ãæ°ãã Liquid Glass å°çšAPI ã #available(iOS 26, *) ã§å¶éããå€ãããã€ã¹ã§ãé©åã«è¡šç€ºããããã©ãŒã«ããã¯ãã¹ãçšæããŠããå¿ èŠããããŸãã
3-5. iOSãã©ã°ã€ã³ã®æŽ»çš
Codexã§SwiftUIã®UI倿Žãšã·ãã¥ã¬ãŒã¿ãŒã«ããæ€èšŒãçµã¿åããããå Žåã¯ããBuild iOS Appsããã©ã°ã€ã³ã䜿çšããŠãã ãããLiquid Glassã®äœæ¥ã§ã¯ãCodexã«1ã€ã®ãããŒã®ç£æ»ãäŸé Œããå°æ°ã®ãµãŒãã§ã¹ãç§»è¡ããiOS 26ã·ãã¥ã¬ãŒã¿ãŒã§çµæãèµ·åããã¹ã³ãŒããæ¡å€§ããåã«ã¹ã¯ãªãŒã³ã·ã§ããããã£ããã£ããã®ã广çã§ãã
ãã®ãã©ã°ã€ã³ã«ã¯ãããã³ããã«çµã¿èŸŒããšäŸ¿å©ãªããã©ã«ãèšå®ãåããSwiftUI Liquid Glassã¹ãã«ãå«ãŸããŠããŸãã
ã»ã«ã¹ã¿ã ã®ãŒãããã¥ãŒãããããã€ãã£ãã®glassEffectãGlassEffectContainerãã¬ã©ã¹ãã¿ã³ã®ã¹ã¿ã€ã«ãglassEffectIDãã©ã³ãžã·ã§ã³ãåªå ããŠãã ããã
ã»ã¬ã€ã¢ãŠããšããžã¥ã¢ã«ã¢ãã£ãã¡ã€ã¢ã®åŸã«.glassEffect(...)ãé©çšããããšã§ããããªã¢ã«ãå®éã«æå³ãã圢ç¶ãå ã¿èŸŒã¿ãŸãã
ã»è€æ°ã®ãµãŒãã§ã¹ãäžç·ã«è¡šç€ºãããå Žåã¯ãé¢é£ããã¬ã©ã¹èŠçŽ ãGlassEffectContainerã§å²ãã§ãã ããã
ã».interactive()ã¯ãå®éã«ã¿ããã«åå¿ãããã¿ã³ãããããã³ã³ãããŒã«ã«ã®ã¿äœ¿çšããŠãã ããã
ã»åå¥ã®ã¬ã©ã¹åŠçãæ··åšãããã®ã§ã¯ãªããã³ãŒããŒã®åœ¢ç¶ãè²ãééãæ©èœå šäœã§äžè²«ããŠç¶æããŠãã ããã
ã»iOS 26ããåã®ããŒãžã§ã³åãã«ãéã¬ã©ã¹ãã©ãŒã«ããã¯æ©èœãç¶æããŠãã ããã
ãã©ã°ã€ã³ãšã¹ãã«ã®ã€ã³ã¹ããŒã«æ¹æ³ã«ã€ããŠè©³ããã¯ããã©ã°ã€ã³ãšã¹ãã«ã®ããã¥ã¡ã³ããåç §ããŠãã ããã
3-6. WWDCã®ã»ãã·ã§ã³ã芳ã
ãããã®WWDC25ã®ã»ãã·ã§ã³ã¯ãCodexã«å®éã®éçšãããŒã®ãªãã¡ã¯ã¿ãªã³ã°ãäŸé Œããåã«ãåèãšããŠæŽ»çšã§ããŸãã
ã»Meet Liquid Glass
ã»Get to know the new design system
ã»Build a SwiftUI app with the new design
ã»Build a UIKit app with the new design
ã»Whatâs new in SwiftUI
3-7. ç§»è¡èšç»ãä¿ããæ¬¡ã«ã¹ã©ã€ã¹ãå®è£
Codex ããã©ãã« Glass ãé 眮ãããïŒããšãä»ãããã¹ãŠã®ã³ãŒããèšè¿°ããããåãé¢ãããšã§ãLiquid Glass ã®ç§»è¡ã¯ããã¹ã ãŒãºã«é²ã¿ãŸãããŸãã¯ç°¡åãªç£æ»ãäŸé Œãããã®åŸããšãŒãžã§ã³ãã«ã·ãã¥ã¬ãŒã¿ãŒæ€èšŒä»ãã®èªå·±å®çµåã¹ã©ã€ã¹ãå®è£ ãããŸãã
3-8. å®è·µçãªãã³ã
(1) ãã¹ãŠãGlassåããªã
Liquid Glassã¯ã³ã³ãã³ãã®äžã«æç¢ºãªã³ã³ãããŒã«ã¬ã€ã€ãŒãäœæãããã®ã§ããããã¹ãŠã®ã«ãŒããå ãããã«ã«å€ããã¹ãã§ã¯ãããŸãããCodexã«ãã·ã¹ãã ãããªã¢ã«ãšç«¶åããè£ é£Ÿçãªèæ¯ãåé€ããå¯èªæ§ãæãéèŠãªç®æã§ã¯ãã¬ãŒã³ãªã³ã³ãã³ããç¶æããè²ä»ãã¯æå³çãªåŒ·èª¿ãäž»èŠãªã¢ã¯ã·ã§ã³ã«éå®ããããäŸé ŒããŠãã ããã
(2) ãã©ãã£ãã¯ã®å€ããããŒããã¯ããã
ã¿ãã«ãŒãã詳现ç»é¢ãã·ãŒããæ€çŽ¢ãµãŒãã§ã¹ããŸãã¯ãªã³ããŒãã£ã³ã°ãããŒã¯ãã¢ããªå šäœãäžåºŠã«ç§»è¡ããããããæåã®ç§»è¡å¯Ÿè±¡ãšããŠé©ããŠããŸããããã«ãããã¬ãã¥ãŒã容æã«ãªããã©ã®Liquid Glassã®æ±ºå®äºé ãåå©çšå¯èœãªã³ã³ããŒãã³ããã¿ãŒã³ã«ãã¹ãããæç¢ºã«ãªããŸãã
(3) ãã©ãŒã«ããã¯åäœãæ éã«ã¬ãã¥ãŒ
ãããã€å¯Ÿè±¡ãiOS 26æªæºã®å ŽåãCodexã«Liquid Glassã®ããŒãžã§ã³ãšãã©ãŒã«ããã¯ã®å®è£ ã䜵ããŠè¡šç€ºããããäŸé ŒããŠãã ããããã®ã¬ãã¥ãŒæé ã«ãããæå³ããªãAPIã®å¯çšæ§äœäžãæ€åºããææ°ã®ã·ãã¥ã¬ãŒã¿ã§ããåäœããªãç§»è¡ããªãªãŒã¹ããããšãåé¿ã§ããŸãã
4. iOSã¢ããªã®ã€ã³ãã³ãã®è¿œå
4-1. ã¯ããã«
CodexãšãBuild iOS Appsããã©ã°ã€ã³ã䜿çšããŠãã¢ããªããApp IntentããéããŠå ¬éãã¹ãã¢ã¯ã·ã§ã³ãšãšã³ãã£ãã£ãç¹å®ããã·ã§ãŒãã«ãããSpotlightãªã©ã®ã·ã¹ãã ã€ã³ã¿ãŒãã§ãŒã¹ã«ããããçµã¿èŸŒã¿ãå°æ¥çã«ã¯ã¢ã·ã¹ã¿ã³ãäž»å°ã®ã¯ãŒã¯ãããŒã«å¯Ÿå¿ã§ããããã¢ããªãæºåããŸãã
4-2. ã¹ãã«ãšãã©ã°ã€ã³
ã»Build iOS Apps
iOSãã«ããšSwiftUIã®ã¹ãã«ã䜿çšããŠãã¢ããªã€ã³ãã³ããã¢ããªãšã³ãã£ãã£ãããã³ã¢ããªã·ã§ãŒãã«ããã远å ããã¢ããªãåŒãç¶ãæ£ãããã«ããããã€ã³ãã³ãé§åã®ãšã³ããªãã€ã³ãã«ã«ãŒãã£ã³ã°ãããããšãæ€èšŒããŸãã
4-3. ã¹ã¿ãŒã¿ãŒããã³ãã
Use the Build iOS Apps plugin to audit this iOS app and add App Intents for the actions and entities that should be exposed to the system.
Constraints:
- Start by identifying the app's highest-value user actions and core objects that should be available outside the app in Shortcuts, Siri, Spotlight, widgets, controls, or newer assistant-driven system surfaces.
- Keep the first pass focused. Pick a small set of intents that are genuinely useful without opening the full app, plus any open-app intents that should deep-link into a specific screen or workflow.
- Define app entities only for the data the system actually needs to understand and route those actions. Do not mirror the entire internal model layer if a smaller entity surface is enough.
- Add App Shortcuts where they make the experience more discoverable, and choose titles, phrases, and display representations that would make sense in Siri, Spotlight, and Shortcuts.
- If the app needs to handle the intent inside the main UI, route the result back into the app cleanly and explain how the app scene reacts to that handoff.
- Build and validate the app after the first pass, then summarize which actions, entities, and system surfaces are now supported.
Deliver:
- the recommended intent and entity surface for a first release
- the implemented intents, entities, and App Shortcuts
- how the app routes or handles those intents at runtime
- which Apple system experiences this unlocks now and which ones are logical next stepsBuild iOS Appsãã©ã°ã€ã³ã䜿çšããŠãã®iOSã¢ããªãç£æ»ããã·ã¹ãã ã«å ¬éãã¹ãã¢ã¯ã·ã§ã³ãšãšã³ãã£ãã£ã«å¯Ÿå¿ããã¢ããªã€ã³ãã³ãã远å ããŠãã ããã
Constraints:
- ãŸããã¢ããªå ã§æã䟡å€ã®é«ããŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãšãã·ã§ãŒãã«ãããSiriãSpotlightããŠã£ãžã§ãããã³ã³ãããŒã«ããŸãã¯æ°ããã¢ã·ã¹ã¿ã³ãé§ååã·ã¹ãã ãµãŒãã§ã¹ãªã©ãã¢ããªå€ã§ãå©çšã§ããã³ã¢ãªããžã§ã¯ããç¹å®ããŠãã ããã
- æåã®æ®µéã§ã¯çŠç¹ãçµããŸããããã¢ããªå šäœãéããªããŠãæ¬åœã«åœ¹ç«ã€ã€ã³ãã³ããå°æ°éžã³ãç¹å®ã®ç»é¢ãã¯ãŒã¯ãããŒã«ãã£ãŒããªã³ã¯ããã¢ããªèµ·åã€ã³ãã³ããéžæããŠãã ããã
- ã·ã¹ãã ãå®éã«çè§£ããã¢ã¯ã·ã§ã³ãã«ãŒãã£ã³ã°ããããã«å¿ èŠãªããŒã¿ã®ã¿ã«ã¢ããªãšã³ãã£ãã£ãå®çŸ©ããŠãã ãããããå°ããªãšã³ãã£ãã£ãµãŒãã§ã¹ã§ååãªå Žåã¯ãå éšã¢ãã«ã¬ã€ã€ãŒå šäœããã©ãŒãªã³ã°ããå¿ èŠã¯ãããŸããã
- ãšã¯ã¹ããªãšã³ã¹ã®çºèŠæ§ãé«ããããã«ã¢ããªã·ã§ãŒãã«ããã远å ããSiriãSpotlightãã·ã§ãŒãã«ããã§é©åãªã¿ã€ãã«ããã¬ãŒãºã衚瀺衚çŸãéžæããŠãã ããã
- ã¢ããªãã¡ã€ã³UIå ã§ã€ã³ãã³ããåŠçããå¿ èŠãããå Žåã¯ãçµæãã¢ããªã«é©åã«ã«ãŒãã£ã³ã°ããã¢ããªã·ãŒã³ããã®åŒãæž¡ãã«ã©ã®ããã«åå¿ãããã説æããŠãã ããã
- æåã®ãã¹ã®åŸãã¢ããªããã«ãããŠæ€èšŒããã©ã®æäœããšã³ãã£ãã£ãã·ã¹ãã ãµãŒãã§ã¹ããµããŒããããããã«ãªã£ããããŸãšããŠãã ããã
Deliver:
- ååãªãªãŒã¹ã§æšå¥šãããã€ã³ãã³ããšãšã³ãã£ãã£ã®ãµãŒãã§ã¹
- å®è£ æžã¿ã®ã€ã³ãã³ãããšã³ãã£ãã£ãããã³ã¢ããªã·ã§ãŒãã«ãã
- ã¢ããªãå®è¡æã«ãããã®ã€ã³ãã³ããã©ã®ããã«ã«ãŒãã£ã³ã°ãŸãã¯åŠçããã
- ãã®æ©èœãçŸåšã©ã®Appleã·ã¹ãã ãšã¯ã¹ããªãšã³ã¹ã§å©çšå¯èœã«ãªããã©ã®ã·ã¹ãã ãæ¬¡ã®è«ççãªã¹ããããšãªãã
4-4. ã¢ããªã®é©åãªéšåãã·ã¹ãã ã«å ¬é
ãApp Intentsãã¯ãiOSã¢ããªãç¬èªã®UI以å€ã§ããã䟿å©ã«ããããã®æ¹æ³ã®1ã€ã§ããã¢ããªãèµ·åããŠæäœããåŸã§ãªããã°æ©èœããªãééçãªå ŽæãšããŠæ±ãã®ã§ã¯ãªããCodexã䜿çšããŠãã·ã§ãŒãã«ãããSiriãSpotlightããŠã£ãžã§ãããã³ã³ãããŒã«ããããŠæ°ããã¢ã·ã¹ã¿ã³ãäž»å°ã®ã·ã¹ãã äœéšã§å©çšã§ããã¢ã¯ã·ã§ã³ãšãªããžã§ã¯ããå ¬éããŸãã
ããã¯ãçºèŠæ§ãšèªååã®ããã«çŸåšãã§ã«åœ¹ç«ã£ãŠãããããã¢ã·ã¹ã¿ã³ãäž»å°ã®æªæ¥ã«åãã匷åãªæºå段éãšãªããŸããã¢ããªãæ¢ã«äŸ¡å€ã®ãããã®ãäœæãéãããã£ã«ã¿ãªã³ã°ãã«ãŒãã£ã³ã°ãèŠçŽããæ¹æ³ãç¥ã£ãŠããå ŽåãApp Intentsã¯ããã®æ©èœãã·ã¹ãã ã«èŠæ±ããããã®æ§é åãããæ¹æ³ãæäŸããŸãã
4-5. ãã¹ãŠã®ç»é¢ã§ã¯ãªããã¢ã¯ã·ã§ã³ãšãšã³ãã£ãã£ããã¯ããã
ãApp Intentsãã®æåã®è©Šã¿ãšããŠæé©ãªã®ã¯ãéåžžãã¢ããªå šäœããã©ãŒãªã³ã°ãããããšã§ã¯ãããŸããã Codexã«ä»¥äžã®é ç®ãç¹å®ããŠããããŸãããã
ã»ãŠãŒã¶ãŒãã€ã³ã¿ãŒãã§ãŒã¹å šäœãæäœããã«å®è¡ãããæäœã¯ã©ãã
ã»ã·ã¹ãã ããããã®æäœãæ£ããã«ãŒãã£ã³ã°ããããã«çè§£ããå¿ èŠã®ããã¢ããªãªããžã§ã¯ã
ã»ç¹å®ã®ç¶æ ã§ã¢ããªãéãã¹ãã¯ãŒã¯ãããŒãšãã·ã¹ãã ã€ã³ã¿ãŒãã§ãŒã¹ããçŽæ¥å®è¡ãã¹ãã¯ãŒã¯ãããŒ
Appleã®ãApp Intentsãã«é¢ããã¬ã€ãã³ã¹ã¯ããã®ç¹ã«ãããŠæå¹ãªæ çµã¿ãšãªããŸãããŸãæäœãå®çŸ©ããæ¬¡ã«ã·ã¹ãã ãå¿ èŠãšãããšã³ãã£ãã£ã€ã³ã¿ãŒãã§ãŒã¹ãå®çŸ©ããæåŸã«ãããã®æäœãã·ã¹ãã å šäœã§æ€åºå¯èœãã€åå©çšå¯èœã«ããŸãã
åèã«ãªãè³æã¯ã次ã®ãšããã§ãã
ã»Making actions and content discoverable and widely available
ã»Creating your first app intent
ã»Adopting App Intents to support system experiences
4-6. ã·ã§ãŒãã«ããã ãã§ãªãã·ã¹ãã ã€ã³ã¿ãŒãã§ãŒã¹å šäœã§èãã
å¯èœæ§ã¯ãã·ã§ãŒãã«ããã1ã€è¿œå ãããã ãã«ãšã©ãŸããŸãããåªããã¢ããªã€ã³ãã³ãã€ã³ã¿ãŒãã§ãŒã¹ã¯ãã¢ããªãããŸããŸãªå Žé¢ã§æŽ»çšã§ããããã«ããŸãã
ã»ã·ã§ãŒãã«ãã
ãŠãŒã¶ãŒã¯ã¢ã¯ã·ã§ã³ãçŽæ¥å®è¡ããããè€æ°ã®ã¢ã¯ã·ã§ã³ãçµã¿åãããŠããå€§èŠæš¡ãªèªååãå®è¡ãããã§ããŸãã
ã»Siri
ã¢ããªã¯ãæ±çšçãªãªã³ã¯ãéãã ãã§ãªããæå³ã®ããåè©ããã£ãŒããªã³ã¯ãæäŸã§ããŸãã
ã»Spotlight
ã¢ããªã®ãšã³ãã£ãã£ãšã¢ããªã®ã·ã§ãŒãã«ããããã·ã¹ãã ããæ€åºå¯èœãªãšã³ããªãã€ã³ãã«ãªããŸãã
ã»ãŠã£ãžã§ãããã©ã€ãã¢ã¯ãã£ããã£ãã³ã³ãããŒã«ããã®ä»ã®ã€ã³ãã³ãé§ååUIã€ã³ã¿ãŒãã§ãŒã¹
ã»æ°ããã¢ã·ã¹ã¿ã³ãåããšã¯ã¹ããªãšã³ã¹
æ§é åãããã¢ã¯ã·ã§ã³ãšãšã³ãã£ãã£ã¯ãæ£æçãªUIãããŒãããã·ã¹ãã ã«ãšã£ãŠçè§£ãããããã®ã«ãªããŸãã
4-7. å®éã®ã¢ããªéçºãã¿ãŒã³ã«åŸã
éåžžãã¢ããªã次ã®ãããªæ§é ãæ¡çšãããšæã广çã§ãã
ã»ç¡é¢ä¿ãªã¢ããªãã¡ã€ã«ã«ã€ã³ãã³ãã®çš®é¡ã忣ãããã®ã§ã¯ãªããå°çšã®ã¢ããªã€ã³ãã³ãã¿ãŒã²ãããçšæãã
ã»æçš¿ã®äœæãç¹å®ã®ã¿ãã§ã®ã¢ããªã®èµ·åãªã©ããŠãŒã¶ãŒã«ãšã£ãŠäŸ¡å€ã®é«ãã¢ã¯ã·ã§ã³ã«ã¯ãAppShortcutsProvider ãšã³ããªã䜿çšãã
ã»ã¢ã«ãŠã³ãããªã¹ããã¿ã€ã ã©ã€ã³ãã£ã«ã¿ãŒãªã©ãã·ã¹ãã ãåŠçããå¿ èŠã®ããèŠçŽ ã«ã¯ãå°ã㪠AppEntity åã䜿çšãã
ã»åŒã³åºãããã€ã³ãã³ããé©åãªæçš¿ãããŒãéããããã¢ããªãé©åãªã¿ãã«åãæ¿ãããã§ããããã«ãã¡ã€ã³ã¢ããªã·ãŒã³ã«é©åã«ã«ãŒãã£ã³ã°ããã€ã³ãã³ãåŠçãè¡ã
ããããã»ãšãã©ã®ã¢ããªã§ Codex ã«æ¡çšããŠã»ãããã¿ãŒã³ã§ãããŸããã·ã¹ãã ãšçŽæ¥ããåãããã¢ã¯ã·ã§ã³ã¬ã€ã€ãŒãå°ãããããšã³ãã£ãã£ã®ã€ã³ã¿ãŒãã§ãŒã¹ãéå®çã«ããã€ã³ãã³ããã¡ã€ã³UIãå¿ èŠãšããéã«ã¯ãäºæž¬å¯èœãªã©ã³ã¿ã€ã ãã³ããªããã¢ããªã«çµã¿èŸŒãããã«ããŸãã
4-8. Codexã«æåã®ã€ã³ãã³ããµãŒãã§ã¹ã®èšèšãäŸé Œ
æã广çãªæç€ºã¯ãã¢ããªã®ã³ã¢ãªããžã§ã¯ããšäž»èŠãªãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãCodexã«äŒãããã¹ãŠãç¡éã«å ¬éããã®ã§ã¯ãªããæå°éã®æçšãªæåã®ã¢ããªã€ã³ãã³ããµãŒãã§ã¹ãéžæããããã«äŸé Œããããšã§ãã
4-9. å®è·µçãªãã³ã
(1) ã¢ããªå€ã§ãŠãŒã¶ãŒãå®éã«å¿ èŠãšããåè©ãå ¬é
åªããæåã®ã€ã³ãã³ãã¯ãéåžžããäœæããéãããæ€çŽ¢ãããã£ã«ã¿ãªã³ã°ããéå§ããç¶è¡ããæ€æ»ããªã©ã§ããé·ãã¢ããªå ã»ããã¢ãããããŒã®åŸã§ãã圹ã«ç«ããªãã¢ã¯ã·ã§ã³ã¯ãæåã®ã¢ããªã€ã³ãã³ããã¹ã«å«ããã¹ãã§ã¯ãªããããããŸããã
(2) ãšã³ãã£ãã£ã¯ã¢ãã«ã¬ã€ã€ãŒãããå°ããä¿ã€
ã·ã¹ãã ã¯éåžžãå®å šãªæ°žç¶åã¢ãã«ãå¿ èŠãšããŸãããCodex ã«ãSiriãã·ã§ãŒãã«ãããSpotlight ãã¢ã¯ã·ã§ã³ãæ£ããã«ãŒãã£ã³ã°ããŠè¡šç€ºããããã«ååãªã³ã³ããã¹ããæäŸãããæå°éã®ã¢ããªãšã³ãã£ãã£ãµãŒãã§ã¹ãå®çŸ©ããããã«äŸé ŒããŠãã ããã
(3) ãããåãªãã·ã§ãŒãã«ããæ©èœã§ã¯ãªããã¢ã·ã¹ã¿ã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ãšããŠæ±ã
æåã®ãªãªãŒã¹ã§ã·ã§ãŒãã«ããã Siri ã®èŠãç®ã®æ¹åããèŠãããªãã£ããšããŠãããã倧ããªã¡ãªããã¯ãã¢ããªãæ§é åãããã¢ã¯ã·ã§ã³ãšãšã³ãã£ãã£ã§å¯Ÿè©±ããããã«ãªãããšã§ããããã«ãããæ©èœãã¿ãããšãã¥ãŒéå±€ã®ã¿ã§ãšã³ã³ãŒããããŠããã¢ããªããããå°æ¥ã®ã·ã¹ãã ã AI é§åã®ãšã³ããªãã€ã³ãã«åå ãããããªããŸãã
5. iOSã·ãã¥ã¬ãŒã¿ã§ã®ãããã°
5-1. ã¯ããã«
Codex ã䜿çšãããšãé©å㪠Xcodeã¹ããŒã ãšã·ãã¥ã¬ãŒã¿ãŒãèŠã€ããã¢ããªãèµ·åããUI ããªãŒãæ€æ»ããã¿ãããå ¥åãã¹ã¯ã€ããè¡ããã¹ã¯ãªãŒã³ã·ã§ãããšãã°ããã£ããã£ããå¿ èŠã«å¿ã㊠LLDB ãæ·»ä»ããŠãæŒ ç¶ãšãããã°å ±åãæ€èšŒæžã¿ã®å°ããªä¿®æ£ã«å€æã§ããŸãã
ã»Build iOS Apps
iOSãããã¬ãŒãšãŒãžã§ã³ãã䜿çšããŠããXcodeBuildMCPãã§ã·ãã¥ã¬ãŒã¿ãŒäžã§ã¢ããªããã«ããèµ·åãæ€æ»ãå®è¡ããCodexããã°ãçµã蟌ãéããã°ãã¹ã¯ãªãŒã³ã·ã§ãããã¹ã¿ãã¯ãã¬ãŒã¹ããã£ããã£ããŸãã
5-2. ã¹ã¿ãŒã¿ãŒããã³ãã
Use the Build iOS Apps plugin and XcodeBuildMCP to reproduce this bug directly in Simulator, diagnose the root cause, and implement a small fix.
Bug report:
[Describe the expected behavior, the actual bug, and any known screen or account setup.]
Constraints:
- First check whether a project, scheme, and simulator are already selected. If not, discover the right Xcode project or workspace, pick the app scheme, choose a simulator, and reuse that setup for the rest of the session.
- Build and launch the app in Simulator, then confirm the right screen is visible with a UI snapshot or screenshot before you start interacting with it.
- Drive the exact reproduction path yourself by tapping, typing, scrolling, and swiping in the simulator. Prefer accessibility labels or IDs over raw coordinates, and re-read the UI hierarchy before the next action when the layout changes.
- Capture evidence while you debug: screenshots for visual state, simulator logs around the failure, and LLDB stack frames or variables if the bug looks like a crash or hang.
- If the simulator is not already booted, boot one and tell me which device and OS you chose. If credentials or a special fixture are required, pause and ask only for that missing input.
- Make the smallest code change that addresses the bug, then rerun the simulator flow and tell me exactly how you verified the fix.
Deliver:
- the reproduction steps Codex executed
- the key screenshots, logs, or stack details that explained the bug
- the code fix and why it works
- the simulator and scheme used for final verificationBuild iOS Appsãã©ã°ã€ã³ãšXcodeBuildMCPã䜿çšããŠãã·ãã¥ã¬ãŒã¿äžã§ãã®ãã°ãçŽæ¥åçŸããæ ¹æ¬åå ãç¹å®ããŠãç°¡åãªä¿®æ£ãå®è£ ããŠãã ããã
Bug report:
[æåŸ ãããåäœãå®éã®ãã°ãæ¢ç¥ã®ç»é¢èšå®ãŸãã¯ã¢ã«ãŠã³ãèšå®ã«ã€ããŠèšè¿°ããŠãã ããã]
Constraints:
- ãŸãããããžã§ã¯ããã¹ããŒã ãã·ãã¥ã¬ãŒã¿ãæ¢ã«éžæãããŠãããã©ããã確èªããŠãã ãããéžæãããŠããªãå Žåã¯ãé©åãªXcodeãããžã§ã¯ããŸãã¯ã¯ãŒã¯ã¹ããŒã¹ãèŠã€ããã¢ããªã®ã¹ããŒã ãéžæããã·ãã¥ã¬ãŒã¿ãéžæããŠããã®èšå®ãã»ãã·ã§ã³å šäœã§åå©çšããŠãã ããã
- ã·ãã¥ã¬ãŒã¿ã§ã¢ããªããã«ãããŠèµ·åããæäœãéå§ããåã«UIã¹ãããã·ã§ãããŸãã¯ã¹ã¯ãªãŒã³ã·ã§ããã§æ£ããç»é¢ã衚瀺ãããŠããããšã確èªããŠãã ããã
- ã·ãã¥ã¬ãŒã¿äžã§ã¿ãããå ¥åãã¹ã¯ããŒã«ãã¹ã¯ã€ããªã©ã®æäœãè¡ãããã°ã®åçŸæé ãæ£ç¢ºã«åçŸããŠãã ãããçã®åº§æšãããã¢ã¯ã»ã·ããªãã£ã©ãã«ãŸãã¯IDãåªå ããã¬ã€ã¢ãŠãã倿Žãããå Žåã¯ãæ¬¡ã®æäœãè¡ãåã«UIéå±€ãå確èªããŠãã ããã
- ãããã°äžã¯èšŒæ ãåéããŠãã ãããèŠèŠçãªç¶æ ã®ã¹ã¯ãªãŒã³ã·ã§ãããé害çºçæã®ã·ãã¥ã¬ãŒã¿ãã°ãã¯ã©ãã·ã¥ããã³ã°ã¢ããã®ããã«èŠãããã°ã®å Žåã¯LLDBã¹ã¿ãã¯ãã¬ãŒã ãŸãã¯å€æ°ãªã©ãååŸããŠãã ããã
- ã·ãã¥ã¬ãŒã¿ããŸã èµ·åããŠããªãå Žåã¯ãèµ·åããŠéžæããããã€ã¹ãšOSãæããŠãã ãããèªèšŒæ å ±ãç¹å¥ãªãã£ã¯ã¹ãã£ãå¿ èŠãªå Žåã¯ãäžæåæ¢ããŠäžè¶³ããŠããæ å ±ã®ã¿ãèŠæ±ããŠãã ããã
- ãã°ãä¿®æ£ããæå°éã®ã³ãŒã倿Žãè¡ããã·ãã¥ã¬ãŒã¿ãããŒãåå®è¡ããŠãä¿®æ£ãã©ã®ããã«æ€èšŒãããããæ£ç¢ºã«èª¬æããŠãã ããã
Deliver:
- Codexãå®è¡ããåçŸæé
- ãã°ã説æããäžã§éèŠãªã¹ã¯ãªãŒã³ã·ã§ããããã°ããŸãã¯ã¹ã¿ãã¯ã®è©³çް
- ã³ãŒãä¿®æ£ãšãããæ©èœããçç±
- æçµæ€èšŒã«äœ¿çšããã·ãã¥ã¬ãŒã¿ãšã¹ããŒã
5-3. Codexã«ã·ãã¥ã¬ãŒã¿ãŒã®å šã«ãŒããä»»ãã
ãã®ãŠãŒã¹ã±ãŒã¹ã¯ãCodexãã«ãŒãå šäœã管çããå Žåã«æã广çã§ããé©åãªã¢ããªã¿ãŒã²ãããéžæããã·ãã¥ã¬ãŒã¿ãŒã§ã¢ããªãèµ·åããçŸåšã®ç»é¢ãæ€æ»ããåçŸæé ãå®è¡ãããã°ãšã¹ã¯ãªãŒã³ã·ã§ãããåéããå¿ èŠã«å¿ããŠã¹ã¿ãã¯ãã¬ãŒã¹ãæ€æ»ããã³ãŒãã«ããããé©çšããåããã¹ãåå®è¡ããŠãã°ãè§£æ¶ãããããšã確èªããŸãã
ã«ãŒããCodexã«ä»»ãããå Žåã¯ããBuild iOS Appsããã©ã°ã€ã³ã䜿çšããŠãã ããããã®ãã©ã°ã€ã³ã®iOSãããã¬ãŒã¯ãŒã¯ãããŒã¯ãXcodeBuildMCPããåºç€ãšããŠãããããCodexã¯èµ·åããã·ãã¥ã¬ãŒã¿ãŒãšé£æºãã人éãéåžžæåã§åéããã®ãšåã蚌æ ãåéã§ããŸãã
ãXcodeBuildMCPããã·ãã¥ã¬ãŒã¿ãŒèªååãUIèªååããããã°ããã°èšé²ã¯ãŒã¯ãããŒã§æ§æãããŠããå ŽåãCodexã¯åçŸã»ãããã°ã»æ€èšŒã®å šã«ãŒãã管çã§ããŸããCodexããŸã ãããžã§ã¯ããã¹ããŒã ãã·ãã¥ã¬ãŒã¿ãŒãéžæããŠããªãå Žåã¯ããŸãããããæ€åºããããã®èšå®ãã»ãã·ã§ã³ã®æ®ãã®éšåã§åå©çšããŠãã ããã
5-4. XcodeBuildMCPã®æ©èœã掻çš
Codexã«å®è¡ãä¿ãããã®å®çšçãªæ©èœã°ã«ãŒãã¯ä»¥äžã®ãšããã§ãã
ã»ãããžã§ã¯ããšã·ãã¥ã¬ãŒã¿ã®æ€åº
Codexã䜿çšããã¢ããªã¿ãŒã²ãããšã·ãã¥ã¬ãŒã¿ãæ¢ã«èªèããŠãããã©ããã確èªããXcodeãããžã§ã¯ããŸãã¯ã¯ãŒã¯ã¹ããŒã¹ãæ€åºããã¹ããŒã ãåæããã·ãã¥ã¬ãŒã¿ãæ€çŽ¢ãŸãã¯èµ·åããä»åŸã®ãã«ã/å®è¡ã¹ãããã®ããã«ãã®èšå®ãå®å®çã«ç¶æããŸãã
ã»ãã«ããšèµ·åã®å¶åŸ¡
ã¢ã¯ãã£ããªã¢ããªã¿ãŒã²ããããã«ãããã·ãã¥ã¬ãŒã¿ãã«ããã€ã³ã¹ããŒã«ããŠèµ·åããå¿ èŠã«å¿ããŠãã°ãã£ããã£ä»ãã§åèµ·åããCodexãã¢ããªåºæã®ã©ã³ã¿ã€ã ãã°ãæ€æ»ããå¿ èŠãããå Žåã¯ã¢ããªãã³ãã«IDã解決ããŸãã
ã»UIã®æ€æ»ãšæäœ
ç»é¢äžã®ã¢ã¯ã»ã·ããªãã£éå±€ãèªã¿åããã¹ã¯ãªãŒã³ã·ã§ãããæ®åœ±ããã³ã³ãããŒã«ãã¿ãããããã£ãŒã«ãã«å ¥åãããªã¹ããã¹ã¯ããŒã«ãããšããžã¹ã¯ã€ããªã©ã®ã·ãã¥ã¬ãŒã¿ãžã§ã¹ãã£ãŒãå®è¡ããŸãã
ã»ãã°ãšãããã¬ãŒã®ç¶æ
ã·ãã¥ã¬ãŒã¿ãã°ãã¹ããªãŒãã³ã°ããå®è¡äžã®ã¢ããªã«LLDBãã¢ã¿ãããããã¬ãŒã¯ãã€ã³ããèšå®ããã¹ã¿ãã¯ãã¬ãŒã ãšããŒã«ã«å€æ°ãæ€æ»ããã¯ã©ãã·ã¥ããã³ã°ã¢ããã®è©³çްãªèª¿æ»ãå¿ èŠãªå Žåã«ãããã¬ãŒã³ãã³ããå®è¡ããŸãã
éèŠãªã®ã¯ãCodex ãã¿ããããåã«ãã¥ãŒããªãŒãæ€æ»ããããã«æç€ºããããšã§ãããXcodeBuildMCPãã¯ã¢ã¯ã»ã·ããªãã£éå±€ãšåº§æšãå ¬éãããããCodex ã¯çã®ç»é¢äœçœ®ãæšæž¬ããã®ã§ã¯ãªããå®å®ããã©ãã«ãèŠçŽ ID ãåªå çã«äœ¿çšã§ããŸãã
5-5. æŒ ç¶ãšãããã°ãåçŸå¯èœãªã¹ã¯ãªããã«å€æ
iOSãããã¬ãŒã¹ãã«ã¯ãå ·äœçãªãã°ãšæåŸ ãããçµæãäžã€ãã€æå®ããå Žåã«æã广ãçºæ®ããŸããCodexãã¢ããªãæäœãã蚌æ ãèªåŸçã«åéããŸãããã°ã€ã³ããã£ãŒããªã³ã¯ããŸãã¯ãã¹ããã£ã¯ã¹ãã£ãå¿ èŠãªå Žåã¯ããã®æšãäžåºŠã ãäŒããå ¥åãäžè¶³ããŠããå Žåã«ã®ã¿Codexã«äžæåæ¢ãæç€ºããŠãã ããã
5-6. å®è·µçãªãã³ã
(1) ä¿®æ£ã ãã§ãªãã蚌æ ãæ±ããŸã
ãã°ã®èª¬æã«äœ¿çšããã·ãã¥ã¬ãŒã¿ãã¹ããŒã ãã¹ã¯ãªãŒã³ã·ã§ããããã°ã¹ãããããã¹ã¿ãã¯ã®è©³çްãªã©ãCodex ã䜿çšããæ£ç¢ºãªæ å ±ãæäŸããŠããããŸãããããã§ä¿®æ£ãããã¯ãã§ãããšããåçããããæçµçãªãããã®ã¬ãã¥ãŒãã¯ããã«å®¹æã«ãªããŸãã
(2) 座æšãããã¢ã¯ã»ã·ããªãã£ã©ãã«ãåªå
ã³ã³ãããŒã«ã«å®å®ããã©ãã«ãã¢ã¯ã»ã·ããªãã£èå¥åããªããããCodex ã座æšã§ã¿ããããå¿ èŠãããå Žåã¯ããã®æšãææããããã«äŸé ŒããŸããããã¯å€ãã®å Žåããã°ä¿®æ£ã« UI ã®ãã¹ãå®¹ææ§ã®æ¹åãå«ãŸããã¹ãã ãšãããµã€ã³ã§ãã
(3) 1 åã®å®è¡ã§ 1 ã€ã®ãã°ã®ã¿ã察象ãšãã
ã·ãã¥ã¬ãŒã¿ã䜿ã£ããããã°ã«ãŒãã¯åŒ·åã§ããã1 ã€ã®ããã³ããã 1 ã€ã®é害ã¢ãŒãã察象ãšããŠããæ¹ãä¿¡é Œæ§ãé«ããªããŸããCodex ã«ãåçŸã»ä¿®æ£ã»æ€èšŒã®ãµã€ã¯ã«ã 1 åå®äºãããŠããã飿¥ããåé¡ã«æãåºããããã«ããŸãã
