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.5k
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.7k
jjug ccc 2017 spring ccc_g1
garbagetown
8
13k
Other Decks in Technology
See All in Technology
OSSコントリビュートをphp-srcメンテナの立場から語る / OSS Contribute
sakitakamachi
0
1k
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
3
1.9k
モンテカルロ木探索のパフォーマンスを予測する Kaggleコンペ解説 〜生成AIによる未知のゲーム生成〜
rist
4
1.3k
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
1
110
試験は暗記より理解 〜効果的な試験勉強とその後への活かし方〜
fukazawashun
0
200
AIエージェントキャッチアップと論文リサーチ
os1ma
6
1.4k
ペアーズにおけるData Catalog導入の取り組み
hisamouna
0
260
10分でわかるfreeeのQA
freee
1
12k
React Server Componentは 何を解決し何を解決しないのか / What do React Server Components solve, and what do they not solve?
kaminashi
6
1.4k
”知のインストール”戦略:テキスト資産をAIの文脈理解に活かす
kworkdev
PRO
9
3.9k
30 代子育て SRE が考える SRE ナレッジマネジメントの現在と将来
kworkdev
PRO
0
190
「家族アルバム みてね」を支えるS3ライフサイクル戦略
fanglang
4
640
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
The Cost Of JavaScript in 2023
addyosmani
48
7.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Speed Design
sergeychernyshev
28
880
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.2k
The Invisible Side of Design
smashingmag
299
50k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Optimising Largest Contentful Paint
csswizardry
35
3.2k
Gamification - CAS2011
davidbonilla
81
5.2k
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