Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
No content
Slide 2
Slide 2 text
X : @kotomin_m #phpcon_nagoya 早速ですが、 質問です!
Slide 3
Slide 3 text
X : @kotomin_m #phpcon_nagoya 複雑なプロダクトコード、 リファクタリングしてますか?
Slide 4
Slide 4 text
X : @kotomin_m #phpcon_nagoya リファクタリングの効果を ちゃんと測れてますか?
Slide 5
Slide 5 text
X : @kotomin_m #phpcon_nagoya そんなあなたに・・
Slide 6
Slide 6 text
X : @kotomin_m #phpcon_nagoya PhpMetricsを紹介!
Slide 7
Slide 7 text
X : @kotomin_m #phpcon_nagoya ことみんです! ●所属:ウィルゲート ●出身:北海道 ●好きなリファクタリング 「使ってないコードを消す」
Slide 8
Slide 8 text
X : @kotomin_m #phpcon_nagoya 名古屋メシ満喫してきました! 矢場とん ラケル
Slide 9
Slide 9 text
X : @kotomin_m #phpcon_nagoya 1. PhpMetrics とは? 2. メトリクスってどうやって出してるの? 3. リファクタリングに活用した事例 4. 今後の展望・締め 残り4分15秒で
Slide 10
Slide 10 text
X : @kotomin_m #phpcon_nagoya 「PhpMetrics」とは 美しく、 わかりやすい、 静的解析ツール
Slide 11
Slide 11 text
X : @kotomin_m #phpcon_nagoya 「PhpMetrics」とは コードを解析し 数値化した レポートを出力
Slide 12
Slide 12 text
X : @kotomin_m #phpcon_nagoya PhpMetricsのメリット 5分で はじめられます
Slide 13
Slide 13 text
X : @kotomin_m #phpcon_nagoya $ composer global require 'phpmetrics/phpmetrics' $ php ./vendor/bin/phpmetrics --report-html=myreport コマンド2回打つだけ
Slide 14
Slide 14 text
X : @kotomin_m #phpcon_nagoya コマンド2回打つだけ 簡単でうれしい! $ composer global require 'phpmetrics/phpmetrics' $ php ./vendor/bin/phpmetrics --report-html=myreport
Slide 15
Slide 15 text
X : @kotomin_m #phpcon_nagoya 出力されたレポート
Slide 16
Slide 16 text
X : @kotomin_m #phpcon_nagoya コード行数
Slide 17
Slide 17 text
X : @kotomin_m #phpcon_nagoya コード行数 クラス数
Slide 18
Slide 18 text
X : @kotomin_m #phpcon_nagoya コード行数 クラス数 バグ指数(バグりやすさ)
Slide 19
Slide 19 text
X : @kotomin_m #phpcon_nagoya これどうやって 計算してるの?
Slide 20
Slide 20 text
X : @kotomin_m #phpcon_nagoya メトリクスの計算式
Slide 21
Slide 21 text
X : @kotomin_m #phpcon_nagoya メトリクスの計算式 演算子 オペランド と
Slide 22
Slide 22 text
X : @kotomin_m #phpcon_nagoya メトリクスの計算式 演算子 オペランド 算術演算子 +, - 比較演算子 >, == etc……
Slide 23
Slide 23 text
X : @kotomin_m #phpcon_nagoya メトリクスの計算式 演算子 オペランド 算術演算子 +, - 比較演算子 >, == etc…… 変数 $a, $hoge 配列 $array[0] 関数名 etc……
Slide 24
Slide 24 text
X : @kotomin_m #phpcon_nagoya メトリクスの計算式 ● と の、 個数 と 種類数 を使って、それぞれ計算 演算子 オペランド n1 演算子の種類数 n2 オペランドの種類数 N1 演算子の個数 N2 オペランドの個数
Slide 25
Slide 25 text
X : @kotomin_m #phpcon_nagoya 複雑度 バグ指数 メトリクスの計算式 ※詳しくは公式ドキュメントを読んでね
Slide 26
Slide 26 text
X : @kotomin_m #phpcon_nagoya PhpMetricsで リファクタリング前後の 数値を比較してみた
Slide 27
Slide 27 text
X : @kotomin_m #phpcon_nagoya リファクタ手順 1. リファクタ対象決め 2. クラスの分割方法の検討 3. テストコードの実装 4. リファクタを実装
Slide 28
Slide 28 text
X : @kotomin_m #phpcon_nagoya 1.リファクタ対象決め ●バグ指数等が高いクラスから、いくつか ピックアップして比較検討
Slide 29
Slide 29 text
X : @kotomin_m #phpcon_nagoya ●全体で2番目に複雑なクラスに決定 ○ 中〜小規模の計71メソッドがあるクラス 1.リファクタ対象決め
Slide 30
Slide 30 text
X : @kotomin_m #phpcon_nagoya 1.リファクタ対象決め バグ指数 4.26 ●全体で2番目に複雑なクラスに決定 ○ 中〜小規模の計71メソッドがあるクラス
Slide 31
Slide 31 text
X : @kotomin_m #phpcon_nagoya 1.リファクタ対象決め バグ指数 4.26 ●全体で2番目に複雑なクラスに決定 ○ 中〜小規模の計71メソッドがあるクラス 通常より4.26倍 バグになりやすい
Slide 32
Slide 32 text
X : @kotomin_m #phpcon_nagoya 2.分割方法の検討 ●メソッド一覧をスプシに洗い出して整理 ○ 引数や呼び出し元などを調査 ●最終的なディレクトリ/ファイル構成を決定
Slide 33
Slide 33 text
X : @kotomin_m #phpcon_nagoya 3.テストコードの実装 ●移植後の動作を担保する目的 ●全メソッドにテストコードがある状態に ○ 今回は3~4割のメソッドのテストを追加 ○ ChatGPTを活用
Slide 34
Slide 34 text
X : @kotomin_m #phpcon_nagoya 4.実装 1.新しいクラスに実装&テストをコピー 2.新しいクラスを利用するように差し替え 3.古いクラスを削除
Slide 35
Slide 35 text
X : @kotomin_m #phpcon_nagoya バグ指数を比較 Before After 4.26 1クラス
Slide 36
Slide 36 text
X : @kotomin_m #phpcon_nagoya バグ指数を比較 Before After 4.26 9クラス 1クラス
Slide 37
Slide 37 text
X : @kotomin_m #phpcon_nagoya バグ指数を比較 0.52 0.52 0.54 0.4 0.23 0.15 0.51 0.06 0.36 4.26 Before After 1クラス 9クラス
Slide 38
Slide 38 text
X : @kotomin_m #phpcon_nagoya やってみた感想 ●数値での判断軸が1つ増える → 対象を決めるときの参考にしやすい ●リファクタ後の成果が数値で見れる → けっこう嬉しい
Slide 39
Slide 39 text
X : @kotomin_m #phpcon_nagoya 今後の展望 ●数値で見れることを活用して改善サイクル を回したい ●社内の複数プロダクトでの活用
Slide 40
Slide 40 text
X : @kotomin_m #phpcon_nagoya Let's! 5分ではじめる PhpMetrics活用 リファクタリング!