Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ITトレンドのフロントエンドNext.js移行までの道のり
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
株式会社イノベーション(エンジニア)
September 12, 2025
Technology
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 株式会社イノベーション(エンジニア)
社内でAIコンサルしたら "かなり良い成果"が出せた話
innovationjp
0
94
AWSのECSを分かりやすく 例えてみた
innovationjp
0
8
書店の入り口でわかる、いまの関心
innovationjp
0
20
日常生活における AI活用事例(俺)
innovationjp
0
580
AI時代の エンジニア生存戦略と 『余白会』
innovationjp
0
16
SDD (仕様書駆動開発)を やってみて
innovationjp
0
18
git worktree上の開発環境を整備した話
innovationjp
0
880
自作WebSocket (RFC6455)
innovationjp
0
47
新規事業で「Spec駆動開発」を 導入したら、開発よりもSpec修 正で死んだ話
innovationjp
0
45
Other Decks in Technology
See All in Technology
AIエージェントが名古屋の猛暑からあなたを守る
happysamurai294
0
130
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
490
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
200
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
270
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
3
2.2k
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.4k
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2.2k
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
120
アンオフィシャルな、オフィシャルからのお願い
wyamazak_devrel
0
110
AIはどのように 組織のアジリティを変えるのか?
junki
4
930
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
10k
Bash Introduction
62gerente
615
220k
Deep Space Network (abreviated)
tonyrice
0
170
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
エンジニアに許された特別な時間の終わり
watany
107
250k
GraphQLとの向き合い方2022年版
quramy
50
15k
Into the Great Unknown - MozCon
thekraken
41
2.6k
New Earth Scene 8
popppiees
3
2.3k
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ÿ