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
520
小さいチームでもコードのアップデートと新規開発を止めない!
2023年10月17日「経験談から学ぶ Webフロントエンドリプレイスの進め方LT」登壇資料
Maki Goto
October 17, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
OSS開発者という働き方
andpad
5
1.7k
1から理解するWeb Push
dora1998
3
1.3k
Improving my own Ruby thereafter
sisshiki1969
1
150
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
300
DockerからECSへ 〜 AWSの海に出る前に知っておきたいこと 〜
ota1022
5
1.9k
Testing Trophyは叫ばない
toms74209200
0
540
Vue・React マルチプロダクト開発を支える Vite
andpad
0
110
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
4
1.9k
TDD 実践ミニトーク
contour_gara
1
280
Protocol Buffersの型を超えて拡張性を得る / Beyond Protocol Buffers Types Achieving Extensibility
linyows
0
100
Trem on Rails - Prompt Engineering com Ruby
elainenaomi
1
100
AIでLINEスタンプを作ってみた
eycjur
1
220
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
696
190k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Music & Morning Musume
bryan
46
6.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Designing Experiences People Love
moore
142
24k
The Language of Interfaces
destraynor
160
25k
Site-Speed That Sticks
csswizardry
10
810
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
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の場合もあり • フルフレックス
◦ コアタイム無し • 書籍購入費用補助 エンジニアに特別な福利厚生
カジュアル面談をしませんか?