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
小さいチームでもコードのアップデートと新規開発を止めない!
Search
Maki Goto
October 17, 2023
Programming
0
300
小さいチームでもコードのアップデートと新規開発を止めない!
2023年10月17日「経験談から学ぶ Webフロントエンドリプレイスの進め方LT」登壇資料
Maki Goto
October 17, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect
yasaichi
7
1.2k
Kotlin Multiplatform at Stable and Beyond (Android Makers 2024)
zsmb
0
600
Jetpack Composeとデザインシステム
rmakiyama
0
220
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
510
RaaP
ksss
0
140
Fragment Composition of GraphQL
quramy
14
1.7k
Docker_OSS_ホスティング入門
satokoki645
0
140
Amazon Aurora Serverless v2が意外と高かった話と、AWS Database Migration Serviceの話
satoshi256kbyte
1
110
RustでAWS Lambda functionをいい感じに書く
taiki45
2
140
Next.js App Router
quramy
14
2.3k
Open standards for building event-driven applications in the cloud
meteatamel
0
210
TCAとKMPを用いた新規動画配信アプリ 「ABEMA Live」の設計
tomu28
2
140
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
32
47k
Statistics for Hackers
jakevdp
790
220k
It's Worth the Effort
3n
180
27k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
34
6.1k
Being A Developer After 40
akosma
67
580k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
GitHub's CSS Performance
jonrohan
1025
450k
A Tale of Four Properties
chriscoyier
153
22k
In The Pink: A Labor of Love
frogandcode
138
21k
Building Flexible Design Systems
yeseniaperezcruz
320
37k
The Language of Interfaces
destraynor
151
23k
Transcript
小さいチームでも コードのアップデートと 新規開発を止めない! 2023年10月17日 「経験談から学ぶ Webフロントエンドリプレイスの進め方LT」 株式会社hokan 後藤麻希
・後藤麻希(Maki Goto) ・保険代理店向けSaaSの開発担当 ・2022年3月に株式会社hokanにSWEとして入社(hokan歴約1.5年) ・♡:ピクミンシリーズ(特に2)と坦々麺 誰?
保険業界に特化したSaaS「hokan」をやってます 株式会社hokanについて
伝えたいこと リプレイスには 「短期集中型」と 「長期じわじわ型」の 2種類がある
伝えたいこと リプレイス時にどちらのタイプか 考えるところから始めよう
✅ 技術負債の解決をしたいが、 タイミングが取れず踏み出せない人 ✅ 小規模な開発チーム このLTが役に立ちそうな人 ※すみません!フレームワーク移行はしていないので、話に出てこないです!😔😭
本日の流れ 1. hokan CRM の直近1年のフロントエンドの歴史 2. リプレイス秘話(短期集中編) a. CRA→Vite移行プロジェクト b.
サービスワーカーの移行 3. リプレイス秘話(長期じわじわ編) a. moment→date-fns への移行 b. material-ui → mui への移行(バージョン上げ) 4. 終わりに
開発チームについて(メンバー) SWEは6人在籍 うち4名がCRM(hokan)担当
2022/04 モノレポへ移行 2022/05 CIを整えた 2022/06 webpackのバージョン上げるためreact-rewired -> cracoに移行 2022/08 web(react)とmobile(react native)でeslintとprettier のルール統一 全ファイルTS化 2022/09 開発環境のVite移行
done 2022/11 登録ずみのServiceWorkerを削除し、Firebaseで管理する変更をリリース 2023/01 本番環境のVite移行 done 終わり! ServiceWorker完全削除 2023/02 moment → date-fns移行開始 material-ui → mui 移行開始 hokanのフロントエンドの歴史(直近1年) (⚫)CRA→Vite移行プロジェクト (⚫)ServiceWorker移行プロジェクト
2022/04 モノレポへ移行 2022/05 CIを整えた 2022/06 webpackのバージョン上げるためreact-rewired -> cracoに移行 2022/08 web(react)とmobile(react native)でeslintとprettier のルール統一 全ファイルTS化 2022/09 開発環境のVite移行
done 2022/11 登録ずみのServiceWorkerを削除し、Firebaseで管理する変更をリリース 2023/01 本番環境のVite移行 done 終わり! ServiceWorker完全削除 2023/02 moment → date-fns移行開始 material-ui → mui 移行開始 hokanのフロントエンドの歴史(直近1年) (⚫)CRA→Vite移行プロジェクト (⚫)ServiceWorker移行プロジェクト
hokanのフロントエンドの歴史(直近1年) 短期集中型 CRA→Vite移行プロジェクト ServiceWorker移行プロジェクト
2022/04 モノレポへ移行 2022/05 CIを整えた 2022/06 webpackのバージョン上げるためreact-rewired -> cracoに移行 2022/08 web(react)とmobile(react native)でeslintとprettier のルール統一 全ファイルTS化 2022/09 開発環境のVite移行
done 2022/11 登録ずみのServiceWorkerを削除し、Firebaseで管理する変更をリリース 2023/01 本番環境のVite移行 done 終わり! ServiceWorker完全削除 2023/02 moment → date-fns移行開始 material-ui → mui 移行開始 hokanのフロントエンドの歴史(直近1年)
hokanのフロントエンドの歴史(直近1年) 長期じわじわ型 moment → date-fns material-ui → mui
CRA→Vite移行プロジェクト 短期集中型 CRA→Vite移行プロジェクト
・開発体験を上げたい! モチベーション
• 全ファイルts化 • 環境変数のprefix書き換え • viteだと動かないライブラリにpatchを当てた(react-dropzone、redux-form) • webpack v4→v5(キャッシュが効くので結構早くなる) ◦
それまでwebpackを使うためにreact-rewiredを使用していたが、 v5に上げることに伴ってcracoにした 置き換えるためにやったこと(技術的視点)
• ts-migrate にて一括置き換え • 型怒られは後から直す 置き換えるためにやったこと(全ファイルts化)
• そのままでは動かせなくなるライブラリがあった 置き換えるためにやったこと(patch当て)
• 担当者1人をアサインして集中してもらう • レビュー&各ページの挙動確認はチーム全員で分担して行う 置き換えるためにやったこと(進め方)
ServiceWorker移行プロジェクト 短期集中型 ServiceWorker移行プロジェクト
• ServiceWorkerだとハンドリングがうまくいかないケースがあった • バージョン更新を確実に管理したい モチベーション
• さよならServiceWorker👋 • Firestoreにてバージョンを手動で設定する 置き換えるためにやったこと(技術的視点)
• コード本体に埋められているバージョンと、Firestoreからリクエストして得た最新バー ジョンの数字を比較し、差がある場合は更新ダイアログを表示 置き換えるためにやったこと(Firestoreによる手動管理) =
• Vite移行プロジェクトとほぼ同じ • 担当者を1人アサインして集中 • レビュー&各ページの挙動確認はチーム全員で分担して行う 置き換えるためにやったこと(進め方)
• 担当者がアサインされることによって、メンバーがそれぞれの開発・リプレイスに集中で きる • リリースタイミングなどビジネスサイドとのすり合わせも窓口がわかりやすい 短期集中型リプレイスのメリット
• 担当者が限られるので知見が広がらない • 対策 ◦ 全員で動作確認&レビューする ◦ 共有会を開く・ドキュメントを書く 短期集中型リプレイスのデメリット
長期じわじわ型リプレイスの話 短期集中型 長期じわじわ型
長期じわじわ型リプレイスの話 moment.js ↓ date-fns
• moment.jsは長らくメンテされていないので新しいものにしたかった モチベーション
置き換えるためにやったこと ・計画と進捗の可視化 ・チーム戦でゆるくやる
・notionのプロジェクト管理機能を活用 ・moment.jsをimportしているページをとにかく列挙し、タスクとして起票 計画と進捗の可視化
・担当者は割り振らず、手が空いた人が勝手にとっていくスタイル チーム戦でゆるくやる ↓ここでやる
長期じわじわ型リプレイスの話 material-ui ↓ mui
• 古い! モチベーション
置き換えるためにやったこと ・開発ついで対応作戦 ・声かけ運動
・一気に機械的に置き換えは難しかった ・それぞれの機能開発の中で通りかかったファイルを適宜リファクタ ・リファクタ忘れてる時はPRにて声かけ ゆるく声かけ運動
• 1つ1つのタスクを細かく独立させることにより、開発と並行して行える • 全員で取り掛かるので知見が共有しやすい 長期じわじわ型リプレイスのメリット
• 長期化するので何を持って終わりとするか見えにくい • 対策 ◦ 最初にゴールラインを決めておく ◦ 機能開発優先なので、できなかった場合は割り切る 長期じわじわ型リプレイスのデメリット
伝えたいこと リプレイスには 「短期集中型」と 「長期じわじわ型」の 2種類がある
伝えたいこと 短期集中型のリプレイス →担当者をアサインして集中 長期じわじわ型リプレイス →やることを洗い出して手が空いた人がやる
伝えたいこと リプレイス時にどちらのタイプか 考えるところがはじめの一歩
伝えたいこと ❤
hokanは一緒に働くエンジニアを探しています!! カジュアル面談も大歓迎です! https://recruit-engineer.hkn.jp/
• テックブースト ◦ 技術研鑽・開発効率向上を補助する12万円/年 • リモートワーク可 ◦ チームにより出社は週1〜2の場合もあり • フルフレックス
◦ コアタイム無し • 書籍購入費用補助 エンジニアに特別な福利厚生
カジュアル面談をしませんか?