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
静的解析ではじめる負債コード解消
Search
daiki1020
December 14, 2020
Programming
5.2k
0
Share
静的解析ではじめる負債コード解消
daiki1020
December 14, 2020
Other Decks in Programming
See All in Programming
「OSSがあるなら自作するな」は AI時代も正しいか ── Build vs Adopt の新しい判断基準
kumorn5s
7
3k
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
150
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
180
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
3
580
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
200
[BalkanRuby 2026] Drop your app/services!
palkan
3
670
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
160
GitHub Copilot CLIのいいところ
htkym
2
1k
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
520
Inside Stream API
skrb
1
130
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
880
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
120
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
470
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.5k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
270
Producing Creativity
orderedlist
PRO
348
40k
Navigating Team Friction
lara
192
16k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
820
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
270
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
700
Bash Introduction
62gerente
615
210k
Transcript
静的解析からはじめる 負債コード解消 株式会社ラクス 藤岡大樹
自己紹介 株式会社ラクス 開発本部 楽楽販売・労務開発課 藤岡大樹 入社3年目 業務内容:機能開発 サポート 上流設計 など
クラウド型販売管理システム 導入社数1,000社超 10年以上続くサービス Webデータベース ブラウザを使ってCRUDができる
販売管理業務など用途に特化したDBを作れる 構成 PHP + PostgreSQL
課題 長年続くサービスになると… 未使用の関数が放置 コメントと処理が違う そもそもコメントがない 1つの関数の役割が多い …
可読性の低下 開発効率が下がる
デグレコワイ 呼び出し元を辿っていくと 「これ使ってないやん」 関係ないと思ってたのに 共通ロジックなってるやん。。。 今の開発規約と合ってなくて 読みにくい
デグレコワイ 呼び出し元を辿っていくと 「これ使ってないやん」 関係ないと思ってたのに 共通ロジックなってるやん。。。 今の開発規約と合ってなくて 読みにくい 見送ろっか…
静的解析ではじめる負債コード解消 inspection 機能開発で触ったファイル内の検知箇所を併せて修正する
Inspectionってなに? 多くのテンプレートが用意されていてエラーレベルを選ぶだけ テンプレートを元に自分用にカスタマイズも可能!
Inspection活用事例① 未使用の変数や関数を検知 Settings > inspections ◦ PHP ◦ Unused ◦
Unused local variable ◦ Unused private method
Inspection活用事例② コメントがない関数を検知 Settings > inspections ◦ PHP ◦ PHPDocs ◦
Missing PHPDoc comment
Inspection活用事例③ 引数の数が一致していない 関数呼び出しを検知 Settings > inspections ◦ PHP ◦ Type
compatibility ◦ Parameter type
Inspection活用事例④ 自分でカスタマイズして検知 例)条件式の曖昧な比較(==)を検知したい! Settings > inspections ◦ General ◦ Structual
Search Inspection デモ
Inspection活用事例④ 自分でカスタマイズして検知(デモ内容) 例)条件式の曖昧な比較(==)を検知したい! 1. Optionsに追加する
Inspection活用事例④ 自分でカスタマイズして検知(デモ内容) 例)条件式の曖昧な比較(==)を検知したい! 2. 検知したい内容を入力する ◦ テンプレートをもとにカスタマイズもできる
Inspection活用事例④ 自分でカスタマイズして検知(デモ内容) 例)条件式の曖昧な比較(==)を検知したい! 3. テンプレート名を決める 4. 完了
結果 検知箇所を一気に修正するのではなく、触ったファイルと一緒に 修正することで効率を向上できた 余計なファイルを改めで査読する必要もなく、そこまで開発作業の影響に ならない 少しずつ着実に負債コードを減らせている すべてが解消するには時間がかかるが、デグレを起こさないよう慎重に
まとめ 自分たちで強いルールを作ることで負債コードが放置されるのを 防ぐよう工夫した PhpStormだけでも多様な静的解析ができる カスタマイズが可能なのでチーム特有のチェックができる みなさんも自分たちのルールを もう一度見直してみてはいかかでしょうか?
ご清聴 ありがとうございました