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

Circuit 찍먹해보기(부제: Circuit 절망편)

Avatar for easyhooon easyhooon
July 15, 2025
18

Circuit 찍먹해보기(부제: Circuit 절망편)

Avatar for easyhooon

easyhooon

July 15, 2025
Tweet

Transcript

  1. ݾର - Circuit੄ ױ੼ٜ ࣗѐ • ۨಌ۠झо ࠗ઒ೣ • ী۞ݫࣁ૑о

    ࠛ஘੺ೣ • Circuit Navigation ࢎਊद feature ݽٕр ࣽജ ଵઑ ߊࢤ ਤ೷(೧Ѿ) • AAC ViewModelਸ ࢎਊೡ ࣻ হ਺ • Presenterীࢲ Eventܳ ߑ୹ೡ ࣻ হ਺ • Migration ࠺ਊ੉ ఀ • ੿ܻ • Ӓۢীب ࠛҳೞҊ...!
  2. 1. ۨಌ۠झо ࠗ઒ೣ https://github.com/slackhq/circuit/discussions • ҕध ޙࢲо ੓ӟ ೞ૑݅, 


    ੉ܳ ੸ਊೠ ࢠ೒ٜ੉ ݒ਋ ࠗ઒ೠ ࢚ട
 
 Circuit github samples -> ցޖ рױೣ
 Maintainer ZacSweersש੄ ѐੋ ೐۽ં౟(CatchUp) -> য۰਑
 chrisbanesש੄ ѐੋ ೐۽ં౟(tivi) -> ѐয۰਑ • ೐۽ં౟ী بੑೡ ۄ੉࠳۞ܻܳ ࢶ੿ೡ ٸ, ۄ੉࠳۞ܻ੄ ࢤక҅о ੜ ҳ୷غয ੓ח૑ח ઺ਃೠ ࢎউ • Ӓա݃ ׮೯൤ github Discussionsо ഝߊ൤ ਍৔غҊ ੓঻਺!
  3. 1. ۨಌ۠झо ࠗ઒ೣ য়טب discussionী Ӗਸ ੘ࢿ೮঻਺... • Ӓېب ই૒

    ҾӘೠ ٜࠗ࠙੉ ݆׮. (Still Hungry) • ׹߸೧ ઴ ࢎۈ੉ ੸׮...ƕ ׮ٜ ߄ࢂо ࠁ׮...
  4. 2. ী۞ ݫࣁ૑о ࠛ஘੺ೣ • Circuit਷ kspܳ ా೧ ࠁੌ۞೒ۨ੉౟ ௏٘ܳ

    ࢤࢿೞח ߑधਸ ࢎਊ -> hilt/dagger৬ э਷ DI ۄ੉࠳۞ܻ੄ য֢ప੉࣌ਸ भ࠙ ഝਊ -> Ӓ ઺ূ, Navigatorա Screen ੋझఢझ э਷ ۠ఋ੐ ౵ۄ޷ఠܳ ز੸ਵ۽ ઱ੑೞӝ ਤೠ @AssistedInject৬ э਷ য֢ప੉࣌੉ ನೣؽ -> য֢ప੉࣌ਸ ೞաۄب ࡅڰܾ ҃਋, ஹ౵ੌ/۠ఋ੐ী ী۞о ߊࢤೞѱ غחؘ যڃ য֢ప੉࣌ਸ ࡅ ڰ۰ࢲ ߊࢤೠ Ѫੋ૑ Ӓ ਗੋਸ ী۞ ݫࣁ૑ܳ ా೧ ଺ইղӝ য۰਑
 
 (ksp৬ Daggerী ؀ೠ ੉೧о ࠗ઒೧ࢲ Ӓ۠ Ѫ эӟೣ) What? Route not available?...
  5. • goTo()ܳ ా೧ ചݶ ੉زद,
 ੉ز ೧ঠೡ ݽٕਸ ੄ઓ೧ঠೞח ޙઁ

    ߊࢤ • A -> B -> C ... -> A 
 feature ݽٕр ࣽജ ଵઑо ߊࢤ ೡ ࣻ ੓਺ • ۽Ӓੋਸ ૑ਗೞח ҃਋, ؀ࠗ࠙੄ feature ݽٕ੉ feature:login ݽ ٕਸ ੄ઓೞח ޙઁ ߊࢤ 3. Circuit Navigation ࢎਊद feature ݽٕр ࣽജ ଵઑ ߊࢤ ਤ೷(೧Ѿ)
  6. 3. Circuit Navigation ࢎਊद feature ݽٕр ࣽജ ଵઑ ߊࢤ ਤ೷(೧Ѿ)

    https://github.com/YAPP-Github/Reed-Android/pull/39 • Circuitীࢲ Screen਷ UI৬ Presenterܳ োѾೞח Key(ध߹੗ ৉ೡ) • screens ݽٕਸ ࢤࢿೞৈ, 
 ݽٚ Screen(ݾ੸૑)ٜਸ ҙܻ • ݽٚ feature ݽٕ੉ screens ݽٕ݅ਸ ੄ઓೞب۾ ࢸ҅
  7. 4. AAC ViewModelਸ ࢎਊೡ ࣻ হ਺ • Circuit਷ AAC ViewModelਸ

    ࢎਊೞ૑ ঋҊ, Circuitীࢲ ૑ਗೞח ߹ب੄ Presenterܳ ࢎਊ • Android ѐߊীࢲ AAC ViewModel੉ۆ?
 
 -> Con fi guration Change۽ ࠗఠ ؘ੉ఠ(࢚క) ܳ ࠁઓ оמ
 
 -> viewModelScopeܳ ా೧ উ੹ೞѱ ࠺زӝ ୊ܻܳ ೡ ࣻ ੓਺
 
 -> ೠ݃٣۽ AAC ViewModel਷ न(ᙲ)

  8. 4. AAC ViewModelਸ ࢎਊೡ ࣻ হ਺ • Android ѐߊীࢲ AAC

    ViewModelਸ ࢎਊೡ ࣻ হ׮ח Ѫ਷... • Con fi guration Change۽ ࠗఠ ؘ੉ఠ(࢚క)ܳ ࠁઓೡ ࣻ হ਺ -> Circuit੄ rememberRetainedܳ ా೧ ؀୓ оמ
 • viewModelScopeܳ ా೧ উ੹ೞѱ ࠺زӝ ୊ܻܳ ೡ ࣻ হ਺ -> rememberCoroutineScope۽ ؀୓ оמ(?)
 

  9. 4. AAC ViewModelਸ ࢎਊೡ ࣻ হ਺ • ੿݈۽ rememberCoroutineScopeо viewModelScopeܳ

    ؀୓ೡ ࣻ ੓ਸө? • viewModelScopeח ױࣽೠ ௏ܖ౯ झ௏೐о ইש • ViewModel੄ Lifecycleҗ ೣԋ ઙܐغয ݫݽܻ ־ࣻ ਤ೷ਸ ઁѢ • SupervisorJobਸ ా೧ ௏ܖ౯ झ௏೐ܳ ࢤࢿೞৈ, ೞਤ ௏ܖ౯ ઺ ೞաо ৘৻۽ ஂࣗغ؊ۄب, ׮ܲ ௏ܖ౯ী ৔ೱਸ ઱૑ ঋب۾ ࢸ҅ 
 
 https://github.com/slackhq/circuit/discussions/1883 -> ੉۞ೠ ੄ޙਸ ೧׼ Discussionਸ ా೧ 
 ೧ࣗೡ ࣻ ੓঻਺
  10. 5. Presenterীࢲ Eventܳ ߊ೯ ೡ ࣻ হ਺ Circuit Presenter •

    UI۽ ࠗఠ ੹׳ ߉਷ ੉߮౟(eventSink)ܳ ా೧ ࠺زӝ ੘সਸ ࣻ೯ೞҊ, ੉ܳ ా೧ সؘ੉౟ػ 
 Stateܳ UIীѱ ߈ജ • Presenterղীࢲ _uiEvent.send(Event), postSideE ff ect(SideE ff ect) ١੄ ੉߮౟ ߊ೯੉ ࠛоמ
  11. 5. Presenterীࢲ Eventܳ ߑ୹ೡ ࣻ হ਺ ҕधޙࢲ ղਊ ߊ஀ ߂

    ߣ৉) • ਫ਼Ӭ, Stateఋੑী ੉߮౟ ௒ߔ੉ ನೣغয ੓׮Ҋ? -> ֎! ӝઓ UDF(Unidirectional Data Flow) ಁఢҗח ׮ ܰѱ וԑ૕ ࣻ ੓૑݅, Circuitীࢲח ੉߮౟ ߊ೯ਸ ࢚క੄ ೠ ࠗ࠙ਵ۽ ஂә೤פ׮. 
 
 ੉੹ীח ੉߮౟(Flow) ߑधҗ Circuit੉ ղࠗ੸ਵ۽ ੉߮ ౟ܳ ҙܻೞח ಁఢਸ ࢎਊ೮ਵա, ੉۽ ੋೠ ઁডࢎ೦җ ࠂ ੟ࢿ ٸޙী ૑Ә੄ ੽Ӕߨਸ ଻ఖೞѱ غ঻णפ׮. Eventܳ State۽ ҙܻ • Compose Stateܳ ా೧ Eventܳ ୊ܻ(on/o ff ߑध, Like StateFlow) • Channel ࢸ੿੉ա ੉߮౟ झ౟ܿ, ݣ౭ நझ౴ ١੄ ࠂ੟ೠ ղࠗ ࢸ੿ ੘স੉ ೙ਃೞ૑ ঋ਺ • Flow৬ ׳ܻ, Eventо ਬपؼ ਤ೷੉ হ਺(ױ, ੉۞ೠ Event ୊ܻߑधਸ ࢶഐೞ૑ ঋਸ ࣻ ੓਺) https://slackhq.github.io/circuit/states-and-events/
  12. ߣ৻) StateFlow vs Compose State • Compose Stateח StateFlow੄ update৬

    э਷ ਗ੗੸(Atomic) ো࢑੗ܳ ૑ਗೞ૑ ঋ਺ • ৈ۞ झۨ٘ীࢲ زदী Compose Stateী ੽Ӕೡ ҃਋ race condition੉ ߊࢤೡ ࣻ ੓਺! • ࠁా੄ ҃਋ Main(UI) Threadীࢲ݅ ੽Ӕೞח૑ۄ ޙઁо হ૑݅,
 Circuitীࢲח زद ੉߮౟ ୊ܻद ৈ۞ ௏ܖ౯੉ э਷ Stateܳ ࣻ੿ೞৈ race condition ߊࢤ੉ ਋۰ؽ https://wooyoung-tom.medium.com/is-mutablestateof-not-thread-safety-12ea1bfb2bb7 ੿ܻ೧ࢲ Discussion ৢ۰ࠅ ৘੿ੋؘ, ੉۞ೠ ࠗ࠙ਸ ࢸ݃ рҗ೮ਸөਃ? Circuit ѐߊ౱ٜ࠙੉ݶ ਤ ղਊਸ ׼ো൤ ঌҊ ੓ਸ బؘ ୽࠙൤ Ҋ۰ػ ࢸ҅ੋ૑ ҾӘ೤פ׮.
  13. 6. Migration ࠺ਊ੉ ఀ • AAC ViewModelਸ ࢎਊೞ૑ ঋҊ, Circuit

    ੗୓ Presenterܳ ࢎਊ • Compose Navigationਸ ࢎਊೞ૑ ঋҊ, Circuit ੗୓ Navigationਸ ࢎਊ -> ӝઓ੄ ೐۽ં౟ܳ Circuitਵ۽ Migrationೞחؘ ؀؀੸ੋ ੘স੉ ೙ਃ • ژೠ, ׮ܲ MVI ೐ۨ੐ਕ௼?(ۄ੉࠳۞ܻ?)ٜ ࠁ׮ ۞׬ழ࠳о ࠺Ү੸ ֫਷ ಞ -> ౱ղ नӏ ੋਗ੉ ైੑؼ ҃਋, Circuitਸ ੉೧ೞҊ ੊ࣼ೧૑ח ؘ ࢚׼ೠ ৡࠁ٬ दр੉
 ೙ਃೡ Ѫਵ۽ ৘࢚
  14. ✅ ౟۞࠶ ग౴ ߂ ҳഅ о੉٘ ١ पޖ ѐߊী ೙ਃೠ

    ۨಌ۠झ ࠗ઒ ✅ AAC ViewModel ࢎਊ ࠛо, Presenter ੉߮౟ ߊ೯ ࠛоמ ١ ӝઓ ѐߊߑध ؀࠺ ઁড ࢎ೦ ઓ੤ 
 
 ✅ بੑ द ֫਷ Migration ҕࣻ৬ ౱ ৡࠁ٬ ࠺ਊ, ୶റ ׮ܲ ইఃఫ୊ ߸҃ द ୶о ੹ജ ࠺ਊ ߊࢤ ࢤక҅о ই૒ ࢿ੢ ױ҅ী ੓য ೐۽؋࣌ ജ҃ীࢲ بੑೞӝীח न઺ೠ Ѩషо ೙ਃೠ द੼...! Circuit ױ੼ ੿ܻ 🗒 Ӓؘ۠ ೐۽؋࣌ী بੑೠ ഥࢎٜ੉ ৈۤ ੓ח٠ ೤פ׮. оҊर׮
  15. Ӓۢীب ࠛҳೞҊ...! • ۨಌ۠झо ࠗ઒ਵ۽ Circuit ղࠗ ࣗझܳ ૒੽ ࠙ࢳ೧ࠁݴ

    Compose, DI, ViewModel ١ ী ؀ೠ ӝࣿ੸ ੉೧۱ ೱ࢚ • Circuit ҙ۲ ۨಌ۠झܳ ૒੽ ੘ࢿ೧ࠁݴ, ஶ౟ܻ࠭ఠ۽ ࢿ੢ೡ ࣻ ੓ח ӝഥ ദٙ • Android ѐߊ੄ ޷ېо ؼ ࣻ ੓ח Compose-First ইఃఫ୊ ࢶҳ੗੸ ҃೷ णٙ https://news.hada.io/topic?id=21894