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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hiroki Otsuka
June 30, 2022
Programming
0
1k
大規模プロダクトにLinterを導入し運用している話
Hiroki Otsuka
June 30, 2022
Tweet
Share
More Decks by Hiroki Otsuka
See All by Hiroki Otsuka
サービスと共にチームも成長する 〜New Relicを利用したサービスとチームの定量化〜
hirokiotsuka
0
1.6k
PHP_LaravelのプロダクトでのNew_Relic活用事例
hirokiotsuka
0
510
Other Decks in Programming
See All in Programming
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
180
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
830
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
200
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
720
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
410
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.4k
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
360
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
430
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.2k
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
130
Vibe codingでおすすめの言語と開発手法
uyuki234
0
210
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
67
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
60
What does AI have to do with Human Rights?
axbom
PRO
0
2k
KATA
mclloyd
PRO
34
15k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
150
Agile that works and the tools we love
rasmusluckow
331
21k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
290
Building AI with AI
inesmontani
PRO
1
670
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Code Reviewing Like a Champion
maltzj
527
40k
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 • 解析のルールはレベルベース • レベルに応じて指摘の厳密さが変わる •
ルールを細かく設定できないのでパス