Slide 1

Slide 1 text

PHPerKaigi 2024 @9rokirishima なぜPHPStanやPHP CodeSnifferを導入するのか 〜受託開発編〜

Slide 2

Slide 2 text

自己紹介 ● 緒方 大佑(おがた だいすけ) ● X:くろきり(@9rokirishima) ● 所属 ○ Growfit株式会社 ○ 開発やったりマネージャーやったり

Slide 3

Slide 3 text

弊社の現在状況 ● 基本的に新規案件に適用 ● 使用ツール ○ PHP-CS-Fixer ○ PHPStan(レベル6) ● BitbucketPipelineを使い、ブランチをpushする時にチェック が走る

Slide 4

Slide 4 text

なぜ導入したのか?

Slide 5

Slide 5 text

書き方が違うコード読むの辛い

Slide 6

Slide 6 text

● 案件跨いでレビューやデバッグしてると少しづつ違うのが読んでい てストレスになってくる ○ なんなら同じプロダクト内で書き方が違う ○ PSR-12で統一するというルールはあるけど形骸化 ● 保守が弊社じゃなかったとしてもプロダクトの今後のために極力読 みやすいコードにして他社に渡したい 静的解析入れて読みやすいコードを保ちたい

Slide 7

Slide 7 text

導入までの道のり

Slide 8

Slide 8 text

メンバーに相談 次のPJから静的解析 入れたいんだけど… (めんどくさがられるかなぁ…)

Slide 9

Slide 9 text

メンバーに相談 わかりました! !?!?

Slide 10

Slide 10 text

あっさり導入決定!

Slide 11

Slide 11 text

これで全て上手くいく!

Slide 12

Slide 12 text

とはならない

Slide 13

Slide 13 text

適用したPJの体制 ● PM(くろきり) ● バックエンドチーム ● フロントエンドチーム ● ブロックチェーンチーム 静的解析の運用はバックエンドチームにお願いした

Slide 14

Slide 14 text

しばらく経って 納期迫ってるし修正に時間 かかるので全然使ってないです !? 導入してみてどう?

Slide 15

Slide 15 text

導入自体にはポジティブだけど 継続しようとするとことろにハードルがある 最初はやってたけど 納期が… うち保守やらないし… 他のところは入れなく てもやれてるし…

Slide 16

Slide 16 text

反省点 ● いきなり運用をお願いしてしまったこと ○ 急にまかせても上手くできないのは当たり前 ● 完了の定義に静的解析によるチェックが含まれていなかった ○ 「実装でやるべきこと」ではなく「新しい作業」が増えてるように 感じて負担になっている

Slide 17

Slide 17 text

改めていく

Slide 18

Slide 18 text

変えたこと ● 自分の方でみんなが使える所まで設定とフォローを行う ○ 新規案件用のベースブランチに予め組み込み、pushすれば 自動でBitbucketPipelineでチェックが走るように ○ IDEの設定もドキュメントにまとめる ● 実装完了の定義に静的解析によるチェックも含める ○ 今の所は回っている ○ 上手く進まない時にアラートが上がりやすくなってる

Slide 19

Slide 19 text

改善余地はまだまだあるけど 徐々によくなっていってる

Slide 20

Slide 20 text

● 契約形態は関係なくて、プロダクトに必要ならツール入れよう ● 導入したいなら皆がやり切れる仕組みまで作る まとめ

Slide 21

Slide 21 text

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