Gen1→Gen2移行のための準備

エンジニアの記録
技術メモ・実体験

「動いているコードは触るな」という文化があるチームもあると思います。でも、大規模な移行作業の前にはデッドコードの削除が必須です。

この記事では、Amplify Gen1からGen2への移行前にデッドコードを削除したPR(KYO-564)のレビュー経験をもとに、「安全なコード削除PRのレビュー方法」を書きます。

対象読者

デッドコード削除PRをレビューする立場のエンジニア、または「コードを消していいか怖い」と感じている人に向けて書きます。

PROFILE 20代ITエンジニア|チーム開発でPRレビューを日々やっている|Raw Ambition 運営
キラ
キラ
「このコード本当に使われてないの?」「消して大丈夫?」というレビューは怖い。でも怖がって放置すると技術的負債が積み上がる。
Contents
  1. なぜデッドコードを削除するのか
  2. 削除PRのレビューで確認すべきこと
  3. 「絶対に触ってはいけない」ファイルを先に特定する
  4. CIを使って安全を確認する
  5. まとめ:コード削除は「勇気」ではなく「確認」

なぜデッドコードを削除するのか

デッドコード(使われていないコード)を放置すると、以下の問題が起きます。

① 読む側のコストが上がる:新しいメンバーが「このコード何のために存在するの?」と混乱します。使われているコードと使われていないコードが混在していると、全体像の把握が難しくなります。

② 移行作業のスコープが広がる:Amplify Gen1からGen2への移行のような大きな作業では、デッドコードまで移行対象に含めてしまうと、作業量が無駄に増えます。移行前の整理は必須でした。

③ バンドルサイズが増える:使われていないパッケージやコードも含めてビルドされると、アプリのサイズが大きくなります。

スカイ
スカイ
「動いているから触らない」は短期的には安全だけど、長期的には技術的負債になる。移行前の整理は投資だと思って取り組む。

削除PRのレビューで確認すべきこと

今回レビューしたPR(KYO-564)の内容は「Amplify Gen1からGen2への移行前に、使われていないWebフロントエンドのコードを削除する」というものでした。

削除PRのレビューで一番大事なのは「削除してはいけないものが消えていないか」の確認です。「何を削除したか」より「何が残っているか」を確認します。

? 削除PRレビューのチェックリスト

  • CIのChecksが全部グリーンになっているか
  • amplify/backend/ディレクトリが変更されていないか(インフラ設定は絶対に触らない)
  • 削除されたパッケージがpackage.jsonから消えているか
  • 現在使われている機能(SSO・設定画面等)が動作するか
  • 削除されたコードが他のファイルからimportされていないか

? POINT

削除PRのレビューは「追加されたコードを読む」より「消えてはいけないものが残っているか確認する」という視点が重要です。GitHub の Files Changed で削除(赤)と変更(黄)を分けて確認します。

「絶対に触ってはいけない」ファイルを先に特定する

レビューを始める前に、「このPRで絶対に変更されてはいけないファイル」を先にリストアップします。

# 絶対に変更されてはいけないもの(KYO-564の場合)

amplify/backend/    → AWSのインフラ設定。変更されると環境が壊れる
src/api/            → GraphQLのAPI層。削除すると全機能が止まる
src/graphql/        → 自動生成ファイル。手動で触らない
SSO関連のコード      → 認証が壊れると全員ログインできなくなる
/settings/**        → 現在使われている設定画面
# 削除してOKなもの(KYO-564の場合)

src/view/           → 使われていない古いWebの画面
src/redux/          → 使われていない古いReduxスライス
cypress/            → E2Eテストのうち古いWebフロントのもの
package.json の不要な依存(FullCalendarなど)

このリストを先に作ってからGitHubの Files Changed を確認すると、「触ってはいけないものが変更されていないか」を効率よくチェックできます。

キラ
キラ
「何が消えたか」全部読むより「消えてはいけないものが残っているか」を確認する方が速くて正確。レビューの視点を変えるだけで全然違う。

CIを使って安全を確認する

削除PRで一番信頼できる確認方法はCIです。TypeScriptのコンパイルエラーやテストの失敗はCIが自動で検出してくれます。

# CIで自動確認される内容(KYO-564の場合)

npm run check → TypeScriptの型チェック
              → 削除したファイルを参照しているコードがあればエラーになる

npm run build → ビルドが通るか
              → import先が存在しないとビルドエラーになる

# ローカルで確認する必要があること

- 実際にログインできるか(SSO)
- 設定画面が動くか
- 削除されたはずのページが表示されないか

⚠️ CIで検出できないこと

CIは「コードが壊れていないか」は検出できますが、「この機能は本当に使われていないか」は検出できません。「使われていないと思って消したら実は使われていた」という問題は、コードの読み込みとチームへの確認で防ぎます。
スカイ
スカイ
「CIがグリーンならマージしていい」ではなく「CIがグリーン+手動確認でOK」がセット。CIは一つの確認手段にすぎない。

? この記事のまとめ
  • デッドコード削除は移行作業の前に必須。放置すると技術的負債になる
  • 削除PRのレビューは「何が消えたか」より「消えてはいけないものが残っているか」を確認する
  • レビュー前に「絶対に変更されてはいけないファイル」をリストアップする
  • CIのグリーン確認+手動での動作確認がセット

コード削除は「勇気」ではなく「確認」です。確認すべきことを確認すれば、怖がらずに不要なコードを消せます。きれいなコードベースは開発速度を上げます。

Recommended
ブログを始めるならConoHa WINGが最速
エンジニアの技術メモをブログで発信して収益化。月1,000円以下で始められます。
▶ ConoHa WINGを見てみる
※ アフィリエイトリンクです
Next
次回:「React NativeでGesture Handler + Reanimatedを使ってフリックを実装した話」
Raw Ambition 始動から21日目

コメント

タイトルとURLをコピーしました