Steps to master the Play source code

Steps to master the Play source code

ScalaMatsuri 2016

405ad7da1defc0f6f8804e026778038f?s=128

Toshiyuki Takahashi

February 12, 2016
Tweet

Transcript

  1. 4UFQTUPNBTUFS UIF1MBZTPVSDFDPEF 5PTIJZVLJ5BLBIBTIJ!TDBMBNBUTVSJ

  2. XIPBNJ w IUUQTHJUIVCDPNUPUPUPTIJ w TDBMBDTW qZXBZQMBZ TMJDLKPEB NBQQFS FUD w

    'SFFMBODFFOHJOFFS w )PTUJOH1MBZNFFUVQ 1MBZTPVSDFDPEF SFBEJOH
  3. 3FBEJOHTPVSDFDPEF w 5PJOWFTUJHBUFBCVH w 5PDVTUPNJ[FUIFGSBNFXPSL w 5PMFBSO w 5PLJMMUJNF w

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

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

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

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

  8. IUUQTHJUIVCDPNUPUPUPTIJQMBZEFQFOEFODZHSBQI

  9. ˠ w )JTUPSZPGSFGBDUPSJOH w NPSFUFTUBCMF w NPSFqFYJCMF

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

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

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

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

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

    w 1MVHJOJTEFQSFDBUFEBOEXJMMCFSFNPWFE
  15. %* w 4QSJOH (VJDF  w $BLF1BUUFSO  w *NQMJDJU1BSBNFUFS

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

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

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

    EFGHFU"MM6TFSVTFS3FQPTJUPSZpOE"MM ^
  19. 3VOUJNF%* w #PVOECZ%*DPOUBJOFS DMBTT6TFS3FQPTJUPSZ.PEVMFFYUFOET6TFS3FQPTJUPSZ\ EFGCJOEJOHT FOWJSPONFOU&OWJSPONFOU  DPOpHVSBUJPO$POpHVSBUJPO 4FR 

    CJOE<6TFS3FQPTJUPSZ>UP<.Z6TFS3FQPTJUPSZ> ^
  20. $PNQJMFUJNF%* w #JOENBOVBMMZ DMBTT.Z$PNQPOFOUT DPOUFYU$POUFYU FYUFOET #VJMU*O$PNQPOFOUT'SPN$POUFYU DPOUFYU \ MB[ZWBMSPVUFS3PVUFSFNQUZ

    MB[ZWBMNZ6TFS3FQPTJUPSZ OFX.Z6TFS3FQPTJUPSZ  ^
  21. 1MBZ.PEVMF w &BDINPEVMFJTJNQMFNFOUFEBT1MBZ.PEVMF w FWPMVUJPOT DBDIF XT FUD w $BOXSJUFDVTUPN1MBZ.PEVMFJOUIFTBNF

    XBZ w *OJUJBMJ[BUJPOPSEFSPGNPEVMFTBSF BVUPNBUJDBMMZEFUFSNJOFEGSPNUIF EFQFOEFODZHSBQI
  22. &YBNQMF w IUUQTHJUIVCDPNqZXBZqZXBZQMBZ

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

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

  25. *NQMJDJUQBSBNFUFS DMBTT6TFS WBMOBNF4USJOH  USBJU1SJOUBCMF<5>\ EFGUPT U5 4USJOH ^

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

    4USJOHVTFSOBNF ͞· ^
  27. *NQMJDJUQBSBNFUFS PCKFDU6TFS1SJOUFS\ EFGQSJOUMO VTFS6TFS Q1SJOUBCMF<6TFS> 6OJU\ $POTPMFQSJOUMO QUPT VTFS 

    ^ ^
  28. *NQMJDJUQBSBNFUFS TDBMB6TFS1SJOUFSQSJOUMO OFX6TFS IPHF 1SJOUBCMF4BNB  IPHF͞· TDBMB6TFS1SJOUFSQSJOUMO OFX6TFS IPHF

    1SJOUBCMF4BO  IPHF͞Μ
  29. *NQMJDJUQBSBNFUFS JNQMJDJUPCKFDU1SJOUBCMF4BOFYUFOET1SJOUBCMF<6TFS>\ EFGUPT VTFS6TFS 4USJOH VTFSOBNF ͞Μ ^ PCKFDU6TFS1SJOUFS\ EFGQSJOUMO

    VTFS6TFS JNQMJDJUQ1SJOUBCMF<6TFS> \ $POTPMFQSJOUMO QUPT VTFS  ^ ^
  30. *NQMJDJUQBSBNFUFS TDBMB6TFS1SJOUFSQSJOUMO OFX6TFS IPHF  IPHF͞Μ w #FIBWJPSJTDIBOHFECZAJNQPSUA

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

    FUD
  32. FYBNQMFT w IUUQTHJUIVCDPNUPUPUPTIJQMBZ KTPOT w IUUQTHJUIVCDPNUPUPUPTIJQMBZ KPEBSPVUFTCJOEFS

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

  34. ࠶ IUUQTHJUIVCDPNUPUPUPTIJQMBZEFQFOEFODZHSBQI

  35. QMBZ w QMBZ w DPSFNPEVMFPG1MBZ4DBMB w "DUJPO 3PVUJOH $POpHVSBUJPO FUD

    w QMBZKBWB w DPSFNPEVMFPG1MBZ+BWB w EFQFOETPOQMBZ
  36. QMBZ w "DUJPO 3FRVFTUBOE3FTQPOTF FUD w IUUQTHJUIVCDPNQMBZGSBNFXPSL QMBZGSBNFXPSLUSFFNBTUFS GSBNFXPSLTSDQMBZTSDNBJOTDBMB QMBZBQJ

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

    EBUBCBTFNPEVMF
  38. KECD w BOPSN QMBZTMJDL QMBZFCFBOBSFOPU JOUIJTSFQPTJUPSZ

  39. XT w "TZOD)UUQ$MJFOUXSBQQFS

  40. DBDIF w &I$BDIFCZEFGBVMU w DBOTQMJUJOUPQMBZDBDIFBOEQMBZ DBDIFBQJ

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

  42. JUFSBUFFT QMBZGVODUJPOBM w 6UJMJUJFTGPSGVODUJPOBMQSPHSBNNJOH

  43. QMBZTFSWFS w *NQMFNFOUJPOPGUIF1MBZTFSWFS w QMBZOFUUZTFSWFS OFUUZCBTFE  w QMBZBLLBIUUQTFSWFS BLLBIUUQ

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

  45. TCUQMVHJO w %FWFMPQNFOUFOWJSPONFOUBOE XPSLqPXBSFQSPWJEFECZTCUQMVHJO

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

  47. 50%0

  48. 4VNNBSZ w 1MBZIBTCFFOMBSHFMZSFGBDUPSFEBOE EFDPVQMFETJODF w DPSF w NPEVMFTMJLFXT DBDIF FUD

    w TCUQMVHJO w 1MBZJTOPXEFTJHOFEBSPVOE%* w 5ZQFDMBTTFTBSFBMTPDPNNPOMZGPVOE