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

Visual Programming Framework UniFlow のご紹介/Introducing UniFlow

Visual Programming Framework UniFlow のご紹介/Introducing UniFlow

2019/10/23 (Wed) に開催された Roppongi.unity #5 にて発表した「UniFlow - Visual Programming Framework for Unity」の紹介スライドです。

Tetsuya Mori
PRO

October 23, 2019
Tweet

More Decks by Tetsuya Mori

Other Decks in Programming

Transcript

  1. גࣜձࣾΩοζελʔ$50
    ৿ɹ఩࠸
    6OJ'MPX
    8FE
    3PQQPOHJVOJUZJOϝϧΧϦBU࿡ຊ໦ώϧζ
    dਓྨΛίϯύΠϧ͔࣌ؒΒղ์͢Δd
    SPQQPOHJVOJUZ
    7JTVBM1SPHSBNNJOH'SBNFXPSL
    ͷ͝঺հ

    View Slide

  2. ͜Μ͹Μ͸ʂ

    View Slide

  3. wηογϣϯ֓ཁ
    w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷΠϯετʔϧ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு
    w·ͱΊ

    ΞδΣϯμ

    View Slide

  4. wηογϣϯ֓ཁ
    w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷΠϯετʔϧ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு
    w·ͱΊ

    ΞδΣϯμ
    ΠϚίί

    View Slide


  5. ࠓ೔ͷ-5ʹ͍ͭͯ
    ηογϣϯ֓ཁ
    εϥΠυ ಈը
    6OJUZ-FBSOJOH.BUFSJBMT
    ʹͯެ։༧ఆ

    View Slide

  6. w$Λॻ͔ͣʹॲཧΛ࣮૷͍ͨ͠ਓ
    w%PNBJOͱ7JFXΛ੾Γ෼͚ͨઃܭ
    Λ͍ͨ͠ਓ
    w6OJUZͷίϯύΠϧΛ଴͍ͬͯΔؒʹ
    ;ͱ5XJUUFSΛݟ͍ͯͨΒ࣌ؒ͘Β
    ༹͍͔ͨ͜͠ͱ͕͋Δਓ

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

    View Slide

  7. w6OJ'MPXͷ঺հ
    w6OJ'MPXΛ༻͍ͨσϞ

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

    View Slide

  8. w"TTFU4UPSFͰൢച͞Ε͍ͯΔ
    "SCPS΍#PMUͳͲʹ͍ͭͯ
    w6OJUZҎ߱Ͱ౥ࡌ͞ΕΔ༧ఆ
    ͷ7JTVBM4DSJQUJOHػೳʹ͍ͭͯ

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

    View Slide

  9. ηΫγϣϯλΠτϧ
    w+PC$50BU,JET4UBS*OD
    w'BNJMZ࠺ɾ່
    w6OJUZྺ೥໨
    w!NPOSZ
    wBLB΋ΜΓ͌ઌੜ
    9
    ࣗݾ঺հ
    ηογϣϯ֓ཁ

    View Slide


  10. ࣗݾ঺հ"XBSE
    ηογϣϯ֓ཁ
    .JDSPTPGU.71
    GPS%FWFMPQFS5FDIOPMPHJFT
    6OJUZ"NCBTTBEPS

    View Slide


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

    View Slide

  12. ηΫγϣϯλΠτϧ
    wΩοζελʔֶशா
    1JYJW#005)ʹͯ
    ޷ධൢചதʂ
    w"TTFU#VOEMF
    w։ൃൿ࿩
    wւ֎ۈ຿ͷ͓࿩͠
    wษڧձ։࠵
    w"OESPJEࣗಈςετ
    w7FDUPS(SBQIJDT
    12
    ࣗݾ঺հ13
    IUUQTLJETTUBSUCGCPPUIQN
    ηογϣϯ֓ཁ

    View Slide


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

    View Slide

  14. wηογϣϯ֓ཁ
    w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷΠϯετʔϧ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு
    w·ͱΊ

    ΞδΣϯμ
    ΠϚίί

    View Slide

  15. 6OJ'MPXͷ֓ཁ

    View Slide


  16. ֓ཁ
    6OJ'MPXͷ֓ཁ
    6OJ'MPX
    ॲཧͷ
    ஞ࣮࣍ߦ
    (SBQI7JFX
    Πϕϯτ
    ଴ͪड͚
    044
    γάφϧʹΑΔ
    υϝΠϯ઀ଓ

    View Slide


  17. ॲཧͷஞ࣮࣍ߦ
    6OJ'MPXͷ֓ཁ
    wʮ˓˓Λͨ͠Βɺ˘˘Λ͢Δʯ
    ͱ͍͏ॲཧΛ਺चͭͳ͗ʹ࣮ߦ
    wશͯͷ৘ใ͸4FSJBMJ[F͞Εͯอ࣋
    ͞ΕΔʢ4DFOF1SFGBCʣ
    w໪࿦"TTFU#VOEMF"EESFTTBCMF
    ʹ΋ରԠ

    View Slide


  18. Πϕϯτ଴ͪड͚
    6OJ'MPXͷ֓ཁ
    wʮϘλϯ͕λοϓ͞ΕͨΒʯʮఢػʹ
    ࣗػ͕Ϳ͔ͭͬͨΒʯͱ͍ͬͨɺ
    ΠϕϯτॲཧʹରԠ
    wجຊతͳΠϕϯτ͸αϙʔτࡁ
    w"VEJP "OJNBUJPO 5JNFMJOF
    ͷ࠶ੜऴྃ଴ͪͳͲ΋͋Γ

    View Slide


  19. γάφϧʹΑΔυϝΠϯ઀ଓ
    6OJ'MPXͷ֓ཁ
    w1VSF$Ͱ࣮૷͞ΕΔυϝΠϯॲཧ
    ͱͷڥքΛڮ౉͢͠ΔͨΊͷ4JHOBM
    ͱ͍͏࢓૊ΈΛ࣮૷ࡁ
    w6OJ'MPXίϯϙʔωϯτؒͷ
    ઀ଓʹ΋ར༻Մೳ

    View Slide


  20. (SBQI7JFX
    6OJ'MPXͷ֓ཁ
    w6*&MFNFOUTͷ(SBQI7JFXΛ
    ༻͍ͨϏδϡΞϥΠζ
    w&YQFSJNFOUBM͸͍ͭ֎ΕΔͷ͔͠Βʜʁ
    wҰఆͷϧʔϧʹԊͬͨίϯϙʔωϯτ
    Λ࡞Δ͜ͱͰ֦ு΋༰қ

    View Slide


  21. 0QFO4PVSDF4PGUXBSF
    6OJ'MPXͷ֓ཁ
    w044ͱͯ͠(JU)VCͷ
    1VCMJD3FQPTJUPSZͰ։ൃத
    w⭐͍ͩͬ͘͞ʂ
    w .*5-JDFOTFΛઃఆ͍ͯ͠·͢

    View Slide

  22. wηογϣϯ֓ཁ
    w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷΠϯετʔϧ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு
    w·ͱΊ

    ΞδΣϯμ
    ΠϚίί

    View Slide

  23. 6OJ'MPXͷΠϯετʔϧ

    View Slide


  24. Πϯετʔϧ
    6OJ'MPXͷΠϯετʔϧ

    View Slide

  25. w6OJUZ1BDLBHF.BOBHFS
    ʢಠࣗϨδετϦʣʹͯఏڙ
    wݱࡏ
    WQSFWJFX͕ఏڙ

    Πϯετʔϧ
    6OJ'MPXͷΠϯετʔϧ

    View Slide


  26. Πϯετʔϧ
    6OJ'MPXͷΠϯετʔϧ
    {
    "dependencies": {
    "com.unity.2d.sprite": "1.0.0",
    "com.unity.2d.tilemap": "1.0.0",
    // ...
    "com.unity.modules.wind": "1.0.0",
    "com.unity.modules.xr": "1.0.0"
    },
    "scopedRegistries": [
    {
    "name": "Unofficial Unity Package Manager Registry",
    "url": "https://upm-packages.dev",
    "scopes": [
    "com.stevevermeulen",
    "jp.cysharp",
    "dev.monry",
    "com.unity.simpleanimation",
    "dev.upm-packages"
    ]
    }
    ]
    }
    Packages/manifest.json

    View Slide


  27. Πϯετʔϧ
    6OJ'MPXͷΠϯετʔϧ

    View Slide


  28. Πϯετʔϧ
    6OJ'MPXͷΠϯετʔϧ

    View Slide

  29. wηογϣϯ֓ཁ
    w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷΠϯετʔϧ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு
    w·ͱΊ

    ΞδΣϯμ
    ΠϚίί

    View Slide

  30. 6OJ'MPXͷ࢖͍ํ

    View Slide


  31. 6OJ'MPX(SBQI
    6OJ'MPXͷ࢖͍ํ

    View Slide


  32. %&.0
    6OJ'MPXͷ࢖͍ํ

    View Slide

  33. wηογϣϯ֓ཁ
    w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷΠϯετʔϧ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு
    w·ͱΊ

    ΞδΣϯμ
    ΠϚίί

    View Slide

  34. 6OJ'MPXͷ֦ு

    View Slide

  35. wConnectorBaseΛܧঝ
    wpublic override IObservable
    OnConnectAsObservable()
    ʹϝοηʔδ͕ྲྀΕ͖ͯͨ࣌ͷॲཧΛ
    ॻ͘

    $POOFDUPS#BTF
    6OJ'MPXͷ֦ு

    View Slide

  36. wIMessageComposableΛ࣮૷
    wग़ྗ͢Δ஋ͱΩʔͷϦετΛฦ͢

    ग़ྗ
    6OJ'MPXͷ֦ு

    View Slide


  37. ग़ྗ
    6OJ'MPXͷ֦ு
    IEnumerable
    IMessageComposable.GetMessageComposableAnnotations()
    {
    return new[]
    {
    ComposableMessageAnnotationFactory.Create(
    () => Result,
    "SomeOutput"
    ),
    };
    }

    View Slide

  38. wIMessageCollectableΛ࣮૷
    wೖྗՄೳͳܕͱΩʔͱॲཧͷϦετΛ
    ฦ͢
    wCollectorͱ͍͏ಛघͳΫϥεΛ
    ௨ͯ͠஋Λճऩ͢Δ

    ೖྗ
    6OJ'MPXͷ֦ு

    View Slide


  39. ೖྗ
    6OJ'MPXͷ֦ு
    IEnumerable
    IMessageCollectable.GetMessageCollectableAnnotations()
    {
    return new[]
    {
    CollectableMessageAnnotationFactory.Create(
    SourceCollector,
    x => Source = x,
    nameof(Source)
    ),
    };
    }

    View Slide

  40. wηογϣϯ֓ཁ
    w6OJ'MPXͷ֓ཁ
    w6OJ'MPXͷΠϯετʔϧ
    w6OJ'MPXͷ࢖͍ํ
    w6OJ'MPXͷ֦ு
    w·ͱΊ

    ΞδΣϯμ
    ΠϚίί

    View Slide

  41. ·ͱΊ

    View Slide


  42. ·ͱΊ
    ·ͱΊ
    w6OJ'MPXΛ࢖͏ͱ$Λॻ͔ͣʹ
    ৭ʑͳॲཧΛ࣮૷Ͱ͖Δʂ
    w6OJUZͰͰ͖Δίτ͸6OJ'MPXͰɺ
    Ͱ͖ͳ͍ίτ͸$Ͱɻ
    w(JU)VC4UBS෇͚ͯͶͬʂ

    View Slide


  43. ஫ҙࣄ߲
    ·ͱΊ
    wݱࡏͷόʔδϣϯ͸
    v0.1.0-preview.34.1
    Ͱ͢ɻ
    wେ෼҆ఆ͖ͯ͠·͕ͨ͠ɺࠓޙ΋
    ഁյతมߋ͕ೖΔՄೳੑ͕͋Γ·͢ɻ
    w஋ͷೖग़ྗͷॲཧ͸վળ༧ఆ͋Γ

    View Slide


  44. "QQFOEJY
    w,JET4UBS5FDI/PUF
    w https://kidsstar-tbf.booth.pm/
    w6OJ'MPX(JU)VC
    w https://github.com/monry/UniFlow
    w6OJ'MPX:PV5VCF
    w Πϯετʔϧฤ
    w ࢖͍ํฤ

    View Slide

  45. 5IBOLZPVGPSZPVS
    BUUFOUJPO

    View Slide