Slide 1

Slide 1 text

https://www.dip-net.co.jp/ 1 ⼤規模プロダクトにLinterを導⼊し 運⽤している話 ディップ株式会社 ⼤塚裕紀

Slide 2

Slide 2 text

https://www.dip-net.co.jp/ 2 自己紹介 大塚裕紀(おおつかひろき) • 経歴 2018年4月からエンジニアとして働き出す 2020年9月にディップ株式会社に入社 ずっとPHPやってます

Slide 3

Slide 3 text

https://www.dip-net.co.jp/ 3

Slide 4

Slide 4 text

https://www.dip-net.co.jp/ 4 10年ほど運用

Slide 5

Slide 5 text

https://www.dip-net.co.jp/ 5 数千ファイル

Slide 6

Slide 6 text

https://www.dip-net.co.jp/ 6 EC2からFargateへ AWS Fargate Amazon EC2

Slide 7

Slide 7 text

https://www.dip-net.co.jp/ 7 JavaからPHP&Laravelへ AWS Fargate Amazon EC2 + CMS

Slide 8

Slide 8 text

https://www.dip-net.co.jp/ 8 ですが。。

Slide 9

Slide 9 text

https://www.dip-net.co.jp/ 9 課題 • バグになりうるコードがある • 長期運用しておりコードが複雑 • テストコードが不十分

Slide 10

Slide 10 text

https://www.dip-net.co.jp/ 10 課題 • バグになりうるコードがある • 長期運用しておりコードが複雑 • テストコードが不十分

Slide 11

Slide 11 text

https://www.dip-net.co.jp/ 11 そもそもLinterってなに?

Slide 12

Slide 12 text

https://www.dip-net.co.jp/ 12 Linterとは • 「lint」という静的解析ツールから派生し出来た言葉 • 静的解析を行うプログラムの総称 • コード上は問題ないけどバグになりうる部分を指摘し てくれるツール

Slide 13

Slide 13 text

https://www.dip-net.co.jp/ 13 導入したLinter

Slide 14

Slide 14 text

https://www.dip-net.co.jp/ 14 導入したLinter https://phpinsights.com/

Slide 15

Slide 15 text

https://www.dip-net.co.jp/ 15 PHP Insights • PHP用の静的解析ツール • コードの品質やコーディングスタイルの解析に加え、 アーキテクチャや複雑さも解析してくれる • Laravel,Symfony,Yii,WordPress,Magento2などですぐに使 えるように設計されている

Slide 16

Slide 16 text

https://www.dip-net.co.jp/ 16 なぜPHP Insights?

Slide 17

Slide 17 text

https://www.dip-net.co.jp/ 17 なぜPHP Insights?

Slide 18

Slide 18 text

https://www.dip-net.co.jp/ 18 なぜPHP Insights? 実行結果が見やすい

Slide 19

Slide 19 text

https://www.dip-net.co.jp/ 19 なぜPHP Insights? • 細かくルールの設定が可能 • Code:コードの評価 • Complexity:複雑さの評価 • Archtecture:アーキテクチャの評価 • Style:コーディングのスタイルの評価

Slide 20

Slide 20 text

https://www.dip-net.co.jp/ 20 導入してどうだったか

Slide 21

Slide 21 text

https://www.dip-net.co.jp/ 21 導入してどうだったか • 導入は容易に出来た • ルールを絞ることで無理なく導入出来た

Slide 22

Slide 22 text

https://www.dip-net.co.jp/ 22 導入してどうだったか • 導入は容易に出来た • ルールを絞ることで無理なく導入出来た

Slide 23

Slide 23 text

https://www.dip-net.co.jp/ 23 導入してどうだったか • 導入は容易に出来た • ルールを絞ることで無理なく導入出来た

Slide 24

Slide 24 text

https://www.dip-net.co.jp/ 24 導入後の運用

Slide 25

Slide 25 text

https://www.dip-net.co.jp/ 25 導入後の運用 AWS CodeBuild GitHub

Slide 26

Slide 26 text

https://www.dip-net.co.jp/ 26 導入後の運用 テストと Linterを実行 PUSH HOOK GitHub AWS CodeBuild

Slide 27

Slide 27 text

https://www.dip-net.co.jp/ 27 導入後の運用 テストと Linterを実行 PUSH HOOK GitHub AWS CodeBuild

Slide 28

Slide 28 text

https://www.dip-net.co.jp/ 28 導入後の運用

Slide 29

Slide 29 text

https://www.dip-net.co.jp/ 29 導入後の運用 コードレビューの負担が減る

Slide 30

Slide 30 text

https://www.dip-net.co.jp/ 30 課題は?

Slide 31

Slide 31 text

https://www.dip-net.co.jp/ 31 課題は? • バグになりうるコードがある • 長期運用しておりコードが複雑 • テストコードが不十分

Slide 32

Slide 32 text

https://www.dip-net.co.jp/ 32 課題は? • バグになりうるコードがある ü バグになりうるコードはLinterで指摘される • 長期運用しておりコードが複雑 • テストコードが不十分

Slide 33

Slide 33 text

https://www.dip-net.co.jp/ 33 課題は? • バグになりうるコードがある ü バグになりうるコードはLinterで指摘される • 長期運用しておりコードが複雑 ü 修正の土台が出来た • テストコードが不十分

Slide 34

Slide 34 text

https://www.dip-net.co.jp/ 34 これからやっていきたいこと

Slide 35

Slide 35 text

https://www.dip-net.co.jp/ 35 これからやっていきたいこと • ルールの厳密化 • 自動修正

Slide 36

Slide 36 text

https://www.dip-net.co.jp/ 36 これからやっていきたいこと • ルールの厳密化 • 自動修正

Slide 37

Slide 37 text

https://www.dip-net.co.jp/ 37 これからやっていきたいこと • ルールの厳密化 • 自動修正

Slide 38

Slide 38 text

https://www.dip-net.co.jp/ 38 まとめ

Slide 39

Slide 39 text

https://www.dip-net.co.jp/ 39 まとめ • コードに合わせて無理のない範囲で導入できた • コード全体の品質が向上した • コードレビューの負担が減った • 自動化することでプロダクトの品質を維持できる • ルールの厳密化と自動修正もやって行きたい

Slide 40

Slide 40 text

https://www.dip-net.co.jp/ 40 ありがとうございました。

Slide 41

Slide 41 text

https://www.dip-net.co.jp/ 41 APENDIX

Slide 42

Slide 42 text

https://www.dip-net.co.jp/ 42 他Linter • Larastan • 解析のルールはレベルベース • レベルに応じて指摘の厳密さが変わる • ルールを細かく設定できないのでパス