Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
大規模プロダクトにLinterを導入し運用している話
Search
Hiroki Otsuka
June 30, 2022
Programming
0
730
大規模プロダクトにLinterを導入し運用している話
Hiroki Otsuka
June 30, 2022
Tweet
Share
More Decks by Hiroki Otsuka
See All by Hiroki Otsuka
サービスと共にチームも成長する 〜New Relicを利用したサービスとチームの定量化〜
hirokiotsuka
0
850
PHP_LaravelのプロダクトでのNew_Relic活用事例
hirokiotsuka
0
300
Other Decks in Programming
See All in Programming
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
130
オブジェクト指向のリ・オリエンテーション~歴史を振り返り、AI時代に向きなおる~
hanyudaeiiti
2
200
イベントストーミングによるオブジェクトモデリング・オブジェクト指向プログラミングの適用・開発プロセスの変遷・アーキテクチャの変革 / Object modeling with Event Storming.
nrslib
12
3.2k
【KMC春合宿2024】実装視点で見るNeural Radiance Fields
runningoutrate
0
150
PHPでOfficeファイルを取り扱う! PHP Officeライブラリを プロダクトに組み込んだ話
hirobe1999
0
840
15分間でふんわり理解するDocker @ Matsuriba MAX
ukwhatn
PRO
1
340
WinUI 3デモ - "CommunityToolkit.Mvvm"NuGetパッケージ編
andrewkeepcoding
0
140
マイ隙間家具OSSたちのご紹介
karupanerura
2
160
Why 1 + 1 = 2 in Swift?
1plus4
1
250
LPIXEL×CADDi_kaerururu
kaerururu
3
300
Kotlinを用いたDSL的な設計手法と使用上の注意
kohii00
3
530
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
110
Featured
See All Featured
Become a Pro
speakerdeck
PRO
8
4.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
18
1.7k
Practical Orchestrator
shlominoach
180
9.7k
In The Pink: A Labor of Love
frogandcode
137
21k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
11
1.4k
A designer walks into a library…
pauljervisheath
199
23k
Building Adaptive Systems
keathley
29
1.8k
A Tale of Four Properties
chriscoyier
150
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.3k
Robots, Beer and Maslow
schacon
PRO
154
7.9k
Building Applications with DynamoDB
mza
88
5.6k
Transcript
https://www.dip-net.co.jp/ 1 ⼤規模プロダクトにLinterを導⼊し 運⽤している話 ディップ株式会社 ⼤塚裕紀
https://www.dip-net.co.jp/ 2 自己紹介 大塚裕紀(おおつかひろき) • 経歴 2018年4月からエンジニアとして働き出す 2020年9月にディップ株式会社に入社 ずっとPHPやってます
https://www.dip-net.co.jp/ 3
https://www.dip-net.co.jp/ 4 10年ほど運用
https://www.dip-net.co.jp/ 5 数千ファイル
https://www.dip-net.co.jp/ 6 EC2からFargateへ AWS Fargate Amazon EC2
https://www.dip-net.co.jp/ 7 JavaからPHP&Laravelへ AWS Fargate Amazon EC2 + CMS
https://www.dip-net.co.jp/ 8 ですが。。
https://www.dip-net.co.jp/ 9 課題 • バグになりうるコードがある • 長期運用しておりコードが複雑 • テストコードが不十分
https://www.dip-net.co.jp/ 10 課題 • バグになりうるコードがある • 長期運用しておりコードが複雑 • テストコードが不十分
https://www.dip-net.co.jp/ 11 そもそもLinterってなに?
https://www.dip-net.co.jp/ 12 Linterとは • 「lint」という静的解析ツールから派生し出来た言葉 • 静的解析を行うプログラムの総称 • コード上は問題ないけどバグになりうる部分を指摘し てくれるツール
https://www.dip-net.co.jp/ 13 導入したLinter
https://www.dip-net.co.jp/ 14 導入したLinter https://phpinsights.com/
https://www.dip-net.co.jp/ 15 PHP Insights • PHP用の静的解析ツール • コードの品質やコーディングスタイルの解析に加え、 アーキテクチャや複雑さも解析してくれる •
Laravel,Symfony,Yii,WordPress,Magento2などですぐに使 えるように設計されている
https://www.dip-net.co.jp/ 16 なぜPHP Insights?
https://www.dip-net.co.jp/ 17 なぜPHP Insights?
https://www.dip-net.co.jp/ 18 なぜPHP Insights? 実行結果が見やすい
https://www.dip-net.co.jp/ 19 なぜPHP Insights? • 細かくルールの設定が可能 • Code:コードの評価 • Complexity:複雑さの評価
• Archtecture:アーキテクチャの評価 • Style:コーディングのスタイルの評価
https://www.dip-net.co.jp/ 20 導入してどうだったか
https://www.dip-net.co.jp/ 21 導入してどうだったか • 導入は容易に出来た • ルールを絞ることで無理なく導入出来た
https://www.dip-net.co.jp/ 22 導入してどうだったか • 導入は容易に出来た • ルールを絞ることで無理なく導入出来た
https://www.dip-net.co.jp/ 23 導入してどうだったか • 導入は容易に出来た • ルールを絞ることで無理なく導入出来た
https://www.dip-net.co.jp/ 24 導入後の運用
https://www.dip-net.co.jp/ 25 導入後の運用 AWS CodeBuild GitHub
https://www.dip-net.co.jp/ 26 導入後の運用 テストと Linterを実行 PUSH HOOK GitHub AWS CodeBuild
https://www.dip-net.co.jp/ 27 導入後の運用 テストと Linterを実行 PUSH HOOK GitHub AWS CodeBuild
https://www.dip-net.co.jp/ 28 導入後の運用
https://www.dip-net.co.jp/ 29 導入後の運用 コードレビューの負担が減る
https://www.dip-net.co.jp/ 30 課題は?
https://www.dip-net.co.jp/ 31 課題は? • バグになりうるコードがある • 長期運用しておりコードが複雑 • テストコードが不十分
https://www.dip-net.co.jp/ 32 課題は? • バグになりうるコードがある ü バグになりうるコードはLinterで指摘される • 長期運用しておりコードが複雑 •
テストコードが不十分
https://www.dip-net.co.jp/ 33 課題は? • バグになりうるコードがある ü バグになりうるコードはLinterで指摘される • 長期運用しておりコードが複雑 ü
修正の土台が出来た • テストコードが不十分
https://www.dip-net.co.jp/ 34 これからやっていきたいこと
https://www.dip-net.co.jp/ 35 これからやっていきたいこと • ルールの厳密化 • 自動修正
https://www.dip-net.co.jp/ 36 これからやっていきたいこと • ルールの厳密化 • 自動修正
https://www.dip-net.co.jp/ 37 これからやっていきたいこと • ルールの厳密化 • 自動修正
https://www.dip-net.co.jp/ 38 まとめ
https://www.dip-net.co.jp/ 39 まとめ • コードに合わせて無理のない範囲で導入できた • コード全体の品質が向上した • コードレビューの負担が減った •
自動化することでプロダクトの品質を維持できる • ルールの厳密化と自動修正もやって行きたい
https://www.dip-net.co.jp/ 40 ありがとうございました。
https://www.dip-net.co.jp/ 41 APENDIX
https://www.dip-net.co.jp/ 42 他Linter • Larastan • 解析のルールはレベルベース • レベルに応じて指摘の厳密さが変わる •
ルールを細かく設定できないのでパス