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
550
小さいチームでもコードのアップデートと新規開発を止めない!
2023年10月17日「経験談から学ぶ Webフロントエンドリプレイスの進め方LT」登壇資料
Maki Goto
October 17, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
180
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
330
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
Deno Tunnel を使ってみた話
kamekyame
0
310
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
15
4.4k
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
760
ゆくKotlin くるRust
exoego
1
190
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
210
gunshi
kazupon
1
140
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
4.3k
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
710
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
450
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
110
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
Done Done
chrislema
186
16k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
Music & Morning Musume
bryan
46
7k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
420
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
100
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
230
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Building Applications with DynamoDB
mza
96
6.9k
Designing for Performance
lara
610
70k
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の場合もあり • フルフレックス
◦ コアタイム無し • 書籍購入費用補助 エンジニアに特別な福利厚生
カジュアル面談をしませんか?