Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発メンバーから見たマナリンクFEリプレース
Search
Kota Ogawa
April 18, 2024
Programming
1
140
開発メンバーから見たマナリンクFEリプレース
Kota Ogawa
April 18, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
170
生成AIを活用したリファクタリング実践 ~コードスメルをなくすためのアプローチ
raedion
0
160
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
1
190
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
10
9.5k
FluorTracer / RayTracingCamp11
kugimasa
0
110
Phronetic Team with AI - Agile Japan 2025 closing
hiranabe
2
700
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
5
2.7k
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
120
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
260
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
190
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
110
React Native New Architecture 移行実践報告
taminif
1
120
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
990
Typedesign – Prime Four
hannesfritz
42
2.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
A Modern Web Designer's Workflow
chriscoyier
697
190k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Balancing Empowerment & Direction
lara
5
770
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
GraphQLとの向き合い方2022年版
quramy
49
14k
GitHub's CSS Performance
jonrohan
1032
470k
The Cult of Friendly URLs
andyhume
79
6.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Transcript
開発メンバーから⾒たマナリンクFEリプレース 株式会社NoSchool / kou
• ⾃⼰紹介 • Nuxt2からNext.jsへの移⾏⼿順 • Nextリプレースについて⼊社当時に思っていたこと • 今改めて振り返る、Nextリプレースしていて良かったこと • Nextリプレースの⼤変なところとか苦労
• まとめ ⽬次
⾃⼰紹介
• kou(X:@ogakuzuko) ◦ NoSchoolに⼊社して1年9ヶ⽉ぐらい(2022年8⽉⼊社) • NoSchoolでの開発 ◦ オンライン家庭教師マナリンクの開発を担当 ◦ フロントエンド(Nuxt,
Next) / アプリ(RN) / バックエンド(Laravel) • その他 ◦ ⼈⽣初のLT登壇です…! ◦ aikoが好き(今公開しているコナンの映画の主題歌歌ってます😻) ⾃⼰紹介
Nuxt2からNext.jsへの移⾏⼿順
• NuxtからNextへのリプレース作業は、⼀度に全ての画⾯/機能をNext移⾏するのではな く、画⾯のパス単位で段階的に移⾏する⽅針で進めていった ◦ このあたりの詳細な意思決定の判断はCTOの発表の通り • NuxtとNextの画⾯の振り分けは、ローカルの開発環境ではNginxコンテナが、ステージン グ環境以降ではAmazon CloudFrontがその振り分けを担っている ◦
詳細は次のスライド以降 Nuxt2からNext.jsへの段階的なリプレース
• ローカルの開発環境では、 Docker上のNginxコンテナ をリバースプロキシとして ⽤いることで、 Nuxtの画⾯とNextの画⾯の 振り分けを実現している 段階的リプレースの作業⼿順(Local)
• ステージング環境以降では、 Amazon CloudFrontのビヘイビア 設定を⽤いて、Nuxtの画⾯と Nextの画⾯の振り分けを実現 • また、このCloudFrontの設定は、 AWS CDKで管理されているため、
インフラに詳しくなくとも Nextへの移⾏作業を進めることが 可能 段階的リプレースの作業⼿順(Staging/Production)
• 以下のことやそれ以外で気になることがある⽅は、ぜひ懇親会等でお話しましょう! より詳細な話は社内勉強会などでできるかも🤭 ◦ ローカル開発環境ではNginxコンテナでNuxtとNextの振り分けを⾏なっているって 具体的にどういうこと? ◦ Nuxt.jsとNext.jsはそれぞれどこにデプロイしているの? ◦ パス単位で移⾏ってより具体的にはどういうこと?
◦ 実際のNext移⾏作業の際にあったミスの話とかあれば聞きたい! ◦ などなど とはいえここで全て説明するには余⽩が狭すぎるので…
Nextリプレースについて⼊社当時に思っていたこと
(正直)とくになにも思ってませんでした…☺ (というかそこまで意識が回ってなかった…)
• というのも…、Nextリプレースの時系列は以下のような感じだった Nextリプレースの時系列
• 😹 マナリンクのドメイン知識を覚える⽅がまずは⼤事〜〜〜 • 😹 ⼊社1ヶ⽉で⽇々の技術キャッチアップでいっぱいいっぱい〜〜〜 • 😹 Vue2はまだわかるけどNuxt2とVue3(Composition API)の書き⽅ワカラン〜〜
• 😻 React/Next関係は個⼈で触っていたのでこのあたりのキャッチアップは⼀旦省けるの 嬉しい〜〜〜 • 😻 Reactの⽅がまだ慣れているのでReact書けるの嬉しい〜〜〜 • 😻 ⽣CSS書くの苦しいマンなのでTailwindありがたい〜〜〜〜 • 😻 NginxとかCDKとかよくわからないけどNextに移⾏したいパスを追加指定するとNext に向くのすごい〜〜〜〜〜〜 • 😹 それよりもサーバーサイドがやばい〜〜〜〜〜〜 当時の気持ち(⼊社1ヶ⽉とか)
今改めて振り返る、Nextリプレースしていて良かったこと
• 新規に作る機能はNext(React)で初めから開発することができる! ◦ このおかげで、⽐較的⼤規模な新機能開発の際にもNext(React)を使⽤して開発することができた ◦ また、Webとアプリで同じ機能を実装する際の開発効率が爆上がりした • 社内勉強会の際にReactの話題を話すことができる ◦ Reactだと⾃分でも技術記事を書いたこともあるので、話題に出しやすいので嬉しい。笑
• 移⾏を積み重ねながら少しずつ改善をしていくことができる(いきなりベストプラクティ スを求めなくていい) • 移⾏に際しての⼼理的な⾯での負担がフルリプレースよりも軽い 段階的なリプレースであったからこその良かったこと
Nextリプレースの⼤変なところとか苦労
• 普段の機能開発の際にNuxt2(Vue2)とNext(React)両⽅のキャッチアップが必要になる ◦ Vue2系とReactでは書き⽅以前に考え⽅にも違いがあり、コードを読む際の認知負荷も⾼い ◦ ただ、基本的には改修頻度の⾼い箇所からNextへリプレースが進められているので、リプレースが進む につれてNuxt(Vue)を触る頻度は減っていく傾向にはある • 移⾏し終わったからとすぐにNuxtの画⾯を削除できるわけではない ◦
nuxt-routerなどでの遷移が残っている場合などに404になってしまう(実際に漏れる) • Nuxt(Vue)とNext(React)の双⽅を修正しないと変更が漏れる場合がある(ヘッダーとか) • ESLintなどの設定や、aspidaの型など、NuxtとNextで2重管理になるファイルが出てしまう 段階的リプレースであることによる⼤変なところ
まとめ
VueとReactをどっちもさわれるの、個⼈的にはとても楽しい🤤
ご清聴ありがとうございました☺