不要コード削除のススメ

2.6K Views

February 22, 25

スライド概要

PHPカンファレンス名古屋2025の登壇資料です
https://phpcon.nagoya/2025/

https://fortee.jp/phpcon-nagoya-2025/proposal/2e6231db-2a22-4d73-88d2-04a629076ca9

profile-image

チョコミントが好きなPHPエンジニア キーボードは2枚使わないとダメな子

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

不要コード削除のススメ PHPカンファレンス名古屋 2025 なお / @naopusyu

2.

自己紹介 名前:なお / 矢田 直 所属:株式会社カオナビ 職種:PHPer SNS:naopusyu 著者のひとりです 好き:チョコミント / コードを消すこと

3.

話すこと ▫どんなコードが不要なのか ▫なぜ生まれるのか、なぜ消さないのか ▫何が嬉しいのか、いつ消すのか ▫どのような手順で削除していくのか

4.

どんなコードが不要なのか

5.

使っていないコード 使っていないから不要コードと言えます 例えば... - 使っていない定数 使っていない変数/プロパティ 使っていない関数/メソッド 使っていないクラス 使っていないファイル

6.

コメント コメント自体は大事な内容です しかし、中には不要なコメントもあります 例えば... - コードを見たらわかるコメント コメントが間違っている 何年も残っているTODO 変更履歴が残っている

7.

デッドコード(到達不能コード、冗長コード) 到達不能ということは動かないコードなので不要です また、過去に必要な処理も現在は不要になっている場合もあります 引数でint以外を指定は 出来ないのでis_intは不要

8.

テストコード 必要と思って書いたテストコードも 不要になっている可能性があります 例えば... - テストケースが重複している - 無意味なテスト など プロパティの型がstringなら 型の検証は不要

9.

なぜ生まれるのか、なぜ消さないのか

10.

なぜ生まれるのか - 必要と思ったけど、実は不要だった - 先回りして作ったけど開発が途中で止まってコードだけが残った - 途中で仕様変更が入って使われなくなりコードだけ残った - 不具合修正などで使われなくなった - 新しいコードに置き換えて、古いコードは残った - 廃止した機能のコードが残り続ける - 機能の入り口(ページリンクやAPI実行)だけ消して、裏側のコードは消さずに残った

11.

なぜ消さないのか - 時間が取れない - 開発を優先することで削除する時間が取れない - 影響範囲がわからない - 不要になったタイミングで消していないので影響範囲がわからない状態になっている - コードを消すことで不具合が発生するリスクがある - 消す理由がない - システムを利用するユーザーからすると変化がない

12.

何が嬉しいのか、いつ消すのか

13.

何が嬉しいのか - コードの肥大化防止 - 使われていないコードを消しておくことでコード量が減ってシンプルになる - 可読性の向上 - 開発者のコード理解を助け、開発効率を高める - コードの調査、追加、修正がやりやすい - パフォーマンスの改善 - データベースからデータ取得などの不要な処理を消しておくことでパフォーマンス改善する ことができる

14.

いつ消すのか - コードが不要になった時 - 不要になったタイミングで消す - おそらく影響範囲が1番わかるタイミングです - 使われていないと気付いた時 - あとから消すはきっと消さないので気付いたタイミングで消す

15.

いつ消すのか - コードが不要になった時 - 不要になったタイミングで消す - おそらく影響範囲が1番わかるタイミングです これは理想ですね - 使われていないと気付いた時 - あとから消すはきっと消さないので気付いたタイミングで消す

16.

いつ消すのか(現実) - 削除する時間を作る - 開発中、つぎの作業までの合間にコード削除を行う - プロジェクトを立ち上げる - 1つのプロジェクトとしてコード削除を行う

17.

どのような手順で削除していくのか

18.

不要コードを探す 不要コードは次の方法で探します - IDE/静的解析ツール - PhpStormなら使っていないコードを指摘してくれる - PHPStanならデッドコードを指摘してくれる - Rectorを使ってデッドコードを消すこともできる - コードカバレッジ - カバレッジが低いクラスやメソッドがあればそれは使っていない可能性がある

19.

不要コードを探す - 特定の単語で検索 - 廃止した機能の名前などで探す - コミットログ - 数年間変更が入っていないコードは使われていない可能性もある - 目視 - よくわからないコメント、TODOは目視で探す

20.

コードを削除 削除は次の方法があります - コード/ファイルを削除 - 該当コードを削除するか、ファイルごと削除します - コメントアウト - 一時的にコメントアウトする - こちらは新しく不要なコードが誕生しているのでなるべくコードは削除しましょう

21.

コードレビュー コードを削除したら次の方にレビューしてもらい消して問題ないか確認します - 削除するコードを書いた人 - 有識者(リードエンジニア)

22.

テスト コードレビューが終わると次は既存に影響が出ていないことを確認します 確認の方法としては - 自動テスト(ユニットテスト、E2Eテスト) - 手動テスト すでにあるテストを活用するか、新しくテストを用意しても良いです とにかく既存に影響がないことを確認します

23.

テスト 削除したコード次第ではテストなしと判断もできます - コメントの削除 - テストコードの削除

24.

リリース テストで問題がなければ 最後はデプロイしたり、main(master)ブランチにマージします しばらく様子を見て何も起きなければ不要コードの削除は完了です

25.

あとはこの手順を繰り返しましょう!

26.

最後に

27.

不要コードは身近なところにあります それを放置すると消す難易度は上がります

28.

一度にたくさんのコードを消す必要はないです 1行だけでも良いので少しずつ消していくのが大事です

29.

みなさん!!!

30.

コードを消したくなりました??

31.

不要コードを見つけたら 削除しましょうね!

32.

ご清聴ありがとうございました