$30 off During Our Annual Pro Sale. View Details »

Steps to master the Play source code

Steps to master the Play source code

ScalaMatsuri 2016

Toshiyuki Takahashi

February 12, 2016
Tweet

More Decks by Toshiyuki Takahashi

Other Decks in Programming

Transcript

  1. 4UFQTUPNBTUFS
    UIF1MBZTPVSDFDPEF
    5PTIJZVLJ5BLBIBTIJ!TDBMBNBUTVSJ

    View Slide

  2. XIPBNJ
    w IUUQTHJUIVCDPNUPUPUPTIJ
    w TDBMBDTW qZXBZQMBZ TMJDLKPEB
    NBQQFS FUD
    w 'SFFMBODFFOHJOFFS
    w )PTUJOH1MBZNFFUVQ 1MBZTPVSDFDPEF
    SFBEJOH

    View Slide

  3. 3FBEJOHTPVSDFDPEF
    w 5PJOWFTUJHBUFBCVH
    w 5PDVTUPNJ[FUIFGSBNFXPSL
    w 5PMFBSO
    w 5PLJMMUJNF
    w FUD

    View Slide

  4. (PBM
    w -FBSOJOHTPNFCBDLHSPVOE
    JOGPSNBUJPOUPVOEFTUBOETPVSDFDPEF
    PG1MBZ
    w &YQMPSJOHUIFIJTUPSZPG1MBZ
    w 6OEFSTUBOEJOHUIFSPMFPGFBDINPEVMF

    View Slide

  5. 3PBENBQ
    &YQMPSJOHCVJMETCU
    6OEFSTUBOEJOHQBUUFSOTJO1MBZ
    -FBSOJOHFBDINPEVMF
    1FSGFDUMZNBTUFS

    View Slide

  6. 3PBENBQ
    &YQMPSJOHCVJMETCU
    6OEFSTUBOEJOHQBUUFSOTJO1MBZ
    -FBSOJOHFBDINPEVMF
    1FSGFDUMZNBTUFS

    View Slide

  7. 3FBEJOHCVJMETCU
    w CVJMETCUBOEGSBNFXPSLQSPKFDU
    w MJCSBSZ%FQFOEFODJFT
    w EFQFOET0O

    View Slide

  8. IUUQTHJUIVCDPNUPUPUPTIJQMBZEFQFOEFODZHSBQI

    View Slide

  9. ˠ
    w )JTUPSZPGSFGBDUPSJOH
    w NPSFUFTUBCMF
    w NPSFqFYJCMF

    View Slide

  10. ˠ
    w %FDPVQMFENPEVMFTBOEEFQFOEFODJFT
    w &BDIKBSIBTCFFOTNBMMFSUIBOCFGPSF
    w QMBZKBWBJTEJWJEFEGSPNQMBZTDBMB
    w BOPSNXFOUUPQMBZGSBNFXPSLBOPSN
    w 4DBMB5FNQMBUFXBTSFQMBDFEXJUIUXJSM

    View Slide

  11. 3PBENBQ
    &YQMPSJOHCVJMETCU
    6OEFSTUBOEJOHQBUUFSOTJO1MBZ
    -FBSOJOHFBDINPEVMF
    1FSGFDUMZNBTUFS

    View Slide

  12. 1BUUFSOT
    w %FQFOEFODZ*OKFDUJPO
    w *NQMJDJUQBSBNFUFSBLB5ZQFDMBTTFT

    View Slide

  13. 1BUUFSOT
    w %FQFOEFODZ*OKFDUJPO
    w *NQMJDJUQBSBNFUFSBLB5ZQFDMBTTFT

    View Slide

  14. %FQFOEFODZ*OKFDUJPO
    w 1MBZCSPVHIU$POTUSVDUPSCBTFE
    %FQFOEFODZ*OKFDUJPO
    w /PNPSF1MBZBQJ1MBZDVSSFOU
    w 3VOUJNF%*
    w $PNQJMFUJNF%*
    w 1MVHJOJTEFQSFDBUFEBOEXJMMCFSFNPWFE

    View Slide

  15. %*
    w 4QSJOH (VJDF
    w $BLF1BUUFSO
    w *NQMJDJU1BSBNFUFS
    w 3FBEFS.POBE

    View Slide

  16. $POTUSVDUPS*OKFDUJPO
    DMBTT6TFS3FQPTJUPSZ\
    EFGpOE"MM
    ^
    DMBTT6TFS4FSWJDF\
    WBMVTFS3FQPTJUPSZOFX6TFS3FQPTJUPSZ
    EFGHFU"MM6TFSVTFS3FQPTJUPSZpOE"MM
    ^

    View Slide

  17. $POTUSVDUPS*OKFDUJPO
    DMBTT.Z6TFS3FQPTJUPSZFYUFOET6TFS3FQPTJUPSZ\
    EFGpOE"MM
    ^
    DMBTT6TFS4FSWJDF VTFS3FQPTJUPSZ6TFS3FQPTJUPSZ
    \
    EFGHFU"MM6TFSVTFS3FQPTJUPSZpOE"MM
    ^

    View Slide

  18. 3VOUJNF%*
    DMBTT.Z6TFS3FQPTJUPSZFYUFOET6TFS3FQPTJUPSZ\
    EFGpOE"MM
    ^
    DMBTT6TFS4FSWJDF!*OKFDU

    VTFS3FQPTJUPSZ6TFS3FQPTJUPSZ
    \
    EFGHFU"MM6TFSVTFS3FQPTJUPSZpOE"MM
    ^

    View Slide

  19. 3VOUJNF%*
    w #PVOECZ%*DPOUBJOFS
    DMBTT6TFS3FQPTJUPSZ.PEVMFFYUFOET6TFS3FQPTJUPSZ\
    EFGCJOEJOHT FOWJSPONFOU&OWJSPONFOU
    DPOpHVSBUJPO$POpHVSBUJPO
    4FR
    CJOE<6TFS3FQPTJUPSZ>UP<.Z6TFS3FQPTJUPSZ>
    ^

    View Slide

  20. $PNQJMFUJNF%*
    w #JOENBOVBMMZ
    DMBTT.Z$PNQPOFOUT DPOUFYU$POUFYU
    FYUFOET
    #VJMU*O$PNQPOFOUT'SPN$POUFYU DPOUFYU
    \
    MB[ZWBMSPVUFS3PVUFSFNQUZ
    MB[ZWBMNZ6TFS3FQPTJUPSZ
    OFX.Z6TFS3FQPTJUPSZ

    ^

    View Slide

  21. 1MBZ.PEVMF
    w &BDINPEVMFJTJNQMFNFOUFEBT1MBZ.PEVMF
    w FWPMVUJPOT DBDIF XT FUD
    w $BOXSJUFDVTUPN1MBZ.PEVMFJOUIFTBNF
    XBZ
    w *OJUJBMJ[BUJPOPSEFSPGNPEVMFTBSF
    BVUPNBUJDBMMZEFUFSNJOFEGSPNUIF
    EFQFOEFODZHSBQI

    View Slide

  22. &YBNQMF
    w IUUQTHJUIVCDPNqZXBZqZXBZQMBZ

    View Slide

  23. 1BUUFSOT
    w %FQFOEFODZ*OKFDUJPO
    w *NQMJDJUQBSBNFUFSBLB5ZQFDMBTTFT

    View Slide

  24. *NQMJDJUQBSBNFUFS
    DMBTT6TFS WBMOBNF4USJOH
    \
    XBOUUPFYUFOEUIJT
    EFGUPT
    4USJOHOBNF͞Μ
    ^

    View Slide

  25. *NQMJDJUQBSBNFUFS
    DMBTT6TFS WBMOBNF4USJOH

    USBJU1SJOUBCMF<5>\
    EFGUPT U5
    4USJOH
    ^

    View Slide

  26. *NQMJDJUQBSBNFUFS
    PCKFDU1SJOUBCMF4BOFYUFOET1SJOUBCMF<6TFS>\
    EFGUPT VTFS6TFS
    4USJOHVTFSOBNF͞Μ
    ^
    PCKFDU1SJOUBCMF4BNBFYUFOET1SJOUBCMF<6TFS>\
    EFGUPT VTFS6TFS
    4USJOHVTFSOBNF͞·
    ^

    View Slide

  27. *NQMJDJUQBSBNFUFS
    PCKFDU6TFS1SJOUFS\
    EFGQSJOUMO VTFS6TFS
    Q1SJOUBCMF<6TFS>
    6OJU\
    $POTPMFQSJOUMO QUPT VTFS


    ^
    ^

    View Slide

  28. *NQMJDJUQBSBNFUFS
    TDBMB6TFS1SJOUFSQSJOUMO OFX6TFS IPHF

    1SJOUBCMF4BNB

    IPHF͞·
    TDBMB6TFS1SJOUFSQSJOUMO OFX6TFS IPHF

    1SJOUBCMF4BO

    IPHF͞Μ

    View Slide

  29. *NQMJDJUQBSBNFUFS
    JNQMJDJUPCKFDU1SJOUBCMF4BOFYUFOET1SJOUBCMF<6TFS>\
    EFGUPT VTFS6TFS
    4USJOH
    VTFSOBNF͞Μ
    ^
    PCKFDU6TFS1SJOUFS\
    EFGQSJOUMO VTFS6TFS
    JNQMJDJUQ1SJOUBCMF<6TFS>
    \
    $POTPMFQSJOUMO QUPT VTFS


    ^
    ^

    View Slide

  30. *NQMJDJUQBSBNFUFS
    TDBMB6TFS1SJOUFSQSJOUMO OFX6TFS IPHF


    IPHF͞Μ
    w #FIBWJPSJTDIBOHFECZAJNQPSUA

    View Slide

  31. 5ZQFDMBTTFTJO1MBZ
    w 8SJUFBCMF
    w $POUFOU5ZQF0G
    w 2VFSZ4USJOH#JOEBCMF
    w 1BUI#JOEBCMF
    w FUD

    View Slide

  32. FYBNQMFT
    w IUUQTHJUIVCDPNUPUPUPTIJQMBZ
    KTPOT
    w IUUQTHJUIVCDPNUPUPUPTIJQMBZ
    KPEBSPVUFTCJOEFS

    View Slide

  33. 3PBENBQ
    &YQMPSJOHCVJMETCU
    6OEFSTUBOEJOHQBUUFSOTJO1MBZ
    -FBSOJOHFBDINPEVMF
    1FSGFDUMZNBTUFS

    View Slide


  34. IUUQTHJUIVCDPNUPUPUPTIJQMBZEFQFOEFODZHSBQI

    View Slide

  35. QMBZ
    w QMBZ
    w DPSFNPEVMFPG1MBZ4DBMB
    w "DUJPO 3PVUJOH $POpHVSBUJPO FUD
    w QMBZKBWB
    w DPSFNPEVMFPG1MBZ+BWB
    w EFQFOETPOQMBZ

    View Slide

  36. QMBZ
    w "DUJPO 3FRVFTUBOE3FTQPOTF FUD
    w IUUQTHJUIVCDPNQMBZGSBNFXPSL
    QMBZGSBNFXPSLUSFFNBTUFS
    GSBNFXPSLTSDQMBZTSDNBJOTDBMB
    QMBZBQJ

    View Slide

  37. KECD
    w QMBZKECD
    w )JLBSJ$1 #POF$1
    w QMBZKECDBQJ
    w *OUFSGBDFUPXSJUFDVTUPNJ[FE
    EBUBCBTFNPEVMF

    View Slide

  38. KECD
    w BOPSN QMBZTMJDL QMBZFCFBOBSFOPU
    JOUIJTSFQPTJUPSZ

    View Slide

  39. XT
    w "TZOD)UUQ$MJFOUXSBQQFS

    View Slide

  40. DBDIF
    w &I$BDIFCZEFGBVMU
    w DBOTQMJUJOUPQMBZDBDIFBOEQMBZ
    DBDIFBQJ

    View Slide

  41. QMBZKTPO
    w %PFTO`UEFQFOEPOQMBZ
    w VTFGVMJOPUIFSQSPKFDUT
    w 3FQMBDFEXJUI+TPOTJO1MBZ

    View Slide

  42. JUFSBUFFT QMBZGVODUJPOBM
    w 6UJMJUJFTGPSGVODUJPOBMQSPHSBNNJOH

    View Slide

  43. QMBZTFSWFS
    w *NQMFNFOUJPOPGUIF1MBZTFSWFS
    w QMBZOFUUZTFSWFS OFUUZCBTFE

    w QMBZBLLBIUUQTFSWFS BLLBIUUQ
    CBTFE

    View Slide

  44. QMBZTUSFBNT
    w FYQFSJNFOUBMNPEVMFGPSSFBDUJWF
    TUSFBNT
    w 1MBZBOE3FBDUJWF4USFBNT
    w 3FBDUJWF4USFBNTೖ໳ʢ+BQBOFTFʣ

    View Slide

  45. TCUQMVHJO
    w %FWFMPQNFOUFOWJSPONFOUBOE
    XPSLqPXBSFQSPWJEFECZTCUQMVHJO

    View Slide

  46. 3PBENBQ
    &YQMPSJOHCVJMETCU
    6OEFSTUBOEJOHQBUUFSOTJO1MBZ
    -FBSOJOHFBDINPEVMF
    1FSGFDUMZNBTUFS

    View Slide

  47. 50%0

    View Slide

  48. 4VNNBSZ
    w 1MBZIBTCFFOMBSHFMZSFGBDUPSFEBOE
    EFDPVQMFETJODF
    w DPSF
    w NPEVMFTMJLFXT DBDIF FUD
    w TCUQMVHJO
    w 1MBZJTOPXEFTJHOFEBSPVOE%*
    w 5ZQFDMBTTFTBSFBMTPDPNNPOMZGPVOE

    View Slide