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
Vue.js / Nuxt.js から React / Next.js へ移行した話と2年経っ...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryosuke Yoshizaki
July 04, 2023
Technology
1.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vue.js / Nuxt.js から React / Next.js へ移行した話と2年経って残った課題
Ryosuke Yoshizaki
July 04, 2023
More Decks by Ryosuke Yoshizaki
See All by Ryosuke Yoshizaki
20210122_DLLAB_講演資料_株式会社キカガク
yoshizaki_kkgk
1
2.6k
20200801_DLLAB_講演資料_キカガク
yoshizaki_kkgk
0
3.9k
【キカガク】機械学習の事業化までの道のりと社内教育のノウハウ
yoshizaki_kkgk
2
1.2k
「新規事業×AI」をはじめよう
yoshizaki_kkgk
5
2.3k
20180806_AIエンジニア育成のプロセスと落とし穴.pdf
yoshizaki_kkgk
1
270
失敗から学ぶ起業入門 ~いつの日も問題は鶏と卵~
yoshizaki_kkgk
10
35k
20180720_AIエンジニア育成のプロセスと落とし穴.pdf
yoshizaki_kkgk
0
520
20180512_キカガク_AI案件のよくある落とし穴と人材育成
yoshizaki_kkgk
1
2.3k
20171207_リテールAI研究会_株式会社キカガク.pdf
yoshizaki_kkgk
0
1.2k
Other Decks in Technology
See All in Technology
書籍セキュアAPIについて
riiimparm
0
400
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
2.1k
AI研修(Day1)【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
3.2k
AI Agent を本番環境へ―― Microsoft Foundry × Azure Serverless で作る Enterprise-Ready な基盤
shibayan
PRO
1
1k
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
120
PLaMo 3.0 Primeの構造化出力サポート
pfn
PRO
0
160
運用を犠牲にせずコストを制御し事業成長を支える B2B SaaS ID管理基盤におけるS3 Tableのログストレージ活用
kaminashi
1
130
AI時代の強いチームの作り方
yuukiyo
23
13k
WEBフロントエンド研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
900
システム監視入門
grimoh
5
790
なぜ、あなたのエージェントは言うことを聞かないのか
segavvy
1
610
オートマトンと字句解析でRoslynを読む
tomokusaba
0
130
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
Mobile First: as difficult as doing things right
swwweet
225
10k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
430
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
470
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Designing Experiences People Love
moore
143
24k
Thoughts on Productivity
jonyablonski
76
5.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Transcript
リプレイスしたあと、実際どう?システム再構築への挑戦 LT ⼤会 Vue.js/Nuxt.js から React/Next.js へ 移⾏した話と2年経って残った課題 株式会社キカガク 代表取締役会⻑
吉崎 亮介
⾃⼰紹介 株式会社キカガク 代表取締役会⻑ 吉﨑 亮介 エンジニアとしての学⽣時代 出⾝:舞鶴⾼専 / 京都⼤学⼤学院 世界最⼤級の学会(化学⼯学系)にて若⼿最優秀賞を受賞
~ 23 歳 新卒で株式会社 SHIFT 配属:社⻑室(社⻑直下で新規事業/R&D を担当) 24 歳 株式会社キカガクを創業(現在:社員数 70 名超) 社会⼈向けに AI を含めた先端技術の教育を提供 現在まで累計 80,000 名を超える受講⽣ 25 歳 ~ 現在 東京⼤学で講義を担当 情報系の⼤学院⽣向けに AI の基礎から実装まで紹介 26 歳 ~ 31 歳 株式会社エイチームの社外取締役 上場企業での経営の意思決定に関与 31 歳 ~ 現在 1991 年⽣まれ 31 歳 京都府出⾝ 趣味:サウナ
今回の話の前提 ベンチャー企業がプロダクト開発を1から始める時に起きたこと • 売上は⼈⼒オペレーション(講義)で⽴っていて、それをスケールさせるための プロダクト開発であるため、時間的に余裕がある ← 本当は最重要 • リプレイスの変⾰にはトップダウンとボトムアップがあり、今回はトップダウン 先に結論
• トップダウン⽅式は現状の改善から⼊らず、新しい技術選定を使って 新しいプロダクトを横で作り、その利点をプロダクトチームに伝えて変える 起点 トップダウン⽅式 起点 起点 起点 ボトムアップ⽅式 既存 新規 詳細はこちら Vue.js & Nuxt.js から React & Next.js へ移⾏した理由
起:Vue.js/Nuxt.js で初のプロダクト開発を開始 Django (Python) や Rails (Ruby) の MTV/MVC デザインパターンとの相性
• Vue.js/Nuxt.js は社内でよく使われていたデザインパターンと相性が良かった • 社内へ知⾒のある⼈が⼊ってきた ← よくあるパターン • React の JSX は書きにくいし、読みにくい印象を持っていた ← 慣れの問題 既存 経験の少ないチームでの開発戦略 C 向け静的(SSG) → 社内向け動的(SSR)→ C 向け動的(SSR)
承:成⻑とともに⾒えてくる課題 Django (Python) や Rails (Ruby) の MTV/MVC デザインパターンとの相性 •
Vue.js/Nuxt.js は社内でよく使われていたデザインパターンと相性が良かった • 社内へ知⾒のある⼈が⼊ってきた ← よくあるパターン • React の JSX は書きにくいし、読みにくい印象を持っていた ← 慣れの問題 既存 成⻑と共に遭遇した問題* • ページ単位で SSG/SSR を切り分けたかった(SSR の LP がパフォーマンス低) • TypeScript での開発を前提としないとチーム開発でエラーが多発 → 品質低 経験の少ないチームでの開発戦略 C 向け静的(SSG) → 社内向け動的(SSR)→ C 向け動的(SSR) * Nuxt.js が Ver. 2 のときの話です
転:⼩さなプロダクトとは⾔えど… ⼀度動き始めたものを変えることは容易ではない • 技術選定を変更しても UX が改善されるインパクトが⼤きいか不明 → UX が改善されなかったときには無駄なコストと負債だけが残る最悪の展開 •
数少ないチームで新技術の調査と既存に対する新規機能開発の同時並⾏は困難
新規事業を横に⽴てて技術調査の役割も兼ねさせた • 現状とは別チームで⾛らせることでメリットの部分だけを徐々に融合させた → 半年後に既存チームも Next.js へ変更を決定 → 約1年かけて Next.js
へ移⾏を完了 • イノベーター理論の順番を守った変⾰ • 技術負債の解消は⼀朝⼀⼣ではできないため、 会社の⽂化に合わせた戦略が間違いなく必要 → 今回はエンジニアの創業者が推進したパターン 結:イノベーター理論を意識した負債の解消 ⼀度動き始めたものを変えることは容易ではない • 技術選定を変更しても UX が改善されるインパクトが⼤きいか不明 → UX が改善されなかったときには無駄なコストと負債だけが残る最悪の展開 • 数少ないチームで新技術の調査と既存に対する新規機能開発の同時並⾏は困難 既存 新規 詳細はこちら Vue.js & Nuxt.js から React & Next.js へ移⾏した理由
あれから2年:今も向き合う負債の問題 もっと難易度の⾼いところに課題があった • Firebase を前提としたことで成⻑痛に遭遇 • DB が Firestore の
NoSQL で設計や 実装がスピードダウン • Auth もプロジェクトごとに分けられない → B 向けや C 向けなど複数アプリケーションの統合がややこしい 変更の難易度 Lv. 3 DB、Auth Lv. 2 ⾔語、Web フレームワーク Lv. 1 ディレクトリ構成
あれから2年:今も向き合う負債の問題 もっと難易度の⾼いところに課題があった • Firebase を前提としたことで成⻑痛に遭遇 • DB が Firestore の
NoSQL で設計や 実装がスピードダウン • Auth もプロジェクトごとに分けられない → B 向けや C 向けなど複数アプリケーションの統合がややこしい 変更の難易度 Lv. 3 DB、Auth Lv. 2 ⾔語、Web フレームワーク Lv. 1 ディレクトリ構成 先⼈から伝えたいこと(屍を乗り越えて...!!) 最近は開発スピードを優先させるために Bubble などのノーコードもあるが コードを書く書かない問わず、DB と Auth は今後の成⻑に合わせられる 選定となるように慎重に選んでほしい...(切実) そして、開発スピードの要因はチーム⼈数が増えると⼤きく変わるのをお忘れなく
おまけ:最近ならこんなアーキテクチャーかな?(主観) AI を使うのが主流になる前提でのアーキテクチャー設計が不可⽋ メイン DB: PostgreSQL(RDB) • マルチテナント対応 • ベクトル検索サポート
推し Auth:Azure Active Directory App:App Service Azure OpenAI Service とのシームレスな連携 推し User Azure OpenAI Service 検索 Cognitive Search Grounding Chat サブ DB: Cosmos DB (NoSQL) チャット 履歴保存 FAQ ファイル Blob Storage (JSON など) コーポレート GUI で 編集 例)エンタープライズサーチ 開発する要件によって さらなる作り込みが 必要となりますが プロトタイプなら このぐらいから始めてみては いかがでしょうか?
キカガクではエンジニアを⼤募集! 成⻑期のプロダクト開発に関わりたい⽅、ご応募お待ちしています! 会社の雰囲気を知れば絶対に⼊社したくなる! → キカガクカンパニーデック