$30 off During Our Annual Pro Sale. View Details »

推測しないで、計測し、判断する! 〜カイゼンのためのステップ考察〜 / phpconfuk2023

推測しないで、計測し、判断する! 〜カイゼンのためのステップ考察〜 / phpconfuk2023

PHPカンファレンス福岡2023のLT登壇資料です。
https://phpcon.fukuoka.jp/2023/

blue_goheimochi

June 24, 2023
Tweet

More Decks by blue_goheimochi

Other Decks in Technology

Transcript

  1. PHP 2023
    2023.06.24
    Yuta Ohashi

    View Slide

  2. / @blue_goheimochi
    PHP(Laravel), JavaScript(Vue.js/Nuxt.js),
    , , ,
    , PUBG Mobile,

    View Slide

  3. Mission

    View Slide

  4. / @blue_goheimochi
    PHP(Laravel), JavaScript(Vue.js/Nuxt.js),
    , , ,
    , PUBG Mobile,

    View Slide

  5. / @blue_goheimochi
    PHP(Laravel), JavaScript(Vue.js/Nuxt.js),
    , , ,
    , PUBG Mobile,
    6 24 ( )
    PR

    View Slide

  6. / @blue_goheimochi
    PHP(Laravel), JavaScript(Vue.js/Nuxt.js),
    , , ,
    , PUBG Mobile,
    6 24 ( )
    PR
    !!
    !!

    View Slide

  7. View Slide

  8. 8
    • Notes on Programming in C
    • C 6 2





    View Slide

  9. View Slide

  10. View Slide

  11. :

    View Slide

  12. 12
    :




    View Slide

  13. 13
    :





    • etc...

    View Slide

  14. 14
    :
    • : phpcpd
    • Copy/Paste Detector (CPD) for PHP code.
    • 2023 1

    • Don t Repeat Yourself

    View Slide

  15. 15
    :
    phpcpd 4.1.0 by Sebastian Bergmann.
    Found 184 clones with 9893 duplicated lines in 142 files:
    - /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:166-524 (358 lines)
    /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:170-528
    ~~~~~~~~~~
    - /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:321-561 (240 lines)
    /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:334-574
    ~~~~~~~~~~~
    - /app/xxxxxx/controllers/xxxxxx.php:909-1084 (175 lines)
    /app/xxxxxx/controllers/xxxxxx.php:1247-1422
    ~~~~~~~~~~
    8.41% duplicated lines out of 112932 total lines of code.
    Average size of duplication is 54 lines, largest clone has 358 of lines
    184 142 9,893

    View Slide

  16. 16
    :
    phpcpd 4.1.0 by Sebastian Bergmann.
    Found 184 clones with 9893 duplicated lines in 142 files:
    - /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:166-524 (358 lines)
    /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:170-528
    ~~~~~~~~~~
    - /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:321-561 (240 lines)
    /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:334-574
    ~~~~~~~~~~~
    - /app/xxxxxx/controllers/xxxxxx.php:909-1084 (175 lines)
    /app/xxxxxx/controllers/xxxxxx.php:1247-1422
    ~~~~~~~~~~
    8.41% duplicated lines out of 112932 total lines of code.
    Average size of duplication is 54 lines, largest clone has 358 of lines
    Fat

    View Slide

  17. 17
    :
    phpcpd 4.1.0 by Sebastian Bergmann.
    Found 184 clones with 9893 duplicated lines in 142 files:
    - /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:166-524 (358 lines)
    /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:170-528
    ~~~~~~~~~~
    - /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:321-561 (240 lines)
    /app/xxxxxx/xxxxxx/xxxxxx/xxxxxx.php:334-574
    ~~~~~~~~~~~
    - /app/xxxxxx/controllers/xxxxxx.php:909-1084 (175 lines)
    /app/xxxxxx/controllers/xxxxxx.php:1247-1422
    ~~~~~~~~~~
    8.41% duplicated lines out of 112932 total lines of code.
    Average size of duplication is 54 lines, largest clone has 358 of lines
    112,932 8.41%
    54 358

    View Slide

  18. 18
    :
    • : 112,932
    • : 8.41%
    • : 9,893
    • : 184
    • 規 : 142

    View Slide

  19. 19
    :
    • : terryyin/lizard
    • Lizard is an extensible Cyclomatic Complexity Analyzer for many
    programming languages(PHP Python )


    • if/else, for, switch

    View Slide

  20. 20
    :
    10 25%
    30 40%
    50 70%
    75 98%

    View Slide

  21. 21
    :
    • : terryyin/lizard
    • Lizard is an extensible Cyclomatic Complexity Analyzer for many
    programming languages(PHP Python )


    • if/else, for, switch

    =========================================================================================
    !!!! Warnings (cyclomatic_complexity > 15 or length > 1000 or parameter_count > 100) !!!!
    ================================================
    NLOC CCN token PARAM length location
    ------------------------------------------------
    247 63 2436 0 353 aaaaAction@41-393@./xxxxx/controllers/zzzzController.php
    139 41 1272 0 202 bbbbAction@625-826@./xxxxx/controllers/zzzzController.php
    124 39 1018 0 161 ccccAction@77-237@./xxxxx/controllers/zzzzController.php
    81 37 351 1 84 xxxx@840-923@./xxxx/xxxx/Controller/xxxx/Abstract.php
    152 37 1086 0 197 xxxxAction@21-217@./xxxx/xxxx/xxxx/xxxxController.php
    143 36 1110 0 197 xxxxAction@740-936@./xxxx/xxxx/xxxxController.php
    150 35 1516 0 223 xxxxAction@33-255@./xxxx/controllers/xxxxController.php
    63 34 741 1 72 xxxx@16-87@./xxxx/xxxx/xxxx/xxxx/xxxx/xxxx.php
    81 34 917 0 106 aaaaAction@229-334@./yyyy/controllers/yyyyController.php
    110 31 1071 0 143 xxxxAction@20-162@./xxxx/controllers/xxxxController.php
    75 30 753 0 108 bbbb@79-186@./xxxx/controllers/yyyyController.php
    97 29 926 0 127 ccccAction@609-735@./xxxx/controllers/yyyyController.php
    ==========================================================================================
    Total nloc Avg.NLOC AvgCCN Avg.token Fun Cnt Warning cnt Fun Rt nloc Rt
    ------------------------------------------------------------------------------------------
    33248 16.3 2.3 104.2 1743 11 0.01 0.05
    63
    70%

    View Slide

  22. 22
    :
    • : terryyin/lizard
    • Lizard is an extensible Cyclomatic Complexity Analyzer for many
    programming languages(PHP Python )


    • if/else, for, switch

    =========================================================================================
    !!!! Warnings (cyclomatic_complexity > 15 or length > 1000 or parameter_count > 100) !!!!
    ================================================
    NLOC CCN token PARAM length location
    ------------------------------------------------
    247 63 2436 0 353 aaaaAction@41-393@./xxxxx/controllers/zzzzController.php
    139 41 1272 0 202 bbbbAction@625-826@./xxxxx/controllers/zzzzController.php
    124 39 1018 0 161 ccccAction@77-237@./xxxxx/controllers/zzzzController.php
    81 37 351 1 84 xxxx@840-923@./xxxx/xxxx/Controller/xxxx/Abstract.php
    152 37 1086 0 197 xxxxAction@21-217@./xxxx/xxxx/xxxx/xxxxController.php
    143 36 1110 0 197 xxxxAction@740-936@./xxxx/xxxx/xxxxController.php
    150 35 1516 0 223 xxxxAction@33-255@./xxxx/controllers/xxxxController.php
    63 34 741 1 72 xxxx@16-87@./xxxx/xxxx/xxxx/xxxx/xxxx/xxxx.php
    81 34 917 0 106 aaaaAction@229-334@./yyyy/controllers/yyyyController.php
    110 31 1071 0 143 xxxxAction@20-162@./xxxx/controllers/xxxxController.php
    75 30 753 0 108 bbbb@79-186@./xxxx/controllers/yyyyController.php
    97 29 926 0 127 ccccAction@609-735@./xxxx/controllers/yyyyController.php
    ==========================================================================================
    Total nloc Avg.NLOC AvgCCN Avg.token Fun Cnt Warning cnt Fun Rt nloc Rt
    ------------------------------------------------------------------------------------------
    33248 16.3 2.3 104.2 1743 11 0.01 0.05
    3

    View Slide

  23. 23
    :
    • ( ): 69,946
    • CCN: 2.8
    • CCN
    • :4,518

    View Slide

  24. 24
    :
    • : phpmd unusedcode





    View Slide

  25. 25
    :
    • : PHP CSFixer, PHP CodeSniffer
    • PSR-12 PSR-2

    View Slide

  26. 26
    :
    • : PHPStan, Psalm
    • (= )

    View Slide

  27. 27
    :





    • etc...

    View Slide

  28. 28
    :



    View Slide

  29. 29
    :
    • : Git
    • Git

    View Slide

  30. 30
    :
    • : Google Analytics



    View Slide

  31. 31
    :
    • : new relic, Datadog, Mackerel, Sentry
    • APM



    View Slide

  32. 32
    :
    PHPerKaigi 2023

    View Slide

  33. 33
    :





    View Slide

  34. View Slide

  35. :

    View Slide

  36. 36

    View Slide

  37. 37

    View Slide

  38. 38

    View Slide

  39. 39

    View Slide

  40. 40
    :
    4 4


    • 4

    View Slide

  41. 41
    :




    • etc...

    View Slide

  42. 42
    :
    • : iPhone Apple Watch





    View Slide

  43. 43
    :






    View Slide

  44. 44
    :
    2 3
    6 6 /km

    View Slide

  45. 45
    :
    2 3
    6 6 /km
    30

    View Slide

  46. 46
    :
    • 5


    • Zones iPhone
    • 211 (0.64 × ) =

    View Slide

  47. 47
    :
    Zone %MAX
    1 50 60% 94 112
    2 60 70% 113 131
    3 70 80% 132 150
    4 80 90% 151 169
    5 90 100% 170 188

    View Slide

  48. 48
    :
    Zone
    1
    LSD
    2
    3
    4
    5

    View Slide

  49. View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. まとめ

    View Slide

  54. 54




    • 2

    View Slide

  55. Mission

    View Slide

  56. View Slide