大規模プロダクトにLinterを導入し運用している話
by
Hiroki Otsuka
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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 • 解析のルールはレベルベース • レベルに応じて指摘の厳密さが変わる • ルールを細かく設定できないのでパス