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

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

  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