Save 37% off PRO during our Black Friday Sale! »

The High Velocity Web Framework For Java and Scala

The High Velocity Web Framework For Java and Scala

2016-06-27 JJUG ナイトセミナー

681560628decbdf2f4ea68552fb4ec33?s=128

yuichiro umezawa

June 28, 2016
Tweet

Transcript

  1. The High Velocity Web Framework For Java and Scala 2016-06-27

    JJUG φΠτηϛφʔ 1
  2. ࣗݾ঺հ w കᖒ༤Ұ࿠ !HBSCBHFUPXO  w גࣜձࣾ%54 w ୤ໟαΠτ༧໿؅ཧ 4"4USVUT

     w 7*4"ൃڅࢧԉ 1MBZ  w ΦϜχνϟωϧϏοάσʔλ )BEPPQ  w ՝֎׆ಈ w 8&# %#13&44WPMدߘ w %FWFMPQFST4VNNJUొஃ 2
  3. ࣗݾ঺հ w 1MBZ'SBNFXPSLυΩϡϝϯτ຋༁ 3

  4. ࣗݾ঺հ 4 ࠷ۙ·ͨ ୟ͍͍ͯ·͢ʂ

  5. ໔੹ࣄ߲ w 1MBZ*4/05l+BWBz'SBNFXPSL w 1MBZ͸l8&#zϑϨʔϜϫʔΫ w 1MBZ͸+BWBͰ͸ͳ͍Կ͔ w 1MBZ͸جຊతʹ4DBMB w

    ͝ར༻͸ܭըతʹ 5
  6. ໨࣍ w 1MBZͷྺ࢙ w 1MBZͷಛ௃ w 1MBZͷ࢖͍ํ w 1MBZͷར఺ܽ఺ w

    ·ͱΊ 6
  7. Ξϯέʔτ w Ͳͷ8FCϑϨʔϜϫʔΫΛ࢖͍ͬͯ·͔͢ʁ ☑ 4FBTBS 4"4USVUT 44USVUT 5FFEB FUD 

    ☑ 4USVUT ☑ 4USVUT ☑ 4QSJOH'SBNFXPSL 4QSJOH.7$ FUD  ☑ +BWB&& +4' +"934 FUD  ☑ 1MBZ1MBZ 7
  8. Ξϯέʔτ w 1MBZ'SBNFXPSLʹ͍ͭͯ ΄ͱΜͲͳʹ΋஌Βͳ͍ झຯͰ࢖ͬͨ͜ͱ͕͋Δ ࢓ࣄͰ࢖ͬͨ͜ͱ͕͋Δ ׬શʹϚελʔ͍ͯ͠Δ 8

  9. Playͷྺ࢙ 9 (͜͜Ͱ5෼ܦաͩͱ͍͍ײ͡)

  10. Playͷྺ࢙ 10 ~2009 2010 2011 2012 2013 2014 2015 2016

    Play1 1.0 1.1 1.2 1.3/1.4 1.4.2 Play2 2.0 2.1/2.2 2.3 2.4 2.5.4 ຋༁Λ࢝Ίͨͷ͸ ͜ͷࠒ
  11. ͦͷଞͷྺ࢙ 11 ~2009 2010 2011 2012 2013 2014 2015 2016

    Seasar2 2.4.40 2.4.43 2.4.45 2.4.46 2.4.47 2.4.48 EoL Struts 1.3.10 EoL Struts2 2.1.8 2.2.1.1 2.3.1.1 2.3.8 2.3.16 2.3.20 2.3.24.1 2.5 Spring 3.0 3.1 3.2 4.0 4.1 4.2 4.3 Java EE 6 7 Rails 2.3 3.0 3.1 3.2 4.0 4.1 5.0beta
  12. पลͷྺ࢙ 12 ~2009 2010 2011 2012 2013 2014 2015 2016

    Java 6 7 8 IE 8 9 10 11 iPhone 3GS 4 4S 5 5S 6 6S SE AWS EMR VPC RDS Route53 ౦ژ Ϧʔδϣϯ Dynamo DB Redshift Kinesis Aurora Lambda API Gateway ؖࠃ Ϧʔδϣϯ
  13. Play1ͷྺ࢙ 13

  14. 2009~2011 14 ~2009 2010 2011 2012 2013 2014 2015 2016

    Play1 1.0 1.1 1.2 1.3/1.4 1.4.2 Seasar2 2.4.40 2.4.43 2.4.45 2.4.46 2.4.47 2.4.48 EoL Struts 1.3.10 EoL Rails 2.3 3.0 3.1 3.2 4.0 4.1 5.0beta Java 6 7 8 IE 8 9 10 11
  15. 2009~2011 w +BWBͱ4"4USVUTͰ*&ରԠͳͲ w 3BJMTઈ޷ௐ w +BWBͷఀ଺ײ w 4ػೳ௥Ճఀࢭ w

    0SBDMFʹΑΔ4VOͷങऩ w +BWBʹ΋3BJMTΛʂ ˠ 1MBZ 15
  16. Play1 w ෹;FOHVMBSJUZ چ;FOFYJUZ  w (VJMMBVNF#PSU !HVJMMBVNFCPSU  w

    +BWB੡ w +BWB༻ w (SPPWZςϯϓϨʔτ w 1MBZίϯιʔϧ 1ZUIPOεΫϦϓτ  w JWZ 16
  17. Play1 17 ݪจ: http://guillaumebort.tumblr.com/post/558830013/why-there-is-no-servlets-in-play ࿨༁: http://ikeike443.hatenablog.com/entry/20120107/p1 ཁ໿ ʮ8&#͸εςʔτϨε͔ͩΒ αʔϒϨοτ΍Ίͨʯ

  18. Play1 w +BWBͰ͸ͳ͍Կ͔ w HSPPWZςϯϓϨʔτ w QZUIPOεΫϦϓτ w ׂΓ੾ͬͨύοέʔδ໊ w

    QMBZ QMBZEC QMBZNWD FUD w ৼΓ੾ͬͨΫϥε໊ w +BWBKBWB 'KBWB FUD w ྫ֎Λܧঝͨ͠໭Γ஋ w ϦϑϨΫγϣϯόΠτίʔυૢ࡞Λଟ༻ 18
  19. Play1 w +BWBͷඇ߹ཧͳ׳श΍ػೳෆ଍΁ͷ௅ઓ w ΍Γա͗ײ΋͋Δֶ͕Ϳ΂͖ͱ͜Ζ΋ଟ͍ 19

  20. w ͦͯ͠1MBZ΁ Play1 20 ݪจ: https://groups.google.com/forum/#!msg/play-framework/jNyoIWv_xGQ/URpYquncn2oJ ཁ໿ ʮ͜Ε͔Β͸ϦΞϧλΠϜ 8&#͔ͩΒඇಉظʹ͢Δʯ ࿨༁:

    https://playframework.com/documentation/ja/2.0.x/Philosophy
  21. Play2ͷྺ࢙ 21 (ਫΛҿΉ)

  22. 2012~ 22 ~2009 2010 2011 2012 2013 2014 2015 2016

    Play2 2.0 2.1/2.2 2.3 2.4 2.5.4 Spring 3.0 3.1 3.2 4.0 4.1 4.2 4.3 Java EE 6 7 Java 6 7 8 iPhone 3GS 4 4S 5 5S 6 6S SE AWS EMR VPC RDS Route53 ౦ژ Ϧʔδϣϯ Dynamo DB Redshift Kinesis Aurora Lambda API Gateway ؖࠃ Ϧʔδϣϯ
  23. 2012~ w ϑϨʔϜϫʔΫͷੈ୅ަ୅ w 4USVUT&0- w 4FBTBS&0- w +BWBͷ෮׆ w

    +BWB 4QSJOH +BWB&& w Ϋϥ΢υϞόΠϧͷຊ֨Խ w +BWB.7$ϑϨʔϜϫʔΫͷઌ΁ʂ ˠ 1MBZ 23
  24. Play2 w ถ-JHIUCFOE چ5ZQFTBGF  w +BNFT3PQFS !KSPQFS  ˠ

    (SFH.FUIWJO !HNFUIWJO  w 4DBMB੡ w 4DBMB+BWB༻ w 4DBMBςϯϓϨʔτ w "DUJWBUPSίϯιʔϧ w TCU 24 1MBZ͸(SFH͕ 5FDI-FBEʹ +BNFT͸-BHPN ޙड़ ʹઐ೦
  25. Play2 w 4DBMBͰશ໘తʹॻ͖௚͠ w ౰ॳ͸ػೳ͕ෆे෼Ͱ඼࣭΋ෆ҆ఆ w ลΓ͔Β඼࣭͕҆ఆ w όʔδϣϯΞοϓຖʹେ୾ͳมߋ w

    "LLBΛ౷߹ w 3FBDUJWF1MBUGPSNͷҰ෦ʹ 25
  26. Reactive Platform 26 https://www.lightbend.com/products/lightbend-reactive-platform

  27. Akka w ฏߦ෼ࢄॲཧϑϨʔϜϫʔΫ w ΞΫλʔϞσϧ w "LLB4USFBNT w "LLBʹΑΔ3FBDUJWF4USFBNT࣮૷ w

    1MBZͷετϦʔϜॲཧʹར༻ w "LLB)551 w "LLB4USFBNʹΑΔ൚༻)551ϑϨʔϜϫʔΫ w 1MBZͷ)551ج൫ʹͳΔ༧ఆ 27 +%,ʹ 3FBDUJWF4USFBNT ͕ೖΔ༧ఆ
  28. Lagom w ϚΠΫϩαʔϏεϑϨʔϜϫʔΫ w 1MBZ্Ͱಈ࡞ w $234 ίϚϯυΫΤϦ੹຿෼཭  w

    $PNNBOEBOE2VFSZ3FTQPOTJCJMJUZ4FHSFHBUJPO w FWFOUTPVSDJOH w DJSDVJUCSFBLFS w +BWB"1* w কདྷతʹ4DBMB"1*΋ެ։༧ఆ 28
  29. Playͷಛ௃ 29 (͜͜Ͱ15෼ܦաͩͱ͍͍ײ͡)

  30. Playͷಛ௃ w 8FCϑϨʔϜϫʔΫ w ϗοτϦϩʔυ w εΩʔϚ؅ཧ w ϑϧελοΫ w

    Ϟδϡʔϧ w +BWB4DBMB"1* w ඇಉظॲཧ w FUD 30
  31. WebϑϨʔϜϫʔΫ w 4FSWMFU"1*ඇґଘ w 4FSWMFUίϯςφͰ͸ جຊతʹ ಈ࡞͠ͳ͍ w ૊ΈࠐΈ/FUUZͰಈ࡞ 31

  32. WebϑϨʔϜϫʔΫ w εςʔτϨεΞʔΩςΫνϟ w αʔόଆηογϣϯͳ͠ʂ w ΫϥΠΞϯτଆ$PPLJFηογϣϯ w ҉߸Խ͞Εͨ,#·Ͱͷจࣈྻ w

    'MBTIείʔϓ΋ఏڙ w ΦϒδΣΫτΩϟογϡ͸$BDIF"1*ͰରԠ 32 εέʔϥϒϧ
  33. ϗοτϦϩʔυ w αʔόΛ࠶ىಈͤͣʹ։ൃ w ϦΫΤετຖʹιʔείʔυͷߋ৽ΛνΣοΫ w ૊ΈࠐΈ&$+ͰίϯύΠϧ w Ϋϥεϩʔμࠩ͠ସ͑ 33

  34. ϗοτϦϩʔυ w +BWB4DBMBιʔεҎ֎΋੩తݕࠪ w Ξηοτ w $P⒎FF4DSJQU -&44 w ϏϡʔςϯϓϨʔτ

    w ϧʔςΟϯά w σʔλϕʔεεΩʔϚ 34
  35. εΩʔϚ؅ཧ w &WPMVUJPOT w 3BJMTͷ%#ϚΠάϨʔγϣϯͱ΄΅ಉ͡ 35 Άͪͬͱԡͯ͠ εΩʔϚߋ৽ʂ

  36. ϑϧελοΫ w 8FC։ൃʹඞཁͳػೳΛσϑΥϧτఏڙ w .7$ w 03. w 8FC4PDLFU w

    8FCαʔϏεΫϥΠΞϯτ w +40/ 9.- w $BDIF w +PC w 5FTU w FUD 36
  37. Ϟδϡʔϧ w ͦͷଞͷศརͳػೳΛϞδϡʔϧͰఏڙ w "VUIFOUJDBUJPOBOE"VUIPSJ[BUJPO !HBLV[[[[͞Μ  w 'MZXBZ !UPUPUPTIJ͞Μ

     w 4BTT w 4DBMJLF+%#$ !TFSBUDI͞Μ  w 4XBHHFS w 5IZNFMFBG w FUD 37
  38. Java/Scala API w 1MBZ w 4DBMB"1*͸ϞδϡʔϧͰαϙʔτ w 1MBZ w ωΠςΟϒαϙʔτ

    w +BWB"1* w QMBZNWDύοέʔδ౳ w 4DBMB"1* w QMBZBQJNWDύοέʔδ౳ 38 1MBZͰ QMBZKBWBBQJ QMBZTDBMBBQJ ʹมߋ༧ఆʂ
  39. ඇಉظॲཧ w 1MBZ w ϦΫΤετ͝ͱʹεϨουΛׂΓ౰ͯΔಉظॲཧ w /FUUZ $PNNPOT+BWBqPXͰܧଓΛ࣮૷ w 1MBZ

    w ϦΫΤετΛ"LLB"DUPSʹҕৡ͢Δඇಉظॲཧ w 1MBZͰετϦʔϜॲཧΛ"LLB4USFBNTʹஔ׵ w 1MBZ Ͱ/FUUZΛ"LLB)551ʹஔ׵༧ఆ 39 ࠓޙ΋ "LLBͱͷ ౷߹͕ਐΉ
  40. Playͷ࢖͍ํ 40 2.4/Java (͜͜Ͱ20෼ܦաͩͱ͍͍ײ͡)

  41. Play ͷ࢖͍ํ w 1MBZΛΠϯετʔϧ͢Δ w ϓϩδΣΫτΛ࡞Δ w ΞϓϦέʔγϣϯΛॻ͘ w Ϟσϧ

    w Ϗϡʔ w ίϯτϩʔϥ w ϧʔςΟϯά 41
  42. Πϯετʔϧ w લఏ w +%, w खॱ w "DUJWBUPSͷ[JQΛμ΢ϯϩʔυ͢Δ w

    IUUQTQMBZGSBNFXPSLDPNEPXOMPBE w ೚ҙͷ৔ॴʹల։͢Δ w 1"5)Λ௨͢ 42
  43. ϓϩδΣΫτ࡞੒ w ςϯϓϨʔτΛ୳ͯ͠ϓϩδΣΫτΛ࡞Δ 43 BDUJWBUPSOFXʹ ϓϩδΣΫτ໊ͱ ςϯϓϨʔτ໊Λ౉͢

  44. ϓϩδΣΫτ࡞੒ w BDUJWBUPSίϯιʔϧʹೖͬͯىಈ͢Δ 44 SVOͷલʹldz νϧμ Λ ෇͚ΔͱιʔεΛ؂ࢹͯ͠ ஞ࣍ίϯύΠϧ

  45. ϓϩδΣΫτ࡞੒ w MPDBMIPTUʹΞΫηε 45

  46. Activator UI w ࠇ͍ը໘͕ۤखͳਓ޲͚ 46 (6*ͰϓϩδΣΫτ࡞੒ ϏϧυىಈςετͳͲ

  47. IDE w *OUFMMJ+*%&"Ͱ։͚ͩ͘ 47 &DMJQTF͸গ͠ ख͕ؒඞཁ

  48. ΞϓϦέʔγϣϯ࡞੒ w 1MBZͷσΟϨΫτϦߏ੒ 48

  49. ΞϓϦέʔγϣϯ࡞੒ w 1MBZͷσΟϨΫτϦߏ੒ 49 ΞϓϦέʔγϣϯιʔε֨ೲ༻ NPEFMT΍BTTFUT΋͜͜ʹ֨ೲ͢Δ ઃఆϑΝΠϧ֨ೲ༻ ެ։Ξηοτ֨ೲ༻ ςετιʔε֨ೲ༻

  50. ΞϓϦέʔγϣϯྫ w ϢʔβҰཡදࣔը໘ 50

  51. Ϟσϧ w NPEFMT6TFS 51 ຊདྷ͸σʔλϕʔε͔Β औಘ͢ΔॲཧͷϞοΫ࣮૷ Q

  52. Ϗϡʔ w BQQWJFXTMJTUTDBMBIUNM w ઌ಄ߦʹҾ਺৘ใΛهड़͢Δ w b!b͔Β࢝·Δߦ͸4DBMBͷίʔυ w WJFXTIUNMMJTUUFNQMBUFTDBMBʹίϯύΠϧ͞ΕΔ 52

    4DBMB
  53. ίϯτϩʔϥ w DPOUSPMMFST"QQMJDBUJPO w ςϯϓϨʔτ໊SFOEFSͰϏϡʔΛϨϯμϦϯάͰ͖Δ 53 WJFXTIUNM ͷ JNQPSUΛ ๨Εͣʹʂ

  54. ϧʔςΟϯά w DPOGSPVUFT w ϧʔςΟϯά৘ใΛҰݩ؅ཧ w SPVUFS3PVUFTTDBMBʹίϯύΠϧ͞ΕΔ 54 ΞΫγϣϯʹ)551ϦΫΤετ ΛϚοϐϯά͢Δ

  55. ಈ࡞֬ೝ w MPDBMIPTUVTFSTʹΞΫηε 55 αʔόΛ࠶ىಈͤͣʹ ػೳΛ௥Ճʂ

  56. JSON w +40/Λฦ͢Α͏ίϯτϩʔϥΛมߋ 56

  57. ಈ࡞֬ೝ w MPDBMIPTUVTFSTʹΞΫηε 57 αʔόΛ࠶ىಈͤͣʹ ػೳΛมߋʂ

  58. ͦͷଞͷػೳ w υΩϡϝϯτΛࢀর 58 ೔ຊޠͰ΋ Ұ෦ ಡΊ·͢ʂ

  59. Playͷར఺/ܽ఺ 59 (͜͜Ͱ30෼ܦաͩͱ͍͍ײ͡)

  60. Play1 w ར఺ w ҆ఆੑɻେ͖ͳ࢓༷มߋ͸ͳ͍ݟࠐΈ w ܰշͳ։ൃ w ܽ఺ w

    +BWBͰ͸ͳ͍Կ͔ w όΠτίʔυૢ࡞ʹΑΔ༧ظ͠ͳ͍ಈ࡞ w ਐԽͷݶք w αϙʔτମ੍ 60 -PNCPLͱͷ ૬ੑ͕ѱ͍Β͍͠
  61. Play2 w ར఺ w 4DBMB8FCϑϨʔϜϫʔΫͷσϑΝΫτελϯμʔυ w ϦΞΫςΟϒ΁ͷઌਐతͳऔΓ૊Έ w -JHIUCFOEࣾͷαϙʔτ w

    ܽ఺ w ԼҐඇޓ׵ੑ w 4DBMBͱ1MBZ૒ํͷ໰୊ɻ௥ै͢Δ֮ޛΛ w ίϯύΠϧ଎౓ w ۚͷ஄ؙ ߴ͍Ϛγϯ Ͱ֓Ͷղܾ 61
  62. ·ͱΊ 62

  63. ·ͱΊ w 1MBZͷྺ࢙ w 1MBZͱ1MBZ͕͋Δ w 1MBZͷಛ௃ w 4FSWMFU"1*ඇґଘ w

    4FBTBS 4USVUT͔ΒͷҠߦ͸ͦΕͳΓʹେม w εςʔτϨε w Ϋϥ΢υ࣌୅ڧ੍Ϊϓε w ϗοτϦϩʔυ w αʔό࠶ىಈෆཁʂ 63 ґଘੑΛ௥Ճͨ͠৔߹͸ TCUSFMPBE͕ඞཁQ
  64. ·ͱΊ w 1MBZͷ࢖͍ํ w ؆୯Πϯετʔϧ w ϞσϧϏϡʔίϯτϩʔϥϧʔςΟϯά w 1MBZͷར఺ܽ఺ w

    1MBZ͸҆ఆܰշ w +BWBʹର͢Δ௅ઓͷྺ࢙ w 1MBZ͸҆৺ઌਐత w ϦΞΫςΟϒͷઌۦ͚ w ۀ຿Ͱͷ͝ར༻͸ܭըతʹʂ 64
  65. Enjoy Play !! 65

  66. Thank you :-) 66