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