Slide 1

Slide 1 text

今あらためて考える PHPに型定義をする理由 PHP Conf 沖縄 2022 by @isanasan_ 1

Slide 2

Slide 2 text

自己紹介 PHP Conf 沖縄 2022 by @isanasan_ 2

Slide 3

Slide 3 text

Lancersプロダクト開発部QAチーム CakePHPのバージョンアップを担当 DevOpsに興味関心がある @isanasan_ @isanasan @isana PHP Conf 沖縄 2022 いさな by @isanasan_ 3

Slide 4

Slide 4 text

PHP Conf 沖縄 2022 最近PHPの型が注目されている気がする by @isanasan_ 4

Slide 5

Slide 5 text

PHP Conf 沖縄 2022 直近の主要なカンファレンス by @isanasan_ 5

Slide 6

Slide 6 text

PHP Conf 沖縄 2022 PHPer Kaigi 2022 by @isanasan_ 6

Slide 7

Slide 7 text

PHP Conf 沖縄 2022 https://fortee.jp/phperkaigi-2022/proposal/7a340d9f-1f46-4f72-9886-a5f599eeac1c 7

Slide 8

Slide 8 text

PHP Conf 沖縄 2022 PHP Conf 2021 by @isanasan_ 8

Slide 9

Slide 9 text

PHP Conf 沖縄 2022 https://fortee.jp/phpcon-2021/proposal/a7e53ddb-09fd-404e-bb90-b5047e8994ab 9

Slide 10

Slide 10 text

PHP Conf 沖縄 2022 最近PHPの静的解析も注目されている気がする by @isanasan_ 10

Slide 11

Slide 11 text

PHP Conf 沖縄 2022 直近の主要なカンファレンス by @isanasan_ 11

Slide 12

Slide 12 text

PHP Conf 沖縄 2022 PHP Conf 2021 by @isanasan_ 12

Slide 13

Slide 13 text

PHP Conf 沖縄 2022 https://fortee.jp/phpcon-2021/proposal/49dd21f3-769d-4170-a9a9-b1f18c4e1135 13

Slide 14

Slide 14 text

PHP Conf 沖縄 2022 https://fortee.jp/phpcon-2021/proposal/b9a17925-8800-4415-9676-99a1e24d181d 14

Slide 15

Slide 15 text

PHP Conf 沖縄 2022 PHPer Kaigi 2021 by @isanasan_ 15

Slide 16

Slide 16 text

PHP Conf 沖縄 2022 https://fortee.jp/phperkaigi-2021/proposal/35177e2b-189c-43c2-ad29-e74caf5033e7 16

Slide 17

Slide 17 text

PHP Conf 沖縄 2022 JetBrainsの調査 by @isanasan_ 17

Slide 18

Slide 18 text

PHPstan Phan Psalm 合計 2019 9% 5% 1% 15% 2020 11% 2% 3% 16% 2021 18% 2% 9% 29% PHP Conf 沖縄 2022 どんな品質ツールを使っていますか? https://www.jetbrains.com/ja-jp/lp/devecosystem-2019/php/ https://www.jetbrains.com/ja-jp/lp/devecosystem-2020/php/ https://www.jetbrains.com/ja-jp/lp/devecosystem-2021/php/ 18

Slide 19

Slide 19 text

はい いいえ 静的解析 is 何 33% 38% 28% PHP Conf 沖縄 2022 静的解析を使用していますか? https://www.jetbrains.com/ja-jp/lp/devecosystem-2021/php/#PHP_do-you-use-static-analysis 19

Slide 20

Slide 20 text

PHP Conf 沖縄 2022 最近PHPの型の表現力が上っている気がする by @isanasan_ 20

Slide 21

Slide 21 text

Scalar type hints PHP Conf 沖縄 2022 7.0 by @isanasan_ 21

Slide 22

Slide 22 text

Nullable Types Void Return Type PHP Conf 沖縄 2022 7.1 by @isanasan_ 22

Slide 23

Slide 23 text

Typed Property PHP Conf 沖縄 2022 7.4 by @isanasan_ 23

Slide 24

Slide 24 text

Union Types PHP Conf 沖縄 2022 8.0 by @isanasan_ 24

Slide 25

Slide 25 text

Pure intersection type Enumerations noreturn type PHP Conf 沖縄 2022 8.1 by @isanasan_ 25

Slide 26

Slide 26 text

はい PHP Conf 沖縄 2022 by @isanasan_ 26

Slide 27

Slide 27 text

最近PHPの型が注目されている 最近静的解析が注目されている PHPの型の表現力が序々に高まっている PHP Conf 沖縄 2022 by @isanasan_ 27

Slide 28

Slide 28 text

PHP Conf 沖縄 2022 だがちょっと待って欲しい by @isanasan_ 28

Slide 29

Slide 29 text

PHP Conf 沖縄 2022 PHPは弱い動的型付け言語 by @isanasan_ 29

Slide 30

Slide 30 text

型は実行時に決定される 型は文脈に応じて暗黙的に変換される PHP Conf 沖縄 2022 PHPは弱い動的型付け言語 by @isanasan_ 30

Slide 31

Slide 31 text

要するに PHP Conf 沖縄 2022 by @isanasan_ 31

Slide 32

Slide 32 text

PHP Conf 沖縄 2022 型を書かなくても動く by @isanasan_ 32

Slide 33

Slide 33 text

PHP Conf 沖縄 2022 わざわざ型書いて静的解析ナンデ?? by @isanasan_ 33

Slide 34

Slide 34 text

今あらためて考える PHPに型定義をする理由 PHP Conf 沖縄 2022 by @isanasan_ 34

Slide 35

Slide 35 text

今あらためて考える PHPに型定義(静的解析)をする理由 PHP Conf 沖縄 2022 by @isanasan_ 35

Slide 36

Slide 36 text

PHP Conf 沖縄 2022 3つの観点 by @isanasan_ 36

Slide 37

Slide 37 text

フィードバックサイクル コーディングの生産性 コードのメンテナンス性 PHP Conf 沖縄 2022 3つの観点 by @isanasan_ 37

Slide 38

Slide 38 text

その前に PHP Conf 沖縄 2022 by @isanasan_ 38

Slide 39

Slide 39 text

PHP Conf 沖縄 2022 静的解析とは by @isanasan_ 39

Slide 40

Slide 40 text

コードを実行せずに問題点等を検出すること コードを実行しないため高速 ツールを導入するだけで実行できる 型情報を扱うものについて話します PHP Conf 沖縄 2022 静的解析とは by @isanasan_ 40

Slide 41

Slide 41 text

PHP Conf 沖縄 2022 フィードバックサイクル by @isanasan_ 41

Slide 42

Slide 42 text

PHP Conf 沖縄 2022 不具合の発見が早いほど修正は低コスト https://www.luxoft-training.com/news/7-principles-of-testing-part-2/ 42

Slide 43

Slide 43 text

PHP Conf 沖縄 2022 バグは早く見つけたい by @isanasan_ 43

Slide 44

Slide 44 text

再掲 PHP Conf 沖縄 2022 by @isanasan_ 44

Slide 45

Slide 45 text

コードを実行せずに問題点等を検出すること コードを実行しないため高速 ツールを導入するだけで実行できる 型情報を扱うものについて話します PHP Conf 沖縄 2022 静的解析とは by @isanasan_ 45

Slide 46

Slide 46 text

UTより実行・導入が低コスト UTより早いフィードバックが得られる UTより修正が容易 PHP Conf 沖縄 2022 つまり by @isanasan_ 46

Slide 47

Slide 47 text

PHP Conf 沖縄 2022 コーディングの生産性 by @isanasan_ 47

Slide 48

Slide 48 text

PHP Conf 沖縄 2022 エディタによるサポートを受けられる by @isanasan_ 48

Slide 49

Slide 49 text

定義ジャンプ ホバー表示 補完 インスペクション PHP Conf 沖縄 2022 エディタによるサポートを受けられる by @isanasan_ 49

Slide 50

Slide 50 text

PHP Conf 沖縄 2022 コードのメンテナンス性 by @isanasan_ 50

Slide 51

Slide 51 text

PHP Conf 沖縄 2022 メンテナンス性 is 何 by @isanasan_ 51

Slide 52

Slide 52 text

SQuaRE(JIS X 25010) PHP Conf 沖縄 2022 メンテナンス性 is 何 by @isanasan_ 52

Slide 53

Slide 53 text

PHP Conf 沖縄 2022 メンテナンス性とは https://www.ipa.go.jp/sec/reports/20150331_1.html 53

Slide 54

Slide 54 text

モジュール性(modularity) 再利用性(reusability) 解析性(analysability) 修正性(modifiability) 試験性(testability) PHP Conf 沖縄 2022 メンテナンス性とは by @isanasan_ 54

Slide 55

Slide 55 text

モジュール性(modularity) 再利用性(reusability) 解析性(analysability) 修正性(modifiability) 試験性(testability) PHP Conf 沖縄 2022 メンテナンス性とは by @isanasan_ 55

Slide 56

Slide 56 text

PHP Conf 沖縄 2022 解析性(analysability) ≒ 理解容易性 by @isanasan_ 56

Slide 57

Slide 57 text

型定義有 > 型定義無 PHP Conf 沖縄 2022 解析性(analysability) ≒ 理解容易性 by @isanasan_ 57

Slide 58

Slide 58 text

PHP Conf 沖縄 2022 解析性(analysability) ≒ 理解容易性 by @isanasan_ 58

Slide 59

Slide 59 text

PHP Conf 沖縄 2022 解析性(analysability) ≒ 理解容易性 by @isanasan_ 59

Slide 60

Slide 60 text

PHP Conf 沖縄 2022 リファクタリング by @isanasan_ 60

Slide 61

Slide 61 text

sedコマンドはつらい PHP Conf 沖縄 2022 リファクタリング by @isanasan_ 61

Slide 62

Slide 62 text

IDEやエディタによるリファクタリング Rectorによるリファクタリング PHP Conf 沖縄 2022 リファクタリング by @isanasan_ 62

Slide 63

Slide 63 text

PHP Conf 沖縄 2022 別言語への移植 by @isanasan_ 63

Slide 64

Slide 64 text

Scalaに移植するゾイ 型が分からないから移植しようがないゾイ PHP Conf 沖縄 2022 別言語への移植 by @isanasan_ 64

Slide 65

Slide 65 text

PHP Conf 沖縄 2022 修正性(modifiability) by @isanasan_ 65

Slide 66

Slide 66 text

PHP Conf 沖縄 2022 修正性(modifiability) by @isanasan_ 66

Slide 67

Slide 67 text

バグの早期発見に役立つ エディタの便利機機が使える 解析性と修正性が向上する PHP Conf 沖縄 2022 まとめ by @isanasan_ 67

Slide 68

Slide 68 text

組織にテストを書く文化を根付かせる戦略と戦術(2020秋版) PHPStanで始めるPHPのための静的解析 エディタ中立なPHP開発環環の現在 アジリティを支える品質特性 PHP Conf 沖縄 2022 参考文献 by @isanasan_ 68