Slide 1

Slide 1 text

静的解析からはじめる 負債コード解消 株式会社ラクス 藤岡大樹

Slide 2

Slide 2 text

自己紹介 株式会社ラクス 開発本部 楽楽販売・労務開発課 藤岡大樹 入社3年目 業務内容:機能開発 サポート 上流設計 など

Slide 3

Slide 3 text

 クラウド型販売管理システム  導入社数1,000社超  10年以上続くサービス  Webデータベース  ブラウザを使ってCRUDができる  販売管理業務など用途に特化したDBを作れる  構成  PHP + PostgreSQL

Slide 4

Slide 4 text

課題 長年続くサービスになると… 未使用の関数が放置  コメントと処理が違う  そもそもコメントがない 1つの関数の役割が多い  … 可読性の低下 開発効率が下がる

Slide 5

Slide 5 text

デグレコワイ 呼び出し元を辿っていくと 「これ使ってないやん」 関係ないと思ってたのに 共通ロジックなってるやん。。。 今の開発規約と合ってなくて 読みにくい

Slide 6

Slide 6 text

デグレコワイ 呼び出し元を辿っていくと 「これ使ってないやん」 関係ないと思ってたのに 共通ロジックなってるやん。。。 今の開発規約と合ってなくて 読みにくい 見送ろっか…

Slide 7

Slide 7 text

静的解析ではじめる負債コード解消 inspection 機能開発で触ったファイル内の検知箇所を併せて修正する

Slide 8

Slide 8 text

Inspectionってなに? 多くのテンプレートが用意されていてエラーレベルを選ぶだけ テンプレートを元に自分用にカスタマイズも可能!

Slide 9

Slide 9 text

Inspection活用事例① 未使用の変数や関数を検知 Settings > inspections ◦ PHP ◦ Unused ◦ Unused local variable ◦ Unused private method

Slide 10

Slide 10 text

Inspection活用事例② コメントがない関数を検知 Settings > inspections ◦ PHP ◦ PHPDocs ◦ Missing PHPDoc comment

Slide 11

Slide 11 text

Inspection活用事例③ 引数の数が一致していない 関数呼び出しを検知 Settings > inspections ◦ PHP ◦ Type compatibility ◦ Parameter type

Slide 12

Slide 12 text

Inspection活用事例④ 自分でカスタマイズして検知 例)条件式の曖昧な比較(==)を検知したい! Settings > inspections ◦ General ◦ Structual Search Inspection デモ

Slide 13

Slide 13 text

Inspection活用事例④ 自分でカスタマイズして検知(デモ内容) 例)条件式の曖昧な比較(==)を検知したい! 1. Optionsに追加する

Slide 14

Slide 14 text

Inspection活用事例④ 自分でカスタマイズして検知(デモ内容) 例)条件式の曖昧な比較(==)を検知したい! 2. 検知したい内容を入力する ◦ テンプレートをもとにカスタマイズもできる

Slide 15

Slide 15 text

Inspection活用事例④ 自分でカスタマイズして検知(デモ内容) 例)条件式の曖昧な比較(==)を検知したい! 3. テンプレート名を決める 4. 完了

Slide 16

Slide 16 text

結果 検知箇所を一気に修正するのではなく、触ったファイルと一緒に 修正することで効率を向上できた 余計なファイルを改めで査読する必要もなく、そこまで開発作業の影響に ならない 少しずつ着実に負債コードを減らせている すべてが解消するには時間がかかるが、デグレを起こさないよう慎重に

Slide 17

Slide 17 text

まとめ 自分たちで強いルールを作ることで負債コードが放置されるのを 防ぐよう工夫した PhpStormだけでも多様な静的解析ができる カスタマイズが可能なのでチーム特有のチェックができる みなさんも自分たちのルールを もう一度見直してみてはいかかでしょうか?

Slide 18

Slide 18 text

ご清聴 ありがとうございました