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

【Scala関西】http4s/tagless final

Dasha Tarasova
November 10, 2018
2.1k

【Scala関西】http4s/tagless final

http4sとcats-effectで可愛らしい、関数型らしいアプリケーションを書こう!٩(๑^o^๑)۶

Dasha Tarasova

November 10, 2018
Tweet

Transcript

  1. http4scats-effect


    ٩(๑^o^๑)۶

    View Slide

  2. 2
    Hello!

    !
    !#
    Scala"
    %(&)

    '$
    ZOZO Tech

    View Slide



  3. ● cats effect

    ● http4s
    ● Tagless final
    +..+♪(●’∀’●)♪+..+
    3

    View Slide




  4. ● dysangelist/scala_kansai_demo
    @github
    +..+♪(●’∀’●)♪+..+
    4

    View Slide


  5. 1

    View Slide

  6. Scala(/0#+
    ● #+-7Java2.6,3"
    8
    ● '$%
    7 148
    ● 57&)*)!!8


    6

    View Slide






  7. 7

    View Slide

  8. 01(*
    .)-4
    ● *. #'+
    ● %-!*./

    ● &$,"32
    8

    View Slide

  9. Cats Effect
    2

    View Slide


  10. Cats Effect
    ● 723Cats8.IO)%$:1"'
    *!5/*&*+-
    ● 9ZIOHaskellIOMonix Task6
    ● Type Level04(,#
    10

    View Slide

  11. !Future-
    ● Future#(Future **)
    ● &$Futureside-effectful
    ● %()"
    ! ! !
    ● +left identity '

    ,
    11

    View Slide

  12. http4s
    3

    View Slide

  13. http4s

    ● Fs2IO http
    (Framework

    ● Service As KleisliServer As Stream
    13

    View Slide

  14. +<
    ● Play! $' !API-)#)%!!!
    ● Finagle – Twitter Future/1
    ● Finch - ↑ :58Effect23 .*4
    9;
    ● AkkaHTTP ← Spray,6.
    7
    ● Colossus ???? &("
    <
    ● Chaos ??? 0<
    14

    View Slide

  15. Tagless final
    4

    View Slide

  16. Tagless Final
    ● $'%End Of The World
    ● "

    (Eff, Free
    ● ↑ !
    16

    View Slide


  17. ● Principle of Least Power



    17

    View Slide


  18. Application

    5

    View Slide

  19. -26*7
    ● % $!& "'#5 345(+
    2

    ● ),persistence.in memoryHashMap)0

    8DB91/
    '# :
    https://github.com/dysangelist/scala_kansai_demo
    19

    View Slide



  20. 20

    View Slide

  21. Algebra①
    21

    %#)! '
    ● Type"$&(

    View Slide

  22. Algebra②
    22

    View Slide

  23. Algebra③
    23
    ● *(Algebra'"$ &%#!+

    ● -.Aggregate-DDD,

    ) .

    View Slide

  24. Algebra④
    24

    View Slide

  25. Logic①
    25
    ● Logic, Algebra

    View Slide

  26. Logic②
    26

    View Slide


  27. 27

    View Slide


  28. 28
    ● Service/Router Logic


    View Slide


  29. 29

    View Slide



  30. 30
    ● !!

    View Slide


  31. 31

    View Slide

  32. Representation
    32
    ● Algebra

    View Slide

  33. Representation②
    33
    ● InMemory


    View Slide

  34. Representation③
    34
    ● InMemory


    View Slide

  35. ● HttpService[F]Kleisli[OptionT[F, ?], Request[F], Response[F]]
    alias

    IntelliJcombineK

    Service?
    35

    View Slide


  36. 36

    View Slide

  37. 4
    37
    ● FW%#%&(),1.Separation
    of Concerns
    ● "!'$
    03/
    ● http4sOpinionated 2*
    ● +-

    View Slide

  38. 38
    ~fin~
    Any questions?

    View Slide