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

UniFlow 完全に理解した / I can develop UniFlow a little.

UniFlow 完全に理解した / I can develop UniFlow a little.

2019/09/02 (Mon) に実施された「KidsStar 開発合宿」で発表した UniFlow というライブラリの解説資料です。

Tetsuya Mori
PRO

September 02, 2019
Tweet

More Decks by Tetsuya Mori

Other Decks in Programming

Transcript

  1. גࣜձࣾΩοζελʔ$50
    ৿ɹ఩࠸
    6OJ'MPX
    ׬શʹཧղͨ͠
    .PO
    ,JET4UBS։ൃ߹॓
    *DBOEFWFMPQ6OJ'MPXBMJUUMF

    View Slide

  2. ͜Μʹͪ͸ʂ


    View Slide

  3. w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு


    ΞδΣϯμ
    ηογϣϯ֓ཁ

    View Slide

  4. w$"'6࢖ͬͯͯɺʮ1SFTFOUBUJPO૚ʹԙ͚Δ

    ΠϕϯτͷऔΓճ͕͠໘౗ष͍ͳ͊ʯͬͯײͯ͡Δਓ
    wʮϘλϯͷ֦ॖΞχϝ଴ͪʯͱ͔ʮೋ౓ԡ͠ରࡦʯͱ͔

    ຖճॻ͔ͳ͖Ό͍͚ͳ͍͚Ͳந৅Խ͠ਏ͍ॲཧΛڞ௨Խ

    ͍ͨ͠ͱࢥ͍ͬͯΔਓ
    wνϡʔτϦΞϧͱ͔ͷʮͪΐͬͱϢʔβΠϯλϥΫγϣϯ

    ඞཁͳΜ͚ͩͲɺجຊ͸ࣗಈ࠶ੜʯΈ͍ͨͳॲཧΛ

    ίʔυॻ͔ͣʹ࣮ݱ͍ͨ͠ਓ
    w͍ͬͯ͏͔,JET4UBSؔ܎ऀͰ6OJUZ৮Δਓ


    ࠓ೔ͷର৅ऀ
    ηογϣϯ֓ཁ

    View Slide

  5. w6OJ'MPXʹ͍ͭͯ


    ࠓ೔࿩͢ίτ
    ηογϣϯ֓ཁ

    View Slide

  6. w6*&MFNFOUTʹ͍ͭͯ
    w(SBQI7JFXʹ͍ͭͯ


    ࠓ೔࿩͞ͳ͍ίτ
    ηογϣϯ֓ཁ

    View Slide

  7. ηΫγϣϯλΠτϧ
    w࢓ࣄגࣜձࣾΩοζελʔ$50
    wՈ଒࠺ɾ່
    w6OJUZྺ೥໨
    w!NPOSZ
    wBLB΋ΜΓ͌ઌੜ
    7
    ࣗݾ঺հ
    ηογϣϯ֓ཁ

    View Slide



  8. ࣗݾ঺հ"XBSE
    ηογϣϯ֓ཁ
    w.JDSPTPGU.71

    GPS%FWFMPQFS5FDIOPMPHJFT
    w6OJUZ"NCBTTBEPS

    View Slide



  9. ࣗݾ঺հ+PC
    ηογϣϯ֓ཁ
    ະबֶࣇʙখֶߍ௿ֶ೥޲͚ͷ
    ৬ۀମݧΞϓϦʮͬ͜͝ϥϯυʯΛ
    ೥Ҏ্ʹΘͨΓ։ൃɾӡӦ

    View Slide

  10. ηΫγϣϯλΠτϧ
    wΩοζελʔֶशா

    1JYJW#005)ʹͯ

    ޷ධൢചதʂ
    w"TTFU#VOEMF
    w։ൃൿ࿩
    wւ֎ۈ຿ͷ͓࿩͠
    wษڧձ։࠵
    w"OESPJEࣗಈςετ
    w7FDUPS(SBQIJDT
    10
    ࣗݾ঺հ13
    IUUQTLJETTUBSUCGCPPUIQN
    ηογϣϯ֓ཁ

    View Slide



  11. ࣗݾ঺հ13
    ηογϣϯ֓ཁ
    #΋ͷϥδ ύʔιφϦςΟ΍ͬͯ·͢ʂ
    ήετืूதʂ

    View Slide

  12. w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு


    ΞδΣϯμ
    ΠϚίί

    View Slide

  13. 4VNNBSZPG6OJ'MPX


    View Slide



  14. ίϯηϓτ
    6OJ'MPXͷ֓ཁ
    %FWFMPQNFOU

    1SFTFOUBUJPO-BZFST
    XJUIPVU$PEJOH

    View Slide



  15. ίϯηϓτ
    6OJ'MPXͷ֓ཁ
    wϧʔϧΛ౷Ұ
    w֤छΠϕϯτͷϝοηʔδϯά
    wॲཧͷݺͼग़͠
    w֦ுੑ͸ߴ͘
    wฤू͠қ͘

    View Slide



  16. 8IBUEPFT6OJ'MPXEP
    6OJ'MPXͷ֓ཁ
    w6OJUZͷੈքͰൃੜ͢Δ֤छॲཧΛ

    ઀ଓ͢ΔύΠϓϥΠϯͱͯ͠ػೳ
    wྲྀΕ͖ͯͨॲཧΛϝοηʔδͱͯ͠

    ϏδωεϩδοΫʹड͚౉͢

    View Slide



  17. ߏ੒ཁૉ
    6OJ'MPXͷ֓ཁ
    w$POOFDUBCMF
    w$POOFDUPS
    w3FDFJWFS
    w&WFOU.FTTBHFT
    w6OJ'MPX(SBQI

    View Slide



  18. ߏ੒ཁૉ$POOFDUBCMF
    6OJ'MPXͷ֓ཁ
    w$POOFDUPS
    w&WFOU
    w$POUSPMMFS
    w-PHJD
    w3FDFJWFS

    View Slide



  19. ߏ੒ཁૉ$POOFDUBCMF
    6OJ'MPXͷ֓ཁ
    w$POOFDUPS
    w&WFOU
    w$POUSPMMFS
    w-PHJD
    w3FDFJWFS
    6OJUZͷ֤छॲཧΛ઀ଓ
    ࣗ਎͕ॲཧͷى఺΍

    ຤ඌʹͳΓ͏Δ
    ConnectorBaseΛܧঝ

    View Slide



  20. ߏ੒ཁૉ$POOFDUBCMF
    6OJ'MPXͷ֓ཁ
    w$POOFDUPS
    w&WFOU
    w$POUSPMMFS
    w-PHJD
    w3FDFJWFS
    ʮλοϓ࣌ʯʮԻ੠ऴྃ࣌ʯ
    ʮ5JNFMJOFऴྃ࣌ʯ

    ͱ͔ͷΠϕϯτൃՐ࣌ʹ

    ޙଓͷ$POOFDUBCMF

    ʹ઀ଓ

    View Slide



  21. ߏ੒ཁૉ$POOFDUBCMF
    6OJ'MPXͷ֓ཁ
    w$POOFDUPS
    w&WFOU
    w$POUSPMMFS
    w-PHJD
    w3FDFJWFS
    ʮԻ੠࠶ੜʯʮΞχϝ࠶ੜʯ

    ʮ5JNFMJOFఀࢭʯ

    ͱ͍ͬͨॲཧΛݺͼग़ͯ͠

    ޙଓͷ$POOFDUBCMF

    ʹ઀ଓ

    View Slide



  22. ߏ੒ཁૉ$POOFDUBCMF
    6OJ'MPXͷ֓ཁ
    w$POOFDUPS
    w&WFOU
    w$POUSPMMFS
    w-PHJD
    w3FDFJWFS
    ʮ5JNFSʯʮ*OUFSWBMʯ

    ʮ'JMUFS ະ࣮૷
    ʯ

    ͳͲͷ࿦ཧతͳॲཧΛ࣮ߦ͠

    ޙଓͷ$POOFDUBCMF

    ʹ઀ଓ

    View Slide



  23. ߏ੒ཁૉ$POOFDUBCMF
    6OJ'MPXͷ֓ཁ
    w$POOFDUPS
    w&WFOU
    w$POUSPMMFS
    w-PHJD
    w3FDFJWFS
    ྲྀΕ͖ͯͨϝοηʔδΛ
    ड͚औͬͯʮԿ͔ʯ͢Δ
    ࠓͷॴ͸ҎԼ͕ར༻Մೳ
    wԿ΋͠ͳ͍
    wϩάग़ྗ͢Δ
    wIObservable.OnNext()

    View Slide



  24. ߏ੒ཁૉ&WFOU.FTTBHFT
    6OJ'MPXͷ֓ཁ
    wܦ༝͖ͯͨ͠$POOFDUBCMFͷ

    ৘ใ͕֨ೲ͞ΕΔ
    wIReceiver.OnReceive(EventMessages eventMessages)

    w·͊ɺ࢖͏ίτ͸গͳ͍ͱࢥ͏

    View Slide



  25. ߏ੒ཁૉ6OJ'MPX(SBQI
    6OJ'MPXͷ֓ཁ

    View Slide



  26. ߏ੒ཁૉ6OJ'MPX(SBQI
    6OJ'MPXͷ֓ཁ
    ͕Μ͹ͬͨ

    View Slide



  27. ߏ੒ཁૉ6OJ'MPX(SBQI
    6OJ'MPXͷ֓ཁ
    w4DFOF1SFGBCʹؚ·ΕΔ

    $POOFDUBCMFͷ৘ใΛҰཡ
    wͦͷ৔Ͱ৽͍͠$POOFDUBCMFΛ

    ௥Ճ͢ΔͳͲͷฤू࡞ۀ΋0,
    wৄ͘͠͸ޙड़

    View Slide

  28. w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு


    ΞδΣϯμ
    ΠϚίί

    View Slide

  29. )PXUPVTF6OJ'MPX


    View Slide



  30. %FNP
    6OJ'MPXͷ࢖͍ํ
    -JWF%FNP

    View Slide

  31. w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு


    ΞδΣϯμ
    ΠϚίί

    View Slide

  32. &YUFOE6OJ'MPX


    View Slide



  33. $POOFDUPS௥Ճ
    6OJ'MPXͷ֦ு
    wछผΛ໰ΘͣConnectorBaseΛܧঝ͠·͠ΐ͏
    w[AddComponentMenu]Λ๨Εͣʹ
    w6OJ'MPX(SBQI͔Β΋ࢀর͞Ε·͢
    wϝχϡʔ໊͸"UniFlow//"ͱ

    ͠·͠ΐ͏
    wFH[AddComponentMenu("UniFlow/Event/FooBarEvent")]

    View Slide



  34. 3FDFJWFS௥Ճ
    6OJ'MPXͷ֦ு
    wReceiverBaseΛܧঝ͠·͠ΐ͏
    w$"'6͔Β࢖͏৔߹͸
    ObservableReceiverBase͕ศར
    wpublic interface IFoo : IObservableReceiver
    wpublic class Foo : ObservableReceiverBase, IFoo
    w[Inject] private IFoo Foo { get; }

    View Slide



  35. 6OJ'MPX(SBQI͸ʁ
    6OJ'MPXͷ֦ு
    wConnectableBaseΛܧঝͨ͠

    Ϋϥε͸ࣗಈతʹ(SBQI/PEFͷ

    ର৅ʹͳΔ
    w"EE/PEFͷ5SFF͸
    AddComponentMenuଐੑͷ

    ύϥϝʔλΛಡΜͰߏங

    View Slide

  36. 5IBOLZPVGPSZPVS
    BUUFOUJPO


    View Slide