Slide 1

Slide 1 text

The High Velocity Web Framework For Java and Scala 2016-06-27 JJUG φΠτηϛφʔ 1

Slide 2

Slide 2 text

ࣗݾ঺հ w കᖒ༤Ұ࿠ !HBSCBHFUPXO w גࣜձࣾ%54 w ୤ໟαΠτ༧໿؅ཧ 4"4USVUT w 7*4"ൃڅࢧԉ 1MBZ w ΦϜχνϟωϧϏοάσʔλ )BEPPQ w ՝֎׆ಈ w 8%#13&44WPMدߘ w %FWFMPQFST4VNNJUొஃ 2

Slide 3

Slide 3 text

ࣗݾ঺հ w 1MBZ'SBNFXPSLυΩϡϝϯτ຋༁ 3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

໔੹ࣄ߲ w 1MBZ*4/05l+BWBz'SBNFXPSL w 1MBZ͸l8zϑϨʔϜϫʔΫ w 1MBZ͸+BWBͰ͸ͳ͍Կ͔ w 1MBZ͸جຊతʹ4DBMB w ͝ར༻͸ܭըతʹ 5

Slide 6

Slide 6 text

໨࣍ w 1MBZͷྺ࢙ w 1MBZͷಛ௃ w 1MBZͷ࢖͍ํ w 1MBZͷར఺ܽ఺ w ·ͱΊ 6

Slide 7

Slide 7 text

Ξϯέʔτ w Ͳͷ8FCϑϨʔϜϫʔΫΛ࢖͍ͬͯ·͔͢ʁ ☑ 4FBTBS 4"4USVUT 44USVUT 5FFEB FUD ☑ 4USVUT ☑ 4USVUT ☑ 4QSJOH'SBNFXPSL 4QSJOH.7$ FUD ☑ +BWB&& +4' +"934 FUD ☑ 1MBZ1MBZ 7

Slide 8

Slide 8 text

Ξϯέʔτ w 1MBZ'SBNFXPSLʹ͍ͭͯ ΄ͱΜͲͳʹ΋஌Βͳ͍ झຯͰ࢖ͬͨ͜ͱ͕͋Δ ࢓ࣄͰ࢖ͬͨ͜ͱ͕͋Δ ׬શʹϚελʔ͍ͯ͠Δ 8

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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 ຋༁Λ࢝Ίͨͷ͸ ͜ͷࠒ

Slide 11

Slide 11 text

ͦͷଞͷྺ࢙ 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

Slide 12

Slide 12 text

पลͷྺ࢙ 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 ؖࠃ Ϧʔδϣϯ

Slide 13

Slide 13 text

Play1ͷྺ࢙ 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

2009~2011 w +BWBͱ4"4USVUTͰ*&ରԠͳͲ w 3BJMTઈ޷ௐ w +BWBͷఀ଺ײ w 4ػೳ௥Ճఀࢭ w 0SBDMFʹΑΔ4VOͷങऩ w +BWBʹ΋3BJMTΛʂ ˠ 1MBZ 15

Slide 16

Slide 16 text

Play1 w ෹;FOHVMBSJUZ چ;FOFYJUZ w (VJMMBVNF#PSU !HVJMMBVNFCPSU w +BWB੡ w +BWB༻ w (SPPWZςϯϓϨʔτ w 1MBZίϯιʔϧ 1ZUIPOεΫϦϓτ w JWZ 16

Slide 17

Slide 17 text

Play1 17 ݪจ: http://guillaumebort.tumblr.com/post/558830013/why-there-is-no-servlets-in-play ࿨༁: http://ikeike443.hatenablog.com/entry/20120107/p1 ཁ໿ ʮ8͸εςʔτϨε͔ͩΒ αʔϒϨοτ΍Ίͨʯ

Slide 18

Slide 18 text

Play1 w +BWBͰ͸ͳ͍Կ͔ w HSPPWZςϯϓϨʔτ w QZUIPOεΫϦϓτ w ׂΓ੾ͬͨύοέʔδ໊ w QMBZ QMBZEC QMBZNWD FUD w ৼΓ੾ͬͨΫϥε໊ w +BWBKBWB 'KBWB FUD w ྫ֎Λܧঝͨ͠໭Γ஋ w ϦϑϨΫγϣϯόΠτίʔυૢ࡞Λଟ༻ 18

Slide 19

Slide 19 text

Play1 w +BWBͷඇ߹ཧͳ׳श΍ػೳෆ଍΁ͷ௅ઓ w ΍Γա͗ײ΋͋Δֶ͕Ϳ΂͖ͱ͜Ζ΋ଟ͍ 19

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Play2ͷྺ࢙ 21 (ਫΛҿΉ)

Slide 22

Slide 22 text

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 ؖࠃ Ϧʔδϣϯ

Slide 23

Slide 23 text

2012~ w ϑϨʔϜϫʔΫͷੈ୅ަ୅ w 4USVUT&0- w 4FBTBS&0- w +BWBͷ෮׆ w +BWB 4QSJOH +BWB&& w Ϋϥ΢υϞόΠϧͷຊ֨Խ w +BWB.7$ϑϨʔϜϫʔΫͷઌ΁ʂ ˠ 1MBZ 23

Slide 24

Slide 24 text

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 ޙड़ ʹઐ೦

Slide 25

Slide 25 text

Play2 w 4DBMBͰશ໘తʹॻ͖௚͠ w ౰ॳ͸ػೳ͕ෆे෼Ͱ඼࣭΋ෆ҆ఆ w ลΓ͔Β඼࣭͕҆ఆ w όʔδϣϯΞοϓຖʹେ୾ͳมߋ w "LLBΛ౷߹ w 3FBDUJWF1MBUGPSNͷҰ෦ʹ 25

Slide 26

Slide 26 text

Reactive Platform 26 https://www.lightbend.com/products/lightbend-reactive-platform

Slide 27

Slide 27 text

Akka w ฏߦ෼ࢄॲཧϑϨʔϜϫʔΫ w ΞΫλʔϞσϧ w "LLB4USFBNT w "LLBʹΑΔ3FBDUJWF4USFBNT࣮૷ w 1MBZͷετϦʔϜॲཧʹར༻ w "LLB)551 w "LLB4USFBNʹΑΔ൚༻)551ϑϨʔϜϫʔΫ w 1MBZͷ)551ج൫ʹͳΔ༧ఆ 27 +%,ʹ 3FBDUJWF4USFBNT ͕ೖΔ༧ఆ

Slide 28

Slide 28 text

Lagom w ϚΠΫϩαʔϏεϑϨʔϜϫʔΫ w 1MBZ্Ͱಈ࡞ w $234 ίϚϯυΫΤϦ੹຿෼཭ w $PNNBOEBOE2VFSZ3FTQPOTJCJMJUZ4FHSFHBUJPO w FWFOUTPVSDJOH w DJSDVJUCSFBLFS w +BWB"1* w কདྷతʹ4DBMB"1*΋ެ։༧ఆ 28

Slide 29

Slide 29 text

Playͷಛ௃ 29 (͜͜Ͱ15෼ܦաͩͱ͍͍ײ͡)

Slide 30

Slide 30 text

Playͷಛ௃ w 8FCϑϨʔϜϫʔΫ w ϗοτϦϩʔυ w εΩʔϚ؅ཧ w ϑϧελοΫ w Ϟδϡʔϧ w +BWB4DBMB"1* w ඇಉظॲཧ w FUD 30

Slide 31

Slide 31 text

WebϑϨʔϜϫʔΫ w 4FSWMFU"1*ඇґଘ w 4FSWMFUίϯςφͰ͸ جຊతʹ ಈ࡞͠ͳ͍ w ૊ΈࠐΈ/FUUZͰಈ࡞ 31

Slide 32

Slide 32 text

WebϑϨʔϜϫʔΫ w εςʔτϨεΞʔΩςΫνϟ w αʔόଆηογϣϯͳ͠ʂ w ΫϥΠΞϯτଆ$PPLJFηογϣϯ w ҉߸Խ͞Εͨ,#·Ͱͷจࣈྻ w 'MBTIείʔϓ΋ఏڙ w ΦϒδΣΫτΩϟογϡ͸$BDIF"1*ͰରԠ 32 εέʔϥϒϧ

Slide 33

Slide 33 text

ϗοτϦϩʔυ w αʔόΛ࠶ىಈͤͣʹ։ൃ w ϦΫΤετຖʹιʔείʔυͷߋ৽ΛνΣοΫ w ૊ΈࠐΈ&$+ͰίϯύΠϧ w Ϋϥεϩʔμࠩ͠ସ͑ 33

Slide 34

Slide 34 text

ϗοτϦϩʔυ w +BWB4DBMBιʔεҎ֎΋੩తݕࠪ w Ξηοτ w $P⒎FF4DSJQU -&44 w ϏϡʔςϯϓϨʔτ w ϧʔςΟϯά w σʔλϕʔεεΩʔϚ 34

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

ϑϧελοΫ w 8FC։ൃʹඞཁͳػೳΛσϑΥϧτఏڙ w .7$ w 03. w 8FC4PDLFU w 8FCαʔϏεΫϥΠΞϯτ w +40/ 9.- w $BDIF w +PC w 5FTU w FUD 36

Slide 37

Slide 37 text

Ϟδϡʔϧ w ͦͷଞͷศརͳػೳΛϞδϡʔϧͰఏڙ w "VUIFOUJDBUJPOBOE"VUIPSJ[BUJPO !HBLV[[[[͞Μ w 'MZXBZ !UPUPUPTIJ͞Μ w 4BTT w 4DBMJLF+%#$ !TFSBUDI͞Μ w 4XBHHFS w 5IZNFMFBG w FUD 37

Slide 38

Slide 38 text

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 ʹมߋ༧ఆʂ

Slide 39

Slide 39 text

ඇಉظॲཧ w 1MBZ w ϦΫΤετ͝ͱʹεϨουΛׂΓ౰ͯΔಉظॲཧ w /FUUZ$PNNPOT+BWBqPXͰܧଓΛ࣮૷ w 1MBZ w ϦΫΤετΛ"LLB"DUPSʹҕৡ͢Δඇಉظॲཧ w 1MBZͰετϦʔϜॲཧΛ"LLB4USFBNTʹஔ׵ w 1MBZ Ͱ/FUUZΛ"LLB)551ʹஔ׵༧ఆ 39 ࠓޙ΋ "LLBͱͷ ౷߹͕ਐΉ

Slide 40

Slide 40 text

Playͷ࢖͍ํ 40 2.4/Java (͜͜Ͱ20෼ܦաͩͱ͍͍ײ͡)

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

Πϯετʔϧ w લఏ w +%, w खॱ w "DUJWBUPSͷ[JQΛμ΢ϯϩʔυ͢Δ w IUUQTQMBZGSBNFXPSLDPNEPXOMPBE w ೚ҙͷ৔ॴʹల։͢Δ w 1"5)Λ௨͢ 42

Slide 43

Slide 43 text

ϓϩδΣΫτ࡞੒ w ςϯϓϨʔτΛ୳ͯ͠ϓϩδΣΫτΛ࡞Δ 43 BDUJWBUPSOFXʹ ϓϩδΣΫτ໊ͱ ςϯϓϨʔτ໊Λ౉͢

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

Play1 w ར఺ w ҆ఆੑɻେ͖ͳ࢓༷มߋ͸ͳ͍ݟࠐΈ w ܰշͳ։ൃ w ܽ఺ w +BWBͰ͸ͳ͍Կ͔ w όΠτίʔυૢ࡞ʹΑΔ༧ظ͠ͳ͍ಈ࡞ w ਐԽͷݶք w αϙʔτମ੍ 60 -PNCPLͱͷ ૬ੑ͕ѱ͍Β͍͠

Slide 61

Slide 61 text

Play2 w ར఺ w 4DBMB8FCϑϨʔϜϫʔΫͷσϑΝΫτελϯμʔυ w ϦΞΫςΟϒ΁ͷઌਐతͳऔΓ૊Έ w -JHIUCFOEࣾͷαϙʔτ w ܽ఺ w ԼҐඇޓ׵ੑ w 4DBMBͱ1MBZ૒ํͷ໰୊ɻ௥ै͢Δ֮ޛΛ w ίϯύΠϧ଎౓ w ۚͷ஄ؙ ߴ͍Ϛγϯ Ͱ֓Ͷղܾ 61

Slide 62

Slide 62 text

·ͱΊ 62

Slide 63

Slide 63 text

·ͱΊ w 1MBZͷྺ࢙ w 1MBZͱ1MBZ͕͋Δ w 1MBZͷಛ௃ w 4FSWMFU"1*ඇґଘ w 4FBTBS 4USVUT͔ΒͷҠߦ͸ͦΕͳΓʹେม w εςʔτϨε w Ϋϥ΢υ࣌୅ڧ੍Ϊϓε w ϗοτϦϩʔυ w αʔό࠶ىಈෆཁʂ 63 ґଘੑΛ௥Ճͨ͠৔߹͸ TCUSFMPBE͕ඞཁQ

Slide 64

Slide 64 text

·ͱΊ w 1MBZͷ࢖͍ํ w ؆୯Πϯετʔϧ w ϞσϧϏϡʔίϯτϩʔϥϧʔςΟϯά w 1MBZͷར఺ܽ఺ w 1MBZ͸҆ఆܰշ w +BWBʹର͢Δ௅ઓͷྺ࢙ w 1MBZ͸҆৺ઌਐత w ϦΞΫςΟϒͷઌۦ͚ w ۀ຿Ͱͷ͝ར༻͸ܭըతʹʂ 64

Slide 65

Slide 65 text

Enjoy Play !! 65

Slide 66

Slide 66 text

Thank you :-) 66