$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
小さいチームでもコードのアップデートと新規開発を止めない!
Search
Maki Goto
October 17, 2023
Programming
0
540
小さいチームでもコードのアップデートと新規開発を止めない!
2023年10月17日「経験談から学ぶ Webフロントエンドリプレイスの進め方LT」登壇資料
Maki Goto
October 17, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
160
チームをチームにするEM
hitode909
0
340
AWS CDKの推しポイントN選
akihisaikeda
1
240
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.4k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
410
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
320
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.3k
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
120
Developing static sites with Ruby
okuramasafumi
0
310
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Building Adaptive Systems
keathley
44
2.9k
Raft: Consensus for Rubyists
vanstee
141
7.2k
Code Review Best Practice
trishagee
74
19k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Six Lessons from altMBA
skipperchong
29
4.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
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の場合もあり • フルフレックス
◦ コアタイム無し • 書籍購入費用補助 エンジニアに特別な福利厚生
カジュアル面談をしませんか?