Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
バックエンドエンジニアの私がお勧めする SPAフロントエンド開発環境
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kaz Watanabe
July 25, 2020
Technology
6.3k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
バックエンドエンジニアの私がお勧めする SPAフロントエンド開発環境
@July Tech Festa 2020
Kaz Watanabe
July 25, 2020
More Decks by Kaz Watanabe
See All by Kaz Watanabe
開発エンジニアが取り組む DevSecOps ~ GitHub Enterprise × Azure での実践~
kaz29
0
52
Greenは本当にGreenか? - B/GデプロイとAPI自動テストで安心デプロイ
kaz29
1
210
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
510
開発エンジニアが実践するDevSecOps
kaz29
0
180
PHPCon福岡2024-Azureもなかなかいいですよ.pdf
kaz29
2
400
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
3
1.3k
20220908_フロントエンドパフォーマンス改善.pdf
kaz29
2
200
PHP製のPodCast配信用WebアプリをReact+Next.jsなSSGで作り直してみた話
kaz29
3
720
201909-PHPCon北海道-PHPでCI_CD.pdf
kaz29
0
4.3k
Other Decks in Technology
See All in Technology
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
290
Running Kotlin + Quarkus with Lambda
nealle
1
4.1k
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
210
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
5
1.4k
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
280
【データ横丁主催】AI エージェント時代のTranslytical Data Platform
shisyu_gaku
0
110
価値について
gree_tech
PRO
0
130
AIにシークレットを見せない、WSL2で安全な開発環境
yazm
0
320
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
150
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
360
AI時代のGraphQL
joere
1
250
React改造してみた
tsukina_7mochi
0
140
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
Git: the NoSQL Database
bkeepers
PRO
433
67k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
570
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
New Earth Scene 8
popppiees
4
2.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
Design in an AI World
tapps
1
360
Transcript
Θͨͳ!LB[@ όοΫΤϯυΤϯδχΞͷࢲ͕͓קΊ͢Δ 41"ϑϩϯτΤϯυ։ൃڥ !+VMZ5FDI'FTUB
8)0 ลҰ (Θͨͳ ͔ͣͻΖ) @kaz_29 גࣜձࣾϋʔτϏʔπ ։ൃࣄۀ෦
גࣜձࣾϋʔτϏʔπ ຊۀMSPͷձࣾͰɺ ։ൃࣄۀΛ͍ͬͯ·͢ɻ
IC4","#" QPEDBTUͬͯ·͢
ΑΖ͓͘͠Ͷ͕͍͠·͢
'SPOUFOE8FC%FWFMPQNFOU
None
શ෦ΩϟονΞοϓͱ͔ͭΒΊ
৽͍͠ΞϓϦΛ࡞Γ࢝ΊΔ ͱ͖ʹຖճڥઃఆʹΉ
͙͢ʹ࡞Γ࢝ΊΒΕͯɺ ؾ࣋ͪΑ͘։ൃΛਐΊΒΕΔ ͓͢͢Ίͷશ෦ೖΓͷ ࣗ༻CPJMFSQMBUFͬΆ͍ͷ͕ཉ͍͠
ٕज़ཁૉ
ٕज़ཁૉ w 3FBDUIUUQTKBSFBDUKTPSH w .PC9IUUQTNPCYKTPSH3&"%.&IUNM w /FYU+4IUUQTOFYUKTPSH w UZQFTDSJQUIUUQTXXXUZQFTDSJQUMBOHPSH w
NBUFSJBMVJIUUQTNBUFSJBMVJDPN w TUPSZCPPLIUUQTTUPSZCPPLKTPSH w KFTUIUUQTKFTUKTJP
ٕज़ཁૉ 3FBDU w 'BDFCPPLۘͷ+BWB4DSJQUϑϨʔϜϫʔΫ w "OHVMBSͱ͔7VFͱ͔ͱΑ͘ൺΒΕΔ w ࠃͰ7VF͕ਓؾ w
ࠓճ͍׳Εͨ3FBDUͰ͢͢Ί·͢
ٕज़ཁૉ .PC9 w εςʔτΛཧ͢Δπʔϧ w 3FEVYͷସ͑ w ͓खܰ w ͍֮͑͢
w ॻ͘ίʔυྔ͕গͳ͍ w ෦ίʔυ͕ෳࡶ ࠇຐज़ͬΆ͍ ͷͰσόοά͕͍͠ w ࢲࠓ·Ͱࠔͬͨ͜ͱͳ͍ w ͦͦάϩʔόϧͳεςʔτඞཁ࠷ݶʹͯ͠ଟ༻͠ͳ͍ํ͕ྑ͍ ؾ͕͢Δ
ٕज़ཁૉ /FYU+4 w 6OJWFSTBM *TPNPSQIJD +BWB4DSJQUϑϨʔϜϫʔΫ w 443ରԠ w γϯϓϧͰೖ͍͢͠
w ͚Ͳ͍͜ͳ͢ͱ৭ʑͰ͖Δ w SPVUJOHΛॻ͔ͳͯ͘ྑ͍ ॻ͘͜ͱͰ͖Δ w 4UBUJD)5.-&YQPSU
ٕज़ཁૉ UZQFTDSJQU w ϚΠΫϩιϑτ͕։ൃͨ͠Φʔϓϯιʔεݴޠ ͬ͘͟Γݴ͏ͱํఆ͕ٛͰ͖Δ+BWB4DSJQU w +BWB4DSJQUͷεʔύʔηοτ w ܕɺΠϯλʔϑΣʔεɺΫϥεͳͲͳͲ͕͑Δ w
δΣωϦοΫ͕͑Δ w *%&͕ڧྗʹαϙʔτͯͯ͘͠ΕΔ
ٕज़ཁૉ NBUFSJBMVJ w 3FBDU͚6*ίϯϙʔωϯτϥΠϒϥϦ w (PPHMFͷ.BUFSJBMσβΠϯΛϕʔεʹ։ൃ w ๛ͳػೳ w 5IFNF
w ϨεϙϯγϒରԠػೳ
ٕज़ཁૉ TUPSZCPPL w ίϯϙʔωϯτ୯ҐͰαϯυϘοΫεͰ։ൃͰ͖Δ w ๛ͳϓϥάΠϯ w BEEPOWJFXQPSU w BEEPOJO
w ίϯϙʔωϯτΛҰཡͰڞ༗Ͱ͖Δ w Χλϩά w υΩϡϝϯτ w ςετ ͖ͷະணखͰΑ͘Θ͔͍ͬͯͳ͍
ٕज़ཁૉ KFTU w +BWB4DSJQU༻ςεςΟϯάϑϨʔϜϫʔΫ w ίʔυΧόϨοδ w ϞοΫ w ϑϩϯτΤϯυ։ൃͷςετʹ͍ͭͯࡧத
w DVTUPNIPPLͷॲཧͷςετ w σʔλͷՃΛ͏ॲཧͷςετ
CPJMFSQMBUF
CPJMFSQMBUF w લग़ͷٕज़ཁૉΛશͯΈࠐΉ w )FMMP 8PSMEͰͳ࣮͘ࡍʹಈ͘ίʔυαϯϓϧΛؚΉ w 4UPSF w "1*࿈ܞ
w ͲΜͳ;͏ʹ։ൃ͍ͯ͠Δ͔ ͋Δఔ Έ͑Δ w 4UBUJD)5.-&YQPSU w ϩʔΧϧͰͷಈ࡞֬ೝڥ w σϓϩΠ
αϯϓϧΞϓϦ https://www.weatherapi.com/api.aspx
αϯϓϧΞϓϦ
αϯϓϧΞϓϦ w UZQFTDSJQU w 'VODUJPO$PNQPOFOU w )PPLT
None
։ൃͷਐΊํ
։ൃͷਐΊํ w OPEFOW IUUQTHJUIVCDPNOPEFOWOPEFOW w %PDLFS%FTLUPQGPS.BD IUUQTIVCEPDLFSDPNFEJUJPOTDPNNVOJUZEPDLFSDFEFTLUPQ NBD
։ൃͷਐΊํ ίϯϙʔωϯτΛ࣮ w ZBSOTUPSZCPPL TUBSUTUPSZCPPLQTQVCMJD IPUSFMPBE WJFXQPSUΛସ͑ͯQDNPCJMFͷݟͨΛ֬ೝ ݴޠΛସ͑ͯදࣔ֬ೝTUBUJDXFCͰͷରԠݕ౼த
։ൃͷਐΊํ ίϯϙʔωϯτΛ࣮ 1 import React from 'react' 2 import {
storiesOf } from '@storybook/react' 3 import WeatherCard from '.' 4 import { currentWeather } from '~/__fixtures__/current_weather' 5 6 storiesOf('components/WeatherCard', module) 7 .add('default', () => ( 8 <WeatherCard 9 currentWeather={currentWeather} 10 /> 11 )) JOEFYTUPSJFTUTY
։ൃͷਐΊํ υϝΠϯϩδοΫͷ࣮ w ZBSOUFTU /0%&@&/7UFTUKFTUOPDBDIFFOWKTEPN 6OJU5FTUΛॻ͖ͳ͕Β࣮ AZBSOUFTUGϑΝΠϧ໊Uςετ໊A $PNQPOFOUͷςετͪΐͬͱΑ͘Θ͔ΒΜ ҙຯ͕͋ΔςετΛ͔͚Δ͔
։ൃͷਐΊํ ΞϓϦͷ࣮ w ZBSOEFW OFYUEFW IPUSFMPBE ಈ࡞֬ೝ͠ͳ͕Β։ൃ
։ൃͷਐΊํ ZBSOTUPSZCPPL ZBSOEFW ίʔυमਖ਼ $PNQPOFOUͷ࣮ ಈతͳڍಈͷ࣮ IPUSFMPBE ZBSOUFTU %PNBJOMPHJDͳͲ ͷ6OJU5FTU
։ൃڥ ࠷ऴ֬ೝ 4UBUJD)5.-&YQPSUͨ͠੩తϑΝΠϧ w ZBSOCVJME OFYUCVJMEOFYUFYQPSU 4UBUJD&YQPSUͰBSUJGBDUΛ࡞ w EPDLFSDPNQPTFVQE
OHJOYίϯςφܦ༝Ͱಈ࡞֬ೝ
։ൃڥ ࠷ऴ֬ೝ 4UBUJD)5.-&YQPSUͨ͠੩తϑΝΠϧ 1 version: '3.1' 2 3 services: 4
nextjs-template: 5 container_name: nextjs-template 6 image: nginx:latest 7 ports: 8 - 80:80 9 volumes: 10 - ./out:/usr/share/nginx/html:cached 11 - ./nginx.conf.d:/etc/nginx/conf.d 12 restart: always
։ൃڥ ࠷ऴ֬ೝ 4UBUJD)5.-&YQPSUͨ͠੩తϑΝΠϧ ϖʔδભҠઌͰϦϩʔυ͢Δͱ/PU'PVOE
։ൃڥ ࠷ऴ֬ೝ 4UBUJD)5.-&YQPSUͨ͠੩తϑΝΠϧ 1 server { 2 listen 80; 3
server_name localhost; 4 5 #charset koi8-r; 6 #access_log /var/log/nginx/host.access.log main; 7 8 location / { 9 root /usr/share/nginx/html; 10 index index.html index.htm; 11 try_files $uri $uri.html /index.html; 12 } ... ͚ͩ͜͜Ճ
σϓϩΠ
σϓϩΠ σϓϩΠઌͷબࢶ w ͳΜΒ͔8FCαʔόʔΛཱͯΔ w 4UBUJD8FCΛϗετ͢ΔαʔϏεΛ͏ w ֤ΫϥυϕϯμʔͷΦϒδΣΫτετϨʔδ ੩త8FCΛϗετ͢ΔαʔϏε w
"[VSF"QQ4FSWJDF4UBUJD8FC"QQT
σϓϩΠ σϓϩΠઌͷબࢶ w ͳΜΒ͔8FCαʔόʔΛཱͯΔ w 4UBUJD8FCΛϗετ͢ΔαʔϏεΛ͏ w ֤ΫϥυϕϯμʔͷΦϒδΣΫτετϨʔδ ੩త8FCΛϗετ͢ΔαʔϏε w
"[VSF"QQ4FSWJDF4UBUJD8FC"QQT
σϓϩΠ "[VSF4UBUJD8FC"QQT1SFWJFX w ੩తαΠτͷϗεςΟϯάαʔϏε w (JU)VC"DUJPOTʹΑΔ#VJME%FQMPZ (JU)VC࿈ܞඞਢ w ΧελϜυϝΠϯରԠɺ44-ূ໌ॻ
ແྉ ΧελϜυϝΠϯͷઃఆΛ͢Δͱɺࣗಈతʹ44-ূ໌ॻ࡞͞ΕΔ w ϓϨϏϡʔػೳ 13Λ࡞͢ΔͱɺϓϨϏϡʔ൛͕ࣗಈσϓϩΠ͞ΕΔ ϚʔδΫϩʔζ͢Δͱຊ൪ө͞ΕɺϓϨϏϡʔ൛ࣗಈআ w ϓϩϏδϣχϯά࣌ʹσϑΥϧτͷઃఆ͕ࣗಈੜ͞ΕΔ w ΞϓϦΤϯδχΞʹ͍͍͢
σϓϩΠ "[VSF4UBUJD8FC"QQT1SFWJFX
σϓϩΠ "[VSF4UBUJD8FC"QQT1SFWJFX
σϓϩΠ "[VSF4UBUJD8FC"QQT1SFWJFX
σϓϩΠ "[VSF4UBUJD8FC"QQT1SFWJFX
͓·͚
͓·͚ 6OJU5FTUॻ͍ͯɺ(JU)VC"DUJPOTಋೖͨ͠ͷͰ$*͠Α͏ ... 12 jobs: 13 build_and_deploy_job: 14 if: github.event_name
== 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') 15 runs-on: ubuntu-latest 16 name: Build and Deploy Job 17 steps: 18 - uses: actions/checkout@v2 19 with: 20 submodules: true 21 - name: Setup nodejs 22 uses: actions/setup-node@v1 23 with: 24 node-version: '12.x' 25 - run: yarn install --dev 26 - run: yarn test:ci 27 - name: Build And Deploy 28 id: builddeploy ...
·ͱΊ
·ͱΊ w ϑϩϯτΤϯυ։ൃɺ·ͩ·ͩਐԽ͕͍͛͠ w લͷͬͨࣽ͝ײ ແ͘ͳͬͨʁ w ͲΜͲΜ͍͍ײ͡ʹਐԽͯ͠Δײ w ۤ࿑͢Δ͜ͱ͋Δ͚ͲɺόοΫΤϯυಉ͡
w ϑϩϯτΤϯυ։ൃͨͷ͍͠ &OKPZ https://github.com/kaz29/nextjs-template
͓͠·͍