Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模プロダクトにLinterを導入し運用している話

 大規模プロダクトにLinterを導入し運用している話

68b11f940176220aa84f755abb0bea10?s=128

Hiroki Otsuka

June 30, 2022
Tweet

Other Decks in Programming

Transcript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  15. https://www.dip-net.co.jp/ 15 PHP Insights • PHP用の静的解析ツール • コードの品質やコーディングスタイルの解析に加え、 アーキテクチャや複雑さも解析してくれる •

    Laravel,Symfony,Yii,WordPress,Magento2などですぐに使 えるように設計されている
  16. https://www.dip-net.co.jp/ 16 なぜPHP Insights?

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

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

  19. https://www.dip-net.co.jp/ 19 なぜPHP Insights? • 細かくルールの設定が可能 • Code:コードの評価 • Complexity:複雑さの評価

    • Archtecture:アーキテクチャの評価 • Style:コーディングのスタイルの評価
  20. https://www.dip-net.co.jp/ 20 導入してどうだったか

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

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

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

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

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

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

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

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

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

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

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

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

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

    修正の土台が出来た • テストコードが不十分
  34. https://www.dip-net.co.jp/ 34 これからやっていきたいこと

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

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

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

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

  39. https://www.dip-net.co.jp/ 39 まとめ • コードに合わせて無理のない範囲で導入できた • コード全体の品質が向上した • コードレビューの負担が減った •

    自動化することでプロダクトの品質を維持できる • ルールの厳密化と自動修正もやって行きたい
  40. https://www.dip-net.co.jp/ 40 ありがとうございました。

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

  42. https://www.dip-net.co.jp/ 42 他Linter • Larastan • 解析のルールはレベルベース • レベルに応じて指摘の厳密さが変わる •

    ルールを細かく設定できないのでパス