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.1k
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
2
翻訳用の Chrome 拡張を作った
innovationjp
0
2
zenn-writer-skill が 素晴らしかった話 - 質問に答えていたら、記事ができていた -
innovationjp
0
2
エンジニアが事業側に⾏って、 考える順番が変わった
innovationjp
0
0
Go 1.27 リリース解説 メモリ最適化・JSON v2・待望のジェネリックメソッド解説
innovationjp
0
18
MoQT フルスクラッチ実装
innovationjp
0
18
月18万行の コーディングを行った話
innovationjp
0
8.5k
アイデア枯渇から救った 1匹の猫の話
innovationjp
0
31
『問題解決』を読んでSkillにしてみた
innovationjp
0
450
Other Decks in Technology
See All in Technology
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
970
夫婦で子育てするための育児標準化
codmoninc
PRO
0
480
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
190
Turning Repos into the Product Second Brain with an LLM Wiki
linedevth
0
100
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
210
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
How to Design Configuration for Rails Applications
willnet
1
880
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
440
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
130
~最速でビジネスインパクトを創出する~ Sansanのデータ基盤と活用事例
sansantech
PRO
0
110
導入から定着へ ~コーディングエージェントを日常業務に組み込む実践知~
yukisakai1225
0
110
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
320
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
HDC tutorial
michielstock
2
960
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Designing for Performance
lara
612
70k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Mind Mapping
helmedeiros
1
400
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
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ÿ