Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The High Velocity Web Framework For Java and Scala
Search
yuichiro umezawa
June 28, 2016
Technology
1
2.6k
The High Velocity Web Framework For Java and Scala
2016-06-27 JJUG ナイトセミナー
yuichiro umezawa
June 28, 2016
Tweet
Share
More Decks by yuichiro umezawa
See All by yuichiro umezawa
OAuth 2.0 をかみくだく
garbagetown
22
7.9k
jjug ccc 2017 spring ccc_g1
garbagetown
8
13k
Other Decks in Technology
See All in Technology
Agent Skills 入門
puku0x
0
750
Exadata Fleet Update
oracle4engineer
PRO
0
1.2k
猫でもわかるKiro CLI(セキュリティ編)
kentapapa
1
250
横断SREがSRE社内留学制度 / Enablingになぜ踏み切ったのか
rvirus0817
0
300
歴史に敬意を! パラシュートVPoEが組織と共同で立ち上がる信頼醸成オンボーディング
go0517go
PRO
0
120
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
2
1.1k
AIエージェントのメモリについて
shibuiwilliam
0
350
#23 Turing × atmaCup 2nd 6th Place Solution + 取り組み方紹介
yumizu
0
150
30分でわかるアーキテクチャモダナイゼーション
nwiizo
7
3k
opsmethod第1回_アラート調査の自動化にむけて
yamatook
0
130
AWS Transformを使ってCOBOLプログラムのモダナイズに挑戦
duelist2020jp
1
100
ファイルシステムの不整合
sat
PRO
2
110
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
30 Presentation Tips
portentint
PRO
1
240
Statistics for Hackers
jakevdp
799
230k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
72k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
58
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
170
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
210
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Transcript
The High Velocity Web Framework For Java and Scala 2016-06-27
JJUG φΠτηϛφʔ 1
ࣗݾհ w കᖒ༤Ұ !HBSCBHFUPXO w גࣜձࣾ%54 w ໟαΠτ༧ཧ 4"4USVUT
w 7*4"ൃڅࢧԉ 1MBZ w ΦϜχνϟωϧϏοάσʔλ )BEPPQ w ՝֎׆ಈ w 8&# %#13&44WPMدߘ w %FWFMPQFST4VNNJUొஃ 2
ࣗݾհ w 1MBZ'SBNFXPSLυΩϡϝϯτ༁ 3
ࣗݾհ 4 ࠷ۙ·ͨ ୟ͍͍ͯ·͢ʂ
໔ࣄ߲ w 1MBZ*4/05l+BWBz'SBNFXPSL w 1MBZl8&#zϑϨʔϜϫʔΫ w 1MBZ+BWBͰͳ͍Կ͔ w 1MBZجຊతʹ4DBMB w
͝ར༻ܭըతʹ 5
࣍ w 1MBZͷྺ࢙ w 1MBZͷಛ w 1MBZͷ͍ํ w 1MBZͷརܽ w
·ͱΊ 6
Ξϯέʔτ w Ͳͷ8FCϑϨʔϜϫʔΫΛ͍ͬͯ·͔͢ʁ ☑ 4FBTBS 4"4USVUT 44USVUT 5FFEB FUD
☑ 4USVUT ☑ 4USVUT ☑ 4QSJOH'SBNFXPSL 4QSJOH.7$ FUD ☑ +BWB&& +4' +"934 FUD ☑ 1MBZ1MBZ 7
Ξϯέʔτ w 1MBZ'SBNFXPSLʹ͍ͭͯ ΄ͱΜͲͳʹΒͳ͍ झຯͰͬͨ͜ͱ͕͋Δ ࣄͰͬͨ͜ͱ͕͋Δ શʹϚελʔ͍ͯ͠Δ 8
Playͷྺ࢙ 9 (͜͜Ͱ5ܦաͩͱ͍͍ײ͡)
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 ~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 ~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 ؖࠃ Ϧʔδϣϯ
Play1ͷྺ࢙ 13
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
2009~2011 w +BWBͱ4"4USVUTͰ*&ରԠͳͲ w 3BJMTઈௐ w +BWBͷఀײ w 4ػೳՃఀࢭ w
0SBDMFʹΑΔ4VOͷങऩ w +BWBʹ3BJMTΛʂ ˠ 1MBZ 15
Play1 w ;FOHVMBSJUZ چ;FOFYJUZ w (VJMMBVNF#PSU !HVJMMBVNFCPSU w
+BWB w +BWB༻ w (SPPWZςϯϓϨʔτ w 1MBZίϯιʔϧ 1ZUIPOεΫϦϓτ w JWZ 16
Play1 17 ݪจ: http://guillaumebort.tumblr.com/post/558830013/why-there-is-no-servlets-in-play ༁: http://ikeike443.hatenablog.com/entry/20120107/p1 ཁ ʮ8&#εςʔτϨε͔ͩΒ αʔϒϨοτΊͨʯ
Play1 w +BWBͰͳ͍Կ͔ w HSPPWZςϯϓϨʔτ w QZUIPOεΫϦϓτ w ׂΓͬͨύοέʔδ໊ w
QMBZ QMBZEC QMBZNWD FUD w ৼΓͬͨΫϥε໊ w +BWBKBWB 'KBWB FUD w ྫ֎Λܧঝͨ͠Γ w ϦϑϨΫγϣϯόΠτίʔυૢ࡞Λଟ༻ 18
Play1 w +BWBͷඇ߹ཧͳ׳शػೳෆͷઓ w Γա͗ײ͋Δֶ͕Ϳ͖ͱ͜Ζଟ͍ 19
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
Play2ͷྺ࢙ 21 (ਫΛҿΉ)
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 ؖࠃ Ϧʔδϣϯ
2012~ w ϑϨʔϜϫʔΫͷੈަ w 4USVUT&0- w 4FBTBS&0- w +BWBͷ෮׆ w
+BWB 4QSJOH +BWB&& w ΫϥυϞόΠϧͷຊ֨Խ w +BWB.7$ϑϨʔϜϫʔΫͷઌʂ ˠ 1MBZ 23
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 ޙड़ ʹઐ೦
Play2 w 4DBMBͰશ໘తʹॻ͖͠ w ॳػೳ͕ෆेͰ࣭ෆ҆ఆ w ลΓ͔Β࣭͕҆ఆ w όʔδϣϯΞοϓຖʹେͳมߋ w
"LLBΛ౷߹ w 3FBDUJWF1MBUGPSNͷҰ෦ʹ 25
Reactive Platform 26 https://www.lightbend.com/products/lightbend-reactive-platform
Akka w ฏߦࢄॲཧϑϨʔϜϫʔΫ w ΞΫλʔϞσϧ w "LLB4USFBNT w "LLBʹΑΔ3FBDUJWF4USFBNT࣮ w
1MBZͷετϦʔϜॲཧʹར༻ w "LLB)551 w "LLB4USFBNʹΑΔ൚༻)551ϑϨʔϜϫʔΫ w 1MBZͷ)551ج൫ʹͳΔ༧ఆ 27 +%,ʹ 3FBDUJWF4USFBNT ͕ೖΔ༧ఆ
Lagom w ϚΠΫϩαʔϏεϑϨʔϜϫʔΫ w 1MBZ্Ͱಈ࡞ w $234 ίϚϯυΫΤϦ w
$PNNBOEBOE2VFSZ3FTQPOTJCJMJUZ4FHSFHBUJPO w FWFOUTPVSDJOH w DJSDVJUCSFBLFS w +BWB"1* w কདྷతʹ4DBMB"1*ެ։༧ఆ 28
Playͷಛ 29 (͜͜Ͱ15ܦաͩͱ͍͍ײ͡)
Playͷಛ w 8FCϑϨʔϜϫʔΫ w ϗοτϦϩʔυ w εΩʔϚཧ w ϑϧελοΫ w
Ϟδϡʔϧ w +BWB4DBMB"1* w ඇಉظॲཧ w FUD 30
WebϑϨʔϜϫʔΫ w 4FSWMFU"1*ඇґଘ w 4FSWMFUίϯςφͰ جຊతʹ ಈ࡞͠ͳ͍ w ΈࠐΈ/FUUZͰಈ࡞ 31
WebϑϨʔϜϫʔΫ w εςʔτϨεΞʔΩςΫνϟ w αʔόଆηογϣϯͳ͠ʂ w ΫϥΠΞϯτଆ$PPLJFηογϣϯ w ҉߸Խ͞Εͨ,#·Ͱͷจࣈྻ w
'MBTIείʔϓఏڙ w ΦϒδΣΫτΩϟογϡ$BDIF"1*ͰରԠ 32 εέʔϥϒϧ
ϗοτϦϩʔυ w αʔόΛ࠶ىಈͤͣʹ։ൃ w ϦΫΤετຖʹιʔείʔυͷߋ৽ΛνΣοΫ w ΈࠐΈ&$+ͰίϯύΠϧ w Ϋϥεϩʔμࠩ͠ସ͑ 33
ϗοτϦϩʔυ w +BWB4DBMBιʔεҎ֎੩తݕࠪ w Ξηοτ w $P⒎FF4DSJQU -&44 w ϏϡʔςϯϓϨʔτ
w ϧʔςΟϯά w σʔλϕʔεεΩʔϚ 34
εΩʔϚཧ w &WPMVUJPOT w 3BJMTͷ%#ϚΠάϨʔγϣϯͱ΄΅ಉ͡ 35 Άͪͬͱԡͯ͠ εΩʔϚߋ৽ʂ
ϑϧελοΫ w 8FC։ൃʹඞཁͳػೳΛσϑΥϧτఏڙ w .7$ w 03. w 8FC4PDLFU w
8FCαʔϏεΫϥΠΞϯτ w +40/ 9.- w $BDIF w +PC w 5FTU w FUD 36
Ϟδϡʔϧ w ͦͷଞͷศརͳػೳΛϞδϡʔϧͰఏڙ w "VUIFOUJDBUJPOBOE"VUIPSJ[BUJPO !HBLV[[[[͞Μ w 'MZXBZ !UPUPUPTIJ͞Μ
w 4BTT w 4DBMJLF+%#$ !TFSBUDI͞Μ w 4XBHHFS w 5IZNFMFBG w FUD 37
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 ʹมߋ༧ఆʂ
ඇಉظॲཧ w 1MBZ w ϦΫΤετ͝ͱʹεϨουΛׂΓͯΔಉظॲཧ w /FUUZ $PNNPOT+BWBqPXͰܧଓΛ࣮ w 1MBZ
w ϦΫΤετΛ"LLB"DUPSʹҕৡ͢Δඇಉظॲཧ w 1MBZͰετϦʔϜॲཧΛ"LLB4USFBNTʹஔ w 1MBZ Ͱ/FUUZΛ"LLB)551ʹஔ༧ఆ 39 ࠓޙ "LLBͱͷ ౷߹͕ਐΉ
Playͷ͍ํ 40 2.4/Java (͜͜Ͱ20ܦաͩͱ͍͍ײ͡)
Play ͷ͍ํ w 1MBZΛΠϯετʔϧ͢Δ w ϓϩδΣΫτΛ࡞Δ w ΞϓϦέʔγϣϯΛॻ͘ w Ϟσϧ
w Ϗϡʔ w ίϯτϩʔϥ w ϧʔςΟϯά 41
Πϯετʔϧ w લఏ w +%, w खॱ w "DUJWBUPSͷ[JQΛμϯϩʔυ͢Δ w
IUUQTQMBZGSBNFXPSLDPNEPXOMPBE w ҙͷॴʹల։͢Δ w 1"5)Λ௨͢ 42
ϓϩδΣΫτ࡞ w ςϯϓϨʔτΛ୳ͯ͠ϓϩδΣΫτΛ࡞Δ 43 BDUJWBUPSOFXʹ ϓϩδΣΫτ໊ͱ ςϯϓϨʔτ໊Λ͢
ϓϩδΣΫτ࡞ w BDUJWBUPSίϯιʔϧʹೖͬͯىಈ͢Δ 44 SVOͷલʹldz νϧμ Λ ͚ΔͱιʔεΛࢹͯ͠ ஞ࣍ίϯύΠϧ
ϓϩδΣΫτ࡞ w MPDBMIPTUʹΞΫηε 45
Activator UI w ࠇ͍ը໘͕ۤखͳਓ͚ 46 (6*ͰϓϩδΣΫτ࡞ ϏϧυىಈςετͳͲ
IDE w *OUFMMJ+*%&"Ͱ։͚ͩ͘ 47 &DMJQTFগ͠ ख͕ؒඞཁ
ΞϓϦέʔγϣϯ࡞ w 1MBZͷσΟϨΫτϦߏ 48
ΞϓϦέʔγϣϯ࡞ w 1MBZͷσΟϨΫτϦߏ 49 ΞϓϦέʔγϣϯιʔε֨ೲ༻ NPEFMTBTTFUT͜͜ʹ֨ೲ͢Δ ઃఆϑΝΠϧ֨ೲ༻ ެ։Ξηοτ֨ೲ༻ ςετιʔε֨ೲ༻
ΞϓϦέʔγϣϯྫ w ϢʔβҰཡදࣔը໘ 50
Ϟσϧ w NPEFMT6TFS 51 ຊདྷσʔλϕʔε͔Β औಘ͢ΔॲཧͷϞοΫ࣮ Q
Ϗϡʔ w BQQWJFXTMJTUTDBMBIUNM w ઌ಄ߦʹҾใΛهड़͢Δ w b!b͔Β࢝·Δߦ4DBMBͷίʔυ w WJFXTIUNMMJTUUFNQMBUFTDBMBʹίϯύΠϧ͞ΕΔ 52
4DBMB
ίϯτϩʔϥ w DPOUSPMMFST"QQMJDBUJPO w ςϯϓϨʔτ໊SFOEFSͰϏϡʔΛϨϯμϦϯάͰ͖Δ 53 WJFXTIUNM ͷ JNQPSUΛ Εͣʹʂ
ϧʔςΟϯά w DPOGSPVUFT w ϧʔςΟϯάใΛҰݩཧ w SPVUFS3PVUFTTDBMBʹίϯύΠϧ͞ΕΔ 54 ΞΫγϣϯʹ)551ϦΫΤετ ΛϚοϐϯά͢Δ
ಈ࡞֬ೝ w MPDBMIPTUVTFSTʹΞΫηε 55 αʔόΛ࠶ىಈͤͣʹ ػೳΛՃʂ
JSON w +40/Λฦ͢Α͏ίϯτϩʔϥΛมߋ 56
ಈ࡞֬ೝ w MPDBMIPTUVTFSTʹΞΫηε 57 αʔόΛ࠶ىಈͤͣʹ ػೳΛมߋʂ
ͦͷଞͷػೳ w υΩϡϝϯτΛࢀর 58 ຊޠͰ Ұ෦ ಡΊ·͢ʂ
Playͷར/ܽ 59 (͜͜Ͱ30ܦաͩͱ͍͍ײ͡)
Play1 w ར w ҆ఆੑɻେ͖ͳ༷มߋͳ͍ݟࠐΈ w ܰշͳ։ൃ w ܽ w
+BWBͰͳ͍Կ͔ w όΠτίʔυૢ࡞ʹΑΔ༧ظ͠ͳ͍ಈ࡞ w ਐԽͷݶք w αϙʔτମ੍ 60 -PNCPLͱͷ ૬ੑ͕ѱ͍Β͍͠
Play2 w ར w 4DBMB8FCϑϨʔϜϫʔΫͷσϑΝΫτελϯμʔυ w ϦΞΫςΟϒͷઌਐతͳऔΓΈ w -JHIUCFOEࣾͷαϙʔτ w
ܽ w ԼҐඇޓੑ w 4DBMBͱ1MBZํͷɻै͢Δ֮ޛΛ w ίϯύΠϧ w ۚͷؙ ߴ͍Ϛγϯ Ͱ֓Ͷղܾ 61
·ͱΊ 62
·ͱΊ w 1MBZͷྺ࢙ w 1MBZͱ1MBZ͕͋Δ w 1MBZͷಛ w 4FSWMFU"1*ඇґଘ w
4FBTBS 4USVUT͔ΒͷҠߦͦΕͳΓʹେม w εςʔτϨε w Ϋϥυ࣌ڧ੍Ϊϓε w ϗοτϦϩʔυ w αʔό࠶ىಈෆཁʂ 63 ґଘੑΛՃͨ͠߹ TCUSFMPBE͕ඞཁQ
·ͱΊ w 1MBZͷ͍ํ w ؆୯Πϯετʔϧ w ϞσϧϏϡʔίϯτϩʔϥϧʔςΟϯά w 1MBZͷརܽ w
1MBZ҆ఆܰշ w +BWBʹର͢Δઓͷྺ࢙ w 1MBZ҆৺ઌਐత w ϦΞΫςΟϒͷઌۦ͚ w ۀͰͷ͝ར༻ܭըతʹʂ 64
Enjoy Play !! 65
Thank you :-) 66