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
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
46
Greenは本当にGreenか? - B/GデプロイとAPI自動テストで安心デプロイ
kaz29
1
200
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
510
開発エンジニアが実践するDevSecOps
kaz29
0
170
PHPCon福岡2024-Azureもなかなかいいですよ.pdf
kaz29
2
390
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.2k
Other Decks in Technology
See All in Technology
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
460
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
330
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
470
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
600
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.7k
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
1
530
Lambda MicroVMsは常駐サーバーの代わりに なるか? Kiro Crew を動かして検証してみた / Kiro Crew on Lambda MicroVMs
k_adachi_01
2
290
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
110
特殊変数大全
dak2
0
150
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
300
IR Today: Theory, Practice, and Agents
dtunkelang
0
140
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
160
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Scaling GitHub
holman
464
140k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
740
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Automating Front-end Workflow
addyosmani
1369
210k
Between Models and Reality
mayunak
4
470
The World Runs on Bad Software
bkeepers
PRO
72
12k
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
͓͠·͍