w "1*3BJMTͰ࣮͢Δ
w ϞσϧΛͱ͓ͯ͠࿈ܞதͷ֎෦αʔϏεҰཡΛऔಘ
࿈ܞଟ͘ͳΒͳ͍͜ͱΛఆͯ͠.allͰऔಘ
w +CVJMEFSʹΑΓ7JFX͕ඞཁͱ͢ΔใΛ+40/ܗࣜͰฦ͢
24
class Api::ServicesController < Api::ApplicationController
def index
@services = Service.all # JbuilderͰJSONΛฦ͢
end
end
BQQDPOUSPMMFSTBQJTFSWJDFT@DPOUSPMMFSSC
͜͜·Ͱͷ·ͱΊ
w 7JFX"DUJPO"1*3FEVDFS7JFX
w 'MVYΞʔΩςΫνϟͷ֓೦Λཧղ͢Δඞཁ͕͋Δ
3FQPTUͰ͍͏ͱ3FEVYͷΈ
w σʔλϑϩʔ͕୯ํͳͷͰઃܭ͍͢͠
w "1*3BJMTͷࢿ࢈Λ͑Δ
29
Slide 30
Slide 30 text
ʢࢀߟʣ.BTUPEPO
IUUQTHJUIVCDPNUPPUTVJUFNBTUPEPO
w 3BJMTΞϓϦͰ3FEVY3FBDUΛ࠾༻
w app/javascriptԼͷߏpackage.json͕ࢀߟʹͳΔ
˞ 41"Ͱͳ͍
30
Slide 31
Slide 31 text
3BJMTͱ3FQPTU
Slide 32
Slide 32 text
8FCQBDLFS
w +BWB4DSJQUΞϓϦέʔγϣϯΛ3BJMTͰཧ͢ΔͨΊͷ
8FCQBDLΛ༻͍ͨπʔϧ
w 3FQPTU"1*Λ3BJMTɺϑϩϯτΤϯυΛ3FEVY3FBDU
w Ͳ͏ͬͯ͜ͷڥΛߏங͢Δ͔
3BJMTͰಋೖ͞Εͨ8FCQBDLFS:BSOʹΑΓγϯϓϧʹ࿈ܞͰ͖Δ
32
Slide 33
Slide 33 text
w rails new͢Δͱ͖ʹ--webpack=reactΦϓγϣϯΛ͚ͭΔ
webpacker:installyarn install͕Δ
w ͜ͷ࣌Ͱ3FBDUͷͻͳܗ͕Ͱ͖͍ͯΔ
w ඞཁʹԠͯ͡reduxͳͲͷϥΠϒϥϦΛΠϯετʔϧ͢Δ
yarn addͰΠϯετʔϧ
w ։ൃ࣌webpack-dev-serverΛ࣮ߦ͢Δ
ίʔυมߋ࣌ʹ)PU.PEVMF3FQMBDFNFOUͯ͘͠ΕΔ
33
$ rails new foo --webpack=react
$ bin/yarn add redux react-redux react-router-redux ...
$ bin/webpack-dev-server
Slide 34
Slide 34 text
w &4ΛτϥϯεύΠϧ͢ΔͨΊͷ#BCFMͷઃఆ͋Δ
w ܥଟ͘ͷઃఆ͕ϥΠϒϥϦଆʹٵऩ͞Εͨ
ΞϓϦέʔγϣϯଆͷઃఆΛγϯϓϧʹอͯΔ
w 3FQPTUͷ8FCQBDLFS·ͩܥ
ΧελϚΠζΛ͍ͯ͠Δ͜ͱ͋ΓઃఆϑΝΠϧ͕ଟ͍
34
Slide 35
Slide 35 text
w 8FCQBDLFSͰϏϧυͨ͠ϑΝΠϧΛ
8FCQBDLFSͷjavascript_pack_tagΛͱ͓ͯ͠ಡΉ
w ݟͨͯ͢+BWB4DSJQU
35
Repost
<%= stylesheet_pack_tag 'application' %>
<%= javascript_pack_tag 'application' %>
BQQWJFXTMBZPVUTBQQMJDBUJPOIUNMFSC
Slide 36
Slide 36 text
:BSO
w +BWB4DSJQUͷύοέʔδཧπʔϧ
w 3BJMT͔Β:BSOΛαϙʔτ
w ύοέʔδͷґଘཧɺΠϯετʔϧͷߴԽɺηΩϡΞԽͳͲ
OQNͱͷൺֱ
w ؔΘΔΠϯλϑΣʔεinstalladdremove͘Β͍
8FCQBDLFSͱ:BSOʹΑΓ+BWB4DSJQUͷΤίγεςϜΛ
ಋೖ͢Δͷ͕ͱͯ؆୯ʹͳͬͨʢ3FEVYͳͲʣ
36
Slide 37
Slide 37 text
"DUJPO%JTQBUDI4ZTUFN5FTU$BTF
w 3BJMT͔Βఏڙ͞Εͨɺ&&ςετΛ࣮ߦ͢ΔͨΊͷΫϥε
w ෦Ͱ$BQZCBSB%4-ͳͲΛΠϯΫϧʔυ
w τϥϯβΫγϣϯཧΛͯ͘͠ΕΔ
σʔλϕʔεͷΫϦΞͳͲͷઃఆ͕ෆཁ
w 3BJMTͷϨʔϧʹͬͨ··
+BWB4DSJQUΛؚΜͩϖʔδͷ&&ςετ·Ͱॻ͚Δ
3BJMTͰͷ41"։ൃ͕ΑΓεϜʔζʹ
37
Slide 38
Slide 38 text
ʢࢀߟʣ.JOJUFTU3FUSZ
IUUQTHJUIVCDPNZZBHJNJOJUFTUSFUSZ
w &&ςετ͕$*্Ͱͨ·ʹམͪΔʢ3FCVJME͢Δͱύε͢Δʜʜʣ
ೝূʹ༻͍ΔใΛϩʔΧϧετϨʔδʹ֨ೲ͍ͯ͠Δ
w ςετέʔε͕ࣦഊͨ͠ͱ͖ʹࢦఆճϦτϥΠͯ͘͠ΕΔ
w 3FQPTUͷςετ.JOJUFTU
w ͜ͷϥΠϒϥϦͷ͓͔͛Ͱ҆ఆͨ͠
ࠜຊతͳղܾΛ͍ͨ͠
38
Slide 39
Slide 39 text
ͨ͜͠ͱ
Slide 40
Slide 40 text
ςετΛॻ͘ର
w ࣍ͷςετΛ͔ͬ͠Γॻ͍ͨ
w 3BJMTͷϢχοτςετʢϞσϧ"1*ʣ
w &&ςετ
w +BWB4DSJQUͷϢχοτςετॻ͔ͳ͔ͬͨ
3FEVY4UBUFΛཧ͢ΔίϯςφҎ֎७ؔςετ͍͢͠
Ћ൛ͳͷͰ6*Λࢼߦࡨޡ͍ͨ͠&&ςετͰཏ
40
Slide 41
Slide 41 text
w ςετΛॻ͘ͱେ෯ͳϦϑΝΫλϦϯάΛ҆৺ͯ͠Ͱ͖Δ
+BWB4DSJQUͷߏɺ3FEVDFSͷઃܭͳͲͷݟ͕ͳ͔ͬͨ
ࢼߦࡨޡ͕ඞཁͳͱ͜ΖϦϑΝΫλϦϯά͕ଟ͘ͳΔ
ςετΛ͔ͬ͠Γॻ͍͓ͯ͘ͱΑͦ͞͏ʁͱߟ͑ͨ
w ͨͱ͑͜ΜͳϦϑΝΫλϦϯάΛͯ͠;Δ·͍͕อূ͞ΕΔ
41
Slide 42
Slide 42 text
4QSPDLFUTআͨ͠
w ͦΕͧΕͷ୲ൣғ
w 8FCQBDLFS+BWB4DSJQUΞϓϦέʔγϣϯΛཧ
w 4QSPDLFUT3BJMTͷίϯτϩʔϥϏϡʔ͝ͱͷΞηοτΛཧ
"TTFU1JQFMJOFͰ࿈݁
w 3FQPTU41"ͳͷͰ4QSPDLFUTඞཁͳ͔ͬͨ
w ΞϓϦέʔγϣϯͷੑ࣭ʹԠͯ͡બ͋Δ͍Έ߹ΘͤΔ
ྫɿ3FEVYͱ3BJMTͷϏϡʔ͕ڞଘ͢ΔՄೳੑ͋Δ
42
Slide 43
Slide 43 text
ηοτΞοϓΛָʹ͢Δ
w bin/setup
bin/updateΛϝϯςφϯε͢Δ
w େ͞Μʢ!POLʣͷεϥΠυͰͬͨ
w ;ͭ͏ͷ3BJMTΞϓϦέʔγϣϯ։ൃ
IUUQTXXXTMJEFTIBSFOFUUBLBGVNJPOBLBSBJMT
w git clone/pullͨ͠ޙʹ͜ΕΛୟ͚ͩ͘Ͱͯ͢ͷ४උ͕͏
43
Slide 44
Slide 44 text
w 3FQPTU044
w ίϯτϦϏϡʔτͷҙࢥΛͬͨਓ͕͙͢ʹ։ൃΛ͡ΊΒΕΔ
ڥΛఏڙ͢Δ͜ͱ͕ॏཁͩͱߟ͑ͨ
44
Slide 45
Slide 45 text
w ؔ࿈͢Δ13Λཱͯͨ
IUUQTHJUIVCDPNSBJMTSBJMTQVMM
w BTTJHOFF͕!EIIͳͷͰݫͦ͠͏ʜʜ
45
Slide 46
Slide 46 text
ল
Slide 47
Slide 47 text
Ϟʔμϧ৻ॏʹಋೖ͢Δ
w 4UBUFͷཧͰ࣮͕ෳࡶʹͳΔ
ྫɿϑΥʔϜɺλϒ
w &&ςετ͕ॻ͖ͮΒ͍ɾ͘ͳΔ
ྫɿϞʔμϧΛ։͘ɺͱ͍͏ΞΫγϣϯ͕ඞཁʹͳΔ
w Ϟʔμϧͩͱ͍ͮΒ͍έʔε͋Δ
ྫɿด͡Δɺͱ͍͏ΞΫγϣϯ͕ඞཁ
47
Slide 48
Slide 48 text
w ࠷ॳઃఆؔ࿈Λͯ͢ϞʔμϧͰ࣮͍ͯͨ͠
్தͰͯ͢ॻ͖ͨ͠
ςετΛ͔ͬ͠Γॻ͍͓ͯ͘ͱॻ͖҆͠৺ͯ͠Ͱ͖Δ
w ͦͷػೳ͕ຊʹϞʔμϧͰͳ͚ΕͳΒͳ͍͔ߟ͑Δ
48
Slide 49
Slide 49 text
3BJMTͷࢿ࢈Λ׆༻͢Δ
w ࢿ࢈ɿ5VSCPMJOLT'PSN)FMQFSͳͲ
w 3FQPTUͷߏ3FEVY3FBDUͰ41"ʢษڧͷͨΊʣ
w ઃఆը໘ͳͲɺ࣮͔͔Δ͕༻ස͕͍ػೳଟ͍
ͪΖΜ։ൃऀͷεΩϧʹΑΔ
49
Slide 50
Slide 50 text
w 5VSCPMJOLT'PSN)FMQFSͳͲͷ׆༻Λݕ౼͢Δ
هࣄͷҰཡදࣔɺߘίϯϙʔωϯτ3FEVYͰΑͦ͞͏
.BTUPEPOϋΠϒϦουܕʢઃఆͳͲΛ3BJMTଆͰ͍ͬͯΔʣ
50
Slide 51
Slide 51 text
༨ஊ
Slide 52
Slide 52 text
Ϟνϕʔγϣϯͷอͪํ
Slide 53
Slide 53 text
w தଜ͞Μʢ!SLBNVSBʣͷεϥΠυ
w ݸਓ։ൃͷ͍͖ͬͯํ
IUUQTTQFBLFSEFDLDPNSLBNVSBHFSFOLBJGBGBMTFZBUVUFJLJGBOH
w ΤλΒͳ͍ͨΊʹ
ΤλΒͳ͍ϞνϕʔγϣϯΛอͪଓ͚Δ
w ࣗʹͱͬͯͳʹ͕։ൃͷϞνϕʔγϣϯͳͷ͔Λ
ݟग़͢͜ͱ͕ॏཁ
53
Slide 54
Slide 54 text
w ࠷৽ͷ3BJMTͷػೳΛࢼ͢ͱͯ͠͏
w స৬׆ಈͷͱ͖ʹ໊ΘΓʹ͏
54
Slide 55
Slide 55 text
w ࢲͷ߹తཉٻۦಈ։ൃ
w ֶ͕ࣗͼ͍ٕͨज़Λ࠾༻͢Δ͍Βͳ͘ͳͬͨΒফ͢
w ීٴͨ͠ΒελοΫΛબఆ͢Δඞཁ͕͋Δ͕ɺͦΕ·Ͱ
ͭ͘Γ͍ͨΑ͏ʹͭ͘Δ
55
Slide 56
Slide 56 text
No content
Slide 57
Slide 57 text
w 8FCαʔϏεͱͯ͠ެ։ͨ͠ͷ͍͔ͭ͋͘Δ
w ๏ܦཧͳͲ͕໘ٛײ͕ੜ·Εͨ
w 044ͩͱ͕͠ΒΈ͕ͳ͍
57
Slide 58
Slide 58 text
w ϞνϕʔγϣϯਓͦΕͧΕҧ͏
w ࣗͷϞνϕʔγϣϯ͕ͳʹ͔Λߟ͑ɺͦΕΛ࣠ʹ
։ൃ͢ΔͱΑͦ͞͏
w ࠓΓ͍ͨͷ5ZQF4DSJQUɺ"DUJWF4UPSBHFͳͲ
58
Slide 59
Slide 59 text
·ͱΊ
Slide 60
Slide 60 text
w 3BJMTͰͷ41"3BJMTͰ։ൃ͘͢͠ͳͬͨ
8FCQBDLFS
:BSO
w "DUJPO%JTQBUDI4ZTUFN5FTU$BTFʹΑΓ41"ͷςετ
Ϩʔϧʹͬͨ··ॻ͚Δ
w +BWB4DSJQUͰॻ͔͘ɺ3BJMTͷࢿ࢈Λ׆༻͢Δ͔
͔ͬ͠Γͱݕ౼͢Δ
60