Slide 1

Slide 1 text

#PHPerKaigi 2023 ©2023 RAKUS Co., Ltd. 【実録】「PHP_CodeSniffer」で始める 快適コードレビューライフ
 2023/03/25 PHPerKaigi 2023
 株式会社ラクス
 森下 繁喜


Slide 2

Slide 2 text

#PHPerKaigi 2023 自己紹介
 ● 森下 繁喜(もりした しげき)
 ○ 株式会社ラクス
 ○ 開発担当
 ● 趣味
 ○ 筋トレ(ベンチプレス80kg挙げる系PHPer)
 
 
 2

Slide 3

Slide 3 text

#PHPerKaigi 2023 3 アジェンダ §1. 「PHP_CodeSniffer」について
 §2. 「PHP_CodeSniffer」を導入するに至った経緯
 §3. 「PHP_CodeSniffer」を導入してみて
  ※導入手順や設定ファイルなどについては触れません


Slide 4

Slide 4 text

#PHPerKaigi 2023 4 §1. 「PHP_CodeSniffer」について
 ● PHP_CodeSnifferとは
 ○ コーディング規約の違反を検出するライブラリです。
 ○ PSRやPEARなどの様々なコーディング規約を指定して検査を実施していま す。
 ○ 独自の規約を追加することも可能です。


Slide 5

Slide 5 text

#PHPerKaigi 2023 5 §1. 「PHP_CodeSniffer」について
 ● チームでの運用方法
 ○ CIに組み込んでチェック


Slide 6

Slide 6 text

#PHPerKaigi 2023 6 §2. 「PHP_CodeSniffer」を導入するに至った経緯
 突然ですが、
 コードレビューって辛くないですか?


Slide 7

Slide 7 text

#PHPerKaigi 2023 7 §2. 「PHP_CodeSniffer」を導入するに至った経緯
 ● コードレビュー時に確認すること
 ○ コーディング規約
 ○ ネーミング規約
 ○ ソースコードの可読性  など
 
 
 


Slide 8

Slide 8 text

#PHPerKaigi 2023 8 §2. 「PHP_CodeSniffer」を導入するに至った経緯
 ● コードレビュー時に確認すること
 ○ コーディング規約
 ○ ネーミング規約
 ○ ソースコードの可読性  など
 
 
 確認することが
 多すぎる!!


Slide 9

Slide 9 text

#PHPerKaigi 2023 9 §2. 「PHP_CodeSniffer」を導入するに至った経緯
 ● コーディング規約・ネ―ミング規約の数が多い
 ○ コーディング規約:57件
 ○ ネーミング規約 :26件    合計:83件
 ● 機械的にチェックできる規約も...
 ○ クラス名の単語の先頭は大文字にする
 ○ インデントは空白文字2文字分
 


Slide 10

Slide 10 text

#PHPerKaigi 2023 10 §2. 「PHP_CodeSniffer」を導入するに至った経緯 ● 問題点
 ○ コーディング規約・ネーミング規約の確認に時間がかかる
 ○ 確認漏れが発生
 ○ 指摘、指摘対応、再レビューの工数がかかる 


Slide 11

Slide 11 text

#PHPerKaigi 2023 11 §2. 「PHP_CodeSniffer」を導入するに至った経緯 コーディング規約・ネーミング規約のうち、
 機械チェック可能なものは自動でチェックしてほしい


Slide 12

Slide 12 text

#PHPerKaigi 2023 12 §2. 「PHP_CodeSniffer」を導入するに至った経緯
 PHP_CodeSnifferを導入しましょう!

Slide 13

Slide 13 text

#PHPerKaigi 2023 13 §3. 「PHP_CodeSniffer」を導入してみて ● コードレビューでの負担が減った?


Slide 14

Slide 14 text

#PHPerKaigi 2023 14 §3. 「PHP_CodeSniffer」を導入してみて
 しかし

Slide 15

Slide 15 text

#PHPerKaigi 2023 15 §3. 「PHP_CodeSniffer」を導入してみて 
 めっちゃ怒られる

Slide 16

Slide 16 text

#PHPerKaigi 2023 16 §3. 「PHP_CodeSniffer」を導入してみて
 なぜ?

Slide 17

Slide 17 text

#PHPerKaigi 2023 17 §3. 「PHP_CodeSniffer」を導入してみて ● Commitを開発完了時にまとめてPushしていた
 ○ CI実行時にまとめて修正指摘が返ってくる


Slide 18

Slide 18 text

#PHPerKaigi 2023 18 §3. 「PHP_CodeSniffer」を導入してみて ● 開発中に細かいCommit粒度でPushするように ○ その結果、 「開発→CIでコードを確認→修正」のサイクルで 実装に集中しやすい状態ができた。

Slide 19

Slide 19 text

#PHPerKaigi 2023 19 §3. 「PHP_CodeSniffer」を導入してみて ● ほかに困ったことは?
 ○ 警告への対処法がわからない
 → 各メンバーで発生した警告の対処法を
   チームで共通のシートにまとめる
   
 


Slide 20

Slide 20 text

#PHPerKaigi 2023 20 まとめ ● 静的解析ツール最高!! ○ レビューコストの削減 ← 本来の目的 ○ 実装コストの削減 チェックする項目数を30%削減できた!    合計:83件 → 57件に

Slide 21

Slide 21 text

#PHPerKaigi 2023 おわり     ご清聴ありがとうございました!! 21