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
ITトレンドのフロントエンドNext.js移行までの道のり
Search
株式会社イノベーション(エンジニア)
September 12, 2025
Technology
2.2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ITトレンドのフロントエンドNext.js移行までの道のり
株式会社イノベーション(エンジニア)
September 12, 2025
More Decks by 株式会社イノベーション(エンジニア)
See All by 株式会社イノベーション(エンジニア)
PRのCI稼働時間を7割削減した話
innovationjp
0
9
翻訳用の Chrome 拡張を作った
innovationjp
0
9
zenn-writer-skill が 素晴らしかった話 - 質問に答えていたら、記事ができていた -
innovationjp
0
9
エンジニアが事業側に⾏って、 考える順番が変わった
innovationjp
0
95
Go 1.27 リリース解説 メモリ最適化・JSON v2・待望のジェネリックメソッド解説
innovationjp
0
23
MoQT フルスクラッチ実装
innovationjp
0
20
月18万行の コーディングを行った話
innovationjp
0
8.5k
アイデア枯渇から救った 1匹の猫の話
innovationjp
0
32
『問題解決』を読んでSkillにしてみた
innovationjp
0
500
Other Decks in Technology
See All in Technology
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
230
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
660
Agent Harnessはどう作る?事例から学ぶAI Agentの設計思想
sergicalsix
0
250
JAWSコミュニティに 参加して1年経った結果
ssakita
0
120
2026-11-11 Tamachi.sre#7 PaCにインフラリソースの命を救われました。 / PaC saves the infra resource life
masasuzu
0
110
Kiro を使うコツ (頼み方、覚えさせ方、任せ方) | 目指せ Kiro マスター 09
inariku
PRO
3
140
狙われているAPIの脆弱性!今こそ手をつけるべき根本的な対策とは?
nagix
0
110
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
300
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
230
Cloudflareの向き先
chimame
1
270
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
130
[General] 개발자로 해외 기업에서 일하기
skydoves
1
330
Featured
See All Featured
Navigating Team Friction
lara
192
16k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Test your architecture with Archunit
thirion
2
2.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
620
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
470
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
What the history of the web can teach us about the future of AI
inesmontani
PRO
3
800
Building an army of robots
kneath
307
47k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
70
68k
Transcript
IT øüóù~õýóø¸óù Next.js û¯~w~Ó~º j__´þùü·÷ó ÿWÍ y j__´þùü·÷óÿÿw u
~è 2 /~¯?}Ï WÍ y j__´þùü·÷ó / ÷ýð¿ø÷³ùýó÷ñóøöûóø / SaaS ÷³ùýó÷ñóøB
ñüð / úüðü }: õS/~o ¯w: Û×1»üù²üð ÿw u j__´þùü·÷ó / ÷ýð¿ø÷³ùýó÷ñóøöûóø / ñ÷ ³²÷³ùýó÷ñóøA2 ñüð / úüðü }: õS/ÿ~o ¯w: ßw»f
ÎÞ~²¸·óð _µüó¹{ttv û¯Ìo Next.js øÛvu û¯÷ý»¹<rÿ ö¯wvt»ºÜ Îß~]
_µüó¹~Îí 15 ~ïN{oº1IT øüóùwBtoB ~IT ýÕþü±ö³ó°÷ü¿~þ¶ÿ¶²Ä }~ß1öz»BtoB »üû¹þü±ö³ó°~ºÜ²ë~y»yIT ½úõü·÷ó Ïm²]wv}~w2
Ïmã/÷mû÷~UN²ß}Ww}»_~ß}²{wv1ÿ¯m}{ ²²ûwvw~y2
IT øüóùx _|Û÷y»IT øüóù1Om~IT ýÕ'µüó¹^/² o÷y»ÿÕg/~}÷ùóøõ¹üðwy2 ÎßzýÕåy 260 ~ÞïP~»ö´úü12,000 ïP~ýÕåy²
ó qýÏýËn ^/}{ßzåyßÖ²ÿó¹øó÷wßÿ ^¯ÿ{¸»þϵüó¹ IT W'DX ë²~ºÜ{ÿwvgùzýÕ²O ùw }Ï
Next.js x~û¯Ìoÿz|ßs~{ òÀózâÛwõýóø¸óù²wõw1s¼¹~ºÜ²/{ë~y»ß|rº~w âÛö¬õ Angular 1Backbone 1jQuery zy~ ÷tâÛ¹¿ó¿|~þ²OOu {vt~w
~û÷~_Ü ÷tâÛ²[1öü¶üûüº{ß x»~|ö÷{zsvt~w µ´øÕî~OO ñõ¹üþó¹1UIUX zyy_öz Õî|êWwvt~w ão~ö÷u ÷tâÛ¹¿ó¿|ão^|w~ß? ²OOu{vt~w
Next.js ^/_~õýóø¸óùër Next.js ²^/y»ï_~IT øüóù~öü¶ü¯1ïO~âÛ¹¿ó¿wëûu¼vt~w2 Laravel ~Blade µüðüµ´ùöó÷üüø¸ó¸óxwvowvt~w |1õýóø¸óù~÷ßg{vÖ|rº~w2 JavaScript
³üù~ßÛg´Ý{og{ºÜ|rº~w2 jQuery DOM í_²o?~²÷ýüñww|1Ý{o|÷w1³üù ~ÿ¯g{²ÿ|ûvt~w Backbone.js ¹þüøõ¹ó~»üøýzy/øw¿¼vt~w|1} sq÷v|þwvzº1}ï{f|{{svt~w2
Next.js ^/ß~õýóø¸óùër ( öü¶ü¯) 80% Next.js û¯ßÎ Pages Router ²owërwÛoo
20% ü¼·üôÛ ÿöû¯{¸ºë[wvt»ç·¹öðÿ~ÕßÎÎÛ Next.js (Pages Router) ñ´óõüüðÿü¿xwvãow1 SSR/SSG/CSR {¸»gùW²ßÿ App Router ^/f{(2024 ~3 o) Oúßg|r s Storybook + Vitest ³óýüýóø~~û÷Wx÷¶´ó·¹öð ~}/W1õýóø¸óùö¹ø²ë²2Îß÷ ¶´úüxStorybook ²³~wvt}t OpenAPI RESTful API ~ßù²{þWy»sxw1õýóø ¸óùxðó¿¸óù~³~|¸º¹ðüº{z º1~û÷|UNw~w2
z|Next.js ²ø³p~{ üóðúó°?ý~[ùg SSR 1SSG 1CSR 1ISR zy1úü¸~{g{ßxgùzüóðúó°?ý²øþw}»÷ßg|1ù5z³óö óôþ{ÿßÿýww2 ão^|w~{Og
Next.js 'React ^|w~/|¿1õwt~ ~sß´ç[óðü~¹½û²ó÷|¹üº{²°xví w~w2 Ußw¸³·¹ö Îßzù´öùú1~z³ÿõûö³1}wvVercel {¸»?zµýüø1~~û÷gxÛÛg²/}U Nu{»xúïw~w2
z|Next.js ²ø³p~{ üóðúó°?ý~[ùg SSR 1SSG 1CSR 1ISR zy1úü¸~{g{ßxgùzüóðúó°?ý²øþw}»÷ßg|1ù5z³óö óôþ{ÿßÿýww2 ão^|w~{Og
Next.js 'React ^|w~/|¿1õwt~ ~sß´ç[óðü~¹½û²ó÷|¹üº{²°xví w~w2 Ußw¸³·¹ö Îßzù´öùú1~z³ÿõûö³1}wvVercel {¸»?zµýüø1~~û÷gxÛÛg²/}U Nu{»xúïw~w2
Next.js ~üóðúó°?ý~[ùg ²÷úÁü·÷ó~þ{ßxvgùzüóÀúóÀ²øþw}~wÿÿß{yv~?ý²otvt~y SSR (Server-Side Rendering) ú²û¿´ð~÷ü¿è´SEO ÿ |ßzúü¸{gù( {x³y~
úü¸SSR) 2 SSG (Static Site Generation) ³óöóô|»{öõu¼ztß özúü¸{( Yö»þztßö) CSR (Client-Side Rendering) ´ó¿ù¿ö³özí_( »üøý ´úü¸Õ~}ý) (App Router x1PPR(Partial Pre-Rendering) ´ Streaming SSR zy²x»~w1û¯w¹svt}twy2 )
z|Next.js ²ø³p~{ üóðúó°?ý~[ùg SSR 1SSG 1CSR 1ISR zy1úü¸~{g{ßxgùzüóðúó°?ý²øþw}»÷ßg|1ù5z³óö óôþ{ÿßÿýww2 ão^|w~{Og
Next.js 'React ^|w~/|¿1õwt~ ~sß´ç[ñóðü~¹½û²ó÷|¹ðüº{²°xví w~w2 Ußw¸³·¹ö Îßzù´öùú1~z³ÿõûö³1}wvVercel {¸»?zµýüø1~~û÷gxÛÛg²/}U Nu{»xúïw~w2
ão^|w~{Og < State of JS 2024(https://2024.stateofjs.com/ja-JP/libraries/meta- frameworks/) 0% 30% 60%
90% React ( õýóø¸óùõüüðÿü¿ø¯) Next.js ( ñ¿õüüðÿü¿ø¯) React õýóø¸óùõüüðÿü¿ø¯w}80% ~o÷²º12 OïO²/}_}öwv1 Owy2Next.js ñ¿õü üðÿü¿ø¯w}66% ~o÷²³w1s~»ö´úw1 O²sßwvt~y2 }Þ: ß{ão{²tz|svt~yÿ
Next.js x~û¯¿´ðù´ó Next.js x~û¯1oÝz}xÿöz÷ý»¹²}vo|Ww~w2 2023 ~4 o Next.js x~û¯}²Û 2024
~6 o ÷ý¸·¿øxwvo|ö{Û× 2025 ~2 o úü¸~Next.js x~û¯|ßÎ 2025 ~9 o ÿ2ýÿöz}Õx~]x
÷ý¸·¿øqNr<~~w{{¯ssx úúü¹fu~} __óóÀðóúúü¹²óÛwvt~w|1ú¹¿²owvVrúúü¹²øþ2µüó¹\of²g/W y»fu²v~w âÛø¯ï_~·ÏTbx~ ~ñüð~öûóøÿ²ÿ}¿1Ïmø´þüÁö³óÀø¯ÿSEO ñõ¹üþó¹|ºwWmy»{²û¯~ oÿ²®nw1âÛø¯ï_~W?²ß»_v²ëûw~w2 sswÝs~1âÛöñúóøqwz1ó¸ý¹özñúóø²nú{ysxww2 ÿßo~qºÜwr»<ñõ¹üþó¹~UN=²{{¿w÷|rº~y{
SRE x³~w1´óõù¯~¿öw õýóø¸óùxðó¿¸óù²wúý¸øúwûvy»±1´óõùt~¯~¿öw²SRE ñüð{²þÏwv fu²v~wÿSRE ñüð~o5{o_{wy
PJ Wß~ß~û¯÷ý»¹ 1 ÿíúü¸~tûw þüÁö³óÀñüðxW?wvû¯ÿíúü¸~{YOÞq²ßý2¸º³óðü¸÷ó|r»úü¸|{Y 2 ¹Á¸õüûûw úü¸ïwtt~w{¿¹{»{~¿²º²vv1Ïmøx~fqoÿNext.js ~}|z{s±1ss|ów{sw y
3 õýóø'ðó¿¸óùÿ¯Û ç[~Nginx ôÛ²ow1Next.js úü¸xLaravel úü¸²ùW{oºVq»ûüö³ó°¯²ßÍ 4 ß{úü¸²ç_ tx{oºVqvßÍ ~y»úü¸~÷ü¿²Open API wßWwv1Laravel wAPI ßÍ1Next.JS wõýóø_r~m¼ 5 üóõüßÎß1stg ôÛwö¹øwvoúúü¹ ÷÷ý´{Next.JS ~Swr»Vercel ²ão
æöwý´óø 1 ú÷ü´¹ÿ¿¹¿~/u¿²º~÷wu ðó¿¸óù~×z¿¸ú÷v²úõ±¿¿wz|¹API _rwº1Next.js ³üù~{ëzý{c¼»~f²w1¹ Á¸õüûûww_rw__~¸ºÕþ|~ow~w2 ýþÏmø´Nÿ¹xþÏwrsv²±vt÷ 2 Áüð~ÿ³¹ø
{òÀóõýóø¸óù~|_±v~ñóðüw¯s±1âÛÿß{ÎóïN{f|{{º~w2 ±{/ÞÁüðÕw÷¿qo~|zy²¯qºwz|¹²±~w2 3 Next.js þo~ý~sto ÏxLink ¿À´Image ¿Àzy1/¿~û÷´ñõ¹üþó¹²Nrv¼»ý{¸sv1{qÝzú¿¸¹ø²ß´wv w~sº1Vercel ~Y}÷ùó~NÖ{rÔw}v{zs~w1st|÷wtxx~w2ûw_zenn w²wv »~wo¯¿vOut2
û¯wßÝz÷¿ API ú¿¸¹øu~ßò{v¬÷ö¹ø~Ýg API ú¿¸¹ø{w¿´ÿóÀwú¿¸¹øu_wz|¹ßx»~w1¬÷ö¹ø~Ýg²Ûw~w2 2 ÿüóÀúóÀxSEO ~·ÏÿSSR+CSR _HTML
}xCSR wß{¹¯¿}~{ww1Ýz}_è{»y}xs~w2 ÷÷ý´ôÛ~øÛÿ_f g_AWS Amplify ²voUwxv~w|1UserAgent ~×ß{_Ü|rº1Vercel x~û¯²ßýw~w
û¯wßÝz÷¿ API ú¿¸¹øu~ßò{v¬÷ö¹ø~Ýg API ú¿¸¹ø{w¿´ÿóÀwú¿¸¹øu_wz|¹ßx»~w1¬÷ö¹ø~Ýg²Ûw~w2 2 ÿüóÀúóÀxSEO ~·ÏÿSSR+CSR _HTML
}xCSR wß{¹¯¿}~{ww1Ýz}_è{»y}xs~w2 ÷÷ý´ôÛ~øÛÿ_f g_AWS Amplify ²voUwxv~w|1UserAgent ~×ß{_Ü|rº1Vercel x~û¯²ßýw~w
÷÷ý´ôÛ~øÛÿAmplify {¹Vercel x _}ÿAWS Amplify ç[~AWS ´óõùx~«Üg²rº1__AWS Amplify ²÷÷ý´ôÛ~YÜxwv}wvt~w2 ºÜ~oÿUserAgent
~×ß_Ü w{w1UserAgent åy~×ß{_Ü|r»sx|vnw1¿ÿw}ÿAmplify þo~Ow\wrssx|vn w~w2 g~ÛÿVercel x~û¯ Next.js ~~Swr»Vercel 1s~UserAgent ~_ܲë~w}»sx|úu¼1yv~üóðúó°?ý{ÿ ßwvt~w2³¹ø~¿u÷ùww|1z³x{Îÿ|ߺ~w1}~~~Vercel ²ãow~w øÛ~1üóðúó°?ýx~«Ügx³¹øñõ¹üþó¹zy²owv1¯VÔ{rsôüû²øs~w·v
û¯~rÿÿ_|Y¿s~{
ñõ¹üþó¹~/_UN Next.js x~û¯{¸º1úü¸èþ|/_{UN w~w2{{_è~¿WÝ×w1öü¶ü ¸ºÿù{³óöóô{²¿»¹w}»¸v{zº ~w2 Core Web Vitals ~¹³²²/_{}Õw1µ´ø~u
yg|UNw~w2 ûwtrÿzenn {²wvrº~y2 Zenn /kü¼·ü²÷ú²Next.& om~ow1Next.JS ²otv ~1xtv{ç[~ü¼·üz_&
ão?~W Next.js x~û¯{¸º1_~âÛ¹¿ó¿òÀóWu¼~w2 s¼{¸º1òðózâÛ{·?²ct¸ó¸û²{¹~ßß|ßòw1_/{kõxwv~ão²y»sx|w}~w 2âÛx~÷Ï|1/wsß{ö}y»sx²ßwvt~y2 ß{}¼w/wõ~´ó¿óõü|_~note Ï{²r»~w1¸q¼|rvutÿ note ÿþüø î÷wv{¹3
öo}sù~´þùü·÷ów~zßÏÿj__´þù& x±~wvÿ 3 o{´þùü·÷ó{/w²üð/}}¼»¸ó¸û²~ Chisato wy }½}½3 öo|}xvxwvt»~w1ù~s¼~wx´þùü&
ÿö¯wvt»ºÜ Atomic Design ~¿öwxgùW ç[~Atomic Design |×Ww1Storybook |rsv²ûv|÷wz svt»~w1·ó÷ûwûvw´yt³óýüýóø¯{w}zt{ xxvt~y2
ÿ÷¿|¿ºzt~w1r»oo¯zûw~w·v App Router x~û¯ öz»ñõ¹üþó¹UNx1^gözPages Router µýüøÎ~ÿ ýg²owv1û¯u{tzxxvt~yÿxtx1xv²ö? ~t»_mxzº}vwy ~ü¼·üzûv¯~wõ ûv¯~/øAngular 1.2 zy~÷tâÛx1Fat Controller |î¼v t»~w~x±vwõwtxxvt~y2
Îß~]ÿkz»âÛ¿õx Next.js ~ýÿö}Õ Atomic Design ~}Õ²wßo Ûözðü¸÷ó²ó÷ Lint xPrettier ²Biome
{Yöy»zy1õâÛ~}ö^/ ñó±ü¸ûv~gùW ðó¿¸óùwõ÷ý¸·¿ø Next.js ÿTypeScript x~þg²ow1Laravel {¹Go x~û¯~oÿY³xvbatch q´sv~y|1÷vþ|{zºzº~w ÎAI ²1¸ºßoö{zsvt»~wõûowz|¹¹ôüùcsv²±¹¼vt~y2 ÿClaude Code xCodex CLI sv~y ~1õýóø¸óùwõ~rß_|k~÷ý¸·¿ø{²}ÿ²Nxvt~y âÛøÛ´ßÍqwz1ñüðy_wït²oûy÷ý»¹²/W{wvt~y2w²c¼o|rzûww~w·vÿ
note xZenn ²´sv~y~w1 õ¹ýüzØtw~yÿ Zenn j__´þùü·÷ó Tech Blog m}g/~ý/UqIT ýÕµüó¹<IT
øüóù=~Û÷_1´þùü·÷ ó~ñüð~}_Tech Blog wyÿ TÏ~Õû[/~o¿wrº1Om²ï& note ÿþüø j__´þùü·÷ó ¸ó¸û²ñüðÿnote j__´þùü·÷ó~¸ó¸û²ñüð{¸»1¸ó¸û²öý°note wyÿ }~~oW´ñüðñóðü1´ùóøtxzy{ttv~åy²~ïwvt~yÿ