Slide 1

Slide 1 text

PHPer 宇都宮大学 工学部 3年 うすゆき

Slide 2

Slide 2 text

2022/7/18 2/66 基本情報 CV:xxxx PHPer 宇都宮大学生 VTuberにハマってます。 usuyuki26 Usuyuki Usuyuki usuyuki usuyuki

Slide 3

Slide 3 text

2022/7/18 3/66 基本情報 サポーターズ関連イベントに出没 1on1イベント 技育博 技育CAMP ※個人情報のため削除

Slide 4

Slide 4 text

2022/7/18 5/66 PHP使ったことある方✋

Slide 5

Slide 5 text

2022/7/18 6/66 軽い内容なので 軽い気持ちで、聞いてください✌

Slide 6

Slide 6 text

2022/7/18 7/66 話すこと 【1.プロローグ】 PHPが使えますよと就活に行ったら 【2.言語の特徴】 PHPが揶揄されてた理由 及び、最近のPHPの変化 【3.PHPのモダンな使い方】 静的解析、オートローディング 【4.エピローグ】 PHPは人生

Slide 7

Slide 7 text

2022/7/18 8/66 話すこと 【1.プロローグ】 PHPが使えますよと就活に行ったら 【2.言語の特徴】 PHPが揶揄されてた理由 及び、最近のPHPの変化 【3.PHPのモダンな使い方】 静的解析、オートローディング 【4.エピローグ】 PHPは人生

Slide 8

Slide 8 text

2022/7/18 9/66 PHPが使えますよと就活に行ったら

Slide 9

Slide 9 text

2022/7/18 10/66 4~6月の某所 一番使える言語はPHPです! えっ……🥴

Slide 10

Slide 10 text

2022/7/18 11/66 4~6月の某所 一番使える言語はPHPです! 初めて見ましたっ……

Slide 11

Slide 11 text

2022/7/18 12/66 ネットでのPHPの評判も……

Slide 12

Slide 12 text

2022/7/18 13/66 ネットでのPHPの評判も……

Slide 13

Slide 13 text

2022/7/18 14/66

Slide 14

Slide 14 text

2022/7/18 15/66 話すこと 【1.プロローグ】 PHPが使えますよと就活に行ったら 【2.言語の特徴】 PHPが揶揄されてた理由 及び、最近のPHPの変化 【3.PHPのモダンな使い方】 静的解析、暗黙的型変換の禁止 【4.エピローグ】 PHPは人生

Slide 15

Slide 15 text

2022/7/18 16/66 言語の特徴

Slide 16

Slide 16 text

2022/7/18 17/66 PHPってどんな言語? • • • • • • • 1994年誕生のインタプリタ型言語

Slide 17

Slide 17 text

2022/7/18 18/66 今年のPHPカンファレンス PHPerKaigi2022のスポンサー様 https://phperkaigi.jp/2022 ※著作権の都合で削除

Slide 18

Slide 18 text

2022/7/18 19/66 こんなに愛されてるのにっ……

Slide 19

Slide 19 text

2022/7/18 20/66 PHPが揶揄されてた理由

Slide 20

Slide 20 text

2022/7/18 21/66 ちょっとあれなところ 2 暗黙的型変換の恐ろしさ PHP, お前だったのか. いつも型を変えたのは… 未定義変数を使っても許される”やさしい”世界 3 エラーがゆるい 1 昔は速度が遅かった PHP7系からのzval構造体の変化で高速に

Slide 21

Slide 21 text

2022/7/18 22/66 ちょっとあれなところ 1 昔は速度が遅かった PHP7系からのzval構造体の変化で高速に Farhan Ayub.“PHP 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, and 8.0: Performance Benchmarks for WordPress”. Cloudways.2022/1/19. https://www.cloudways.com/blog/wordpress-performance-on-php-versions/ ,(2022/7/15) ※著作権の都合で削除

Slide 22

Slide 22 text

2022/7/18 24/66 ちょっとあれなところ 1 昔は速度が遅かった PHP7系からのzval構造体の変化で高速に CAさんのゲームでの採用例 メモリ上に全てのアプリケーションを乗せる Laravel Octaneを使用 →さらに数倍の高速化が見込まれる…… PHPアプリでワンバイナリ、非同期処理、並行処理、WebSocket… 白井 英.“スマホゲーム業界におけるPHPの歴史とLaravel Octaneで広がるこれからのPHP”. Cloudways.2022/1/1. https://developers.cyberagent.co.jp/blog/archives/35832/,(2022/7/15)

Slide 23

Slide 23 text

2022/7/18 25/66 ちょっとあれなところ 1 昔は速度が遅かった PHP7系からのzval構造体の変化で高速に。 菊島達也.“『ウマ娘 プリティーダービー』のローンチを支えたサーバーアプリケーションの最適化ノウハウ”. PHP Conference Japan 2022. 2022/7/15. https://fortee.jp/phpcon-2022/proposal/e6a14473-a415-4945-b9c9-e8182b09b480, 2022/7/16) まだプロポーザル段階だけど ウマ娘に関するPHPの話が 今年のPHP Conferenceで明かされるかも……

Slide 24

Slide 24 text

2022/7/18 26/66 ちょっとあれなところ 1 昔は速度が遅かった PHP7系からのzval構造体の変化で高速に。 大手の大人気現代ゲームでも まだまだ使われているよ!

Slide 25

Slide 25 text

2022/7/18 27/66 ちょっとあれなところ 1 昔は速度が遅かった PHP7系からのzval構造体の変化で高速に。 速度は大丈夫そう

Slide 26

Slide 26 text

2022/7/18 28/66 ちょっとあれなところ 2 暗黙的型変換の恐ろしさ PHP, お前だったのか. いつも型を変えたのは… PHPも型を書ける!(PHP7.0~) PHP5.0から段階的に導入されて来ました

Slide 27

Slide 27 text

2022/7/18 29/66 ちょっとあれなところ 2 暗黙的型変換の恐ろしさ PHP, お前だったのか. いつも型を変えたのは… PHP8.0~ Union型だってできちゃう。 Golangですらこんなことできないよ……

Slide 28

Slide 28 text

2022/7/18 30/66 ちょっとあれなところ 2 暗黙的型変換の恐ろしさ PHP, お前だったのか. いつも型を変えたのは… でも、~PHP7.4は暗黙的型変換がつよーく効きます。 文字列が勝手にint型に変換されて、文字列先端の数字3になる

Slide 29

Slide 29 text

2022/7/18 31/66 ちょっとあれなところ 2 暗黙的型変換の恐ろしさ PHP, お前だったのか. いつも型を変えたのは… 暗黙的型変換を禁止しちゃう(PHP7.0~) C言語の#includeレベルの常套句

Slide 30

Slide 30 text

2022/7/18 32/66 ちょっとあれなところ 2 暗黙的型変換の恐ろしさ PHP, お前だったのか. いつも型を変えたのは… ちなみに比較でも同様のことが起きます。(~PHP7.4) 文字列が勝手にint型に変換されて、最初に入っていた数字2で比較される

Slide 31

Slide 31 text

2022/7/18 33/66 ちょっとあれなところ 2 暗黙的型変換の恐ろしさ PHP, お前だったのか. いつも型を変えたのは… ==でなく、===を使うと厳密にチェックできる。

Slide 32

Slide 32 text

2022/7/18 34/66 ちょっとあれなところ 2 暗黙的型変換の恐ろしさ PHP, お前だったのか. いつも型を変えたのは… もしくはPHP8系に移行する。 PHPの各バージョンでの実行結果が見れる https://3v4l.org

Slide 33

Slide 33 text

2022/7/18 35/66 ちょっとあれなところ PHPなら…… 未定義変数を使っても許される”やさしい”世界 3 エラーがゆるい この出力結果は……

Slide 34

Slide 34 text

2022/7/18 36/66 ちょっとあれなところ 未定義変数を使っても異常終了しない! ~PHP7.4:Notice PHP8.0~:Warning 未定義変数を使っても許される”やさしい”世界 3 エラーがゆるい

Slide 35

Slide 35 text

2022/7/18 37/66 ちょっとあれなところ PHPのエラー種別 未定義変数を使っても許される”やさしい”世界 3 エラーがゆるい 1. Fatal error 2. Parse error 3. Warning 4. Notice ↑異常終了 ↓正常終了

Slide 36

Slide 36 text

2022/7/18 38/66 ちょっとあれなところ 例えばGolangなら 未定義変数を使っても許される”やさしい”世界 3 エラーがゆるい

Slide 37

Slide 37 text

2022/7/18 39/66 ちょっとあれなところ 例えばGolangなら 未定義変数を使っても許される”やさしい”世界 3 エラーがゆるい tekitou declared but not used

Slide 38

Slide 38 text

2022/7/18 40/66 ちょっとあれなところ Golangって未定義どころか、使ってない変数の存在で 異常終了してくれるのかよ…… 未定義変数を使っても許される”やさしい”世界 3 エラーがゆるい

Slide 39

Slide 39 text

2022/7/18 41/66 ちょっとあれなところ PHPでは, 静的解析をしようね. (次の章で説明) 未定義変数を使っても許される”やさしい”世界 3 エラーがゆるい

Slide 40

Slide 40 text

2022/7/18 42/66 話すこと 【1.プロローグ】 PHPが使えますよと就活に行ったら 【2.言語の特徴】 PHPが揶揄されてた理由 及び、最近のPHPの変化 【3.PHPのモダンな使い方】 静的解析、オートローディング 【4.エピローグ】 PHPは人生

Slide 41

Slide 41 text

2022/7/18 43/66 PHPのモダンな使い方

Slide 42

Slide 42 text

2022/7/18 44/66 令和最新版のPHP 2 PHP8系への以降 モダン言語よりも一方上手に立つ declare(strict_type=1)を無心にかく 3 暗黙的型変換の禁止 1 型を書く 無限の可能性を持つarrayとかあるけど…… 先に述べた通り……

Slide 43

Slide 43 text

2022/7/18 45/66 周辺ツールがつよいっ!

Slide 44

Slide 44 text

2022/7/18 46/66 令和最新版のPHP PHPStanで静的解析 モダン言語みたいなご指摘をいただける俺たちの師匠 Composerでオートローディング 頑張れPHPer, 名前空間を活用した責務分割できるエンジニアになるんだ. PHPUnitでテスト より安全なコードに. そしてDIへ.

Slide 45

Slide 45 text

2022/7/18 47/66 令和最新版のPHP PHPStanで静的解析 モダン言語みたいなご指摘をいただける俺たちの師匠 https://phpstan.org/try 未定義変数, メソッドを指摘してくれる!

Slide 46

Slide 46 text

2022/7/18 48/66 令和最新版のPHP PHPStanで静的解析 モダン言語みたいなご指摘をいただける俺たちの師匠 https://phpstan.org/try 絶対trueな条件分岐とかも.

Slide 47

Slide 47 text

2022/7/18 49/66 令和最新版のPHP PHPStanで静的解析 モダン言語みたいなご指摘をいただける俺たちの師匠 型周りも強力に見てくれる!

Slide 48

Slide 48 text

2022/7/18 50/66 令和最新版のPHP PHPStanで静的解析 モダン言語みたいなご指摘をいただける俺たちの師匠 配列の中身まで指定できる!

Slide 49

Slide 49 text

2022/7/18 51/66 令和最新版のPHP PHPStanで静的解析 モダン言語みたいなご指摘をいただける俺たちの師匠 型変数とか,型の条件分岐とかもできる

Slide 50

Slide 50 text

2022/7/18 52/66 令和最新版のPHP PHPStanで静的解析 モダン言語みたいなご指摘をいただける俺たちの師匠 何が嬉しいの? 1. 実行すること無く問題を発見! 2. めちゃ強力な型チェック

Slide 51

Slide 51 text

2022/7/18 53/66 令和最新版のPHP Composerでオートローディング 頑張れPHPer, 名前空間を活用した責務分割できるエンジニアになるんだ. PHPUnitでテスト より安全なコードに. そしてDIへ. テストを書きましょう……

Slide 52

Slide 52 text

2022/7/18 54/66 令和最新版のPHP PHPUnitでテスト より安全なコードに. そしてDIへ. テストを書くために…… 1. スーパーグローバル変数を避ける 2. DIする 3. 抽象に依存する

Slide 53

Slide 53 text

2022/7/18 55/66 令和最新版のPHP PHPUnitでテスト より安全なコードに. そしてDIへ. こういうのをイミュータブルにして引数として引っ張ってきたり。

Slide 54

Slide 54 text

2022/7/18 56/66 令和最新版のPHP PHPUnitでテスト より安全なコードに. そしてDIへ. DIしたり

Slide 55

Slide 55 text

2022/7/18 57/66 令和最新版のPHP PHPUnitでテスト より安全なコードに. そしてDIへ. 抽象に依存することで、単体テストを実現したり。

Slide 56

Slide 56 text

2022/7/18 58/66 こういった工夫をして、 CIでぶん回せば 本番前に事故防止!

Slide 57

Slide 57 text

2022/7/18 59/66 話すこと 【1.プロローグ】 PHPが使えますよと就活に行ったら 【2.言語の特徴】 PHPが揶揄されてた理由 及び、最近のPHPの変化 【3.PHPのモダンな使い方】 静的解析、オートローディング 【4.エピローグ】 PHPは人生

Slide 58

Slide 58 text

2022/7/18 60/66 PHPは人生

Slide 59

Slide 59 text

2022/7/18 61/66 コンパイラに甘えないことで 得られたものがたくさんある。 ストックホルム症候群かも……

Slide 60

Slide 60 text

2022/7/18 62/66 PHPで綺麗に書きたいと思うだけで アーキテクチャを自然と意識! DIとか、抽象への依存とか……

Slide 61

Slide 61 text

2022/7/18 63/66 ゆりかごから墓場まで

Slide 62

Slide 62 text

2022/7/18 64/66 PHP is LIFE 2 大手でもノウハウで維持 2度の大量絶滅を生き延びた言語です. 先人がたくさんいる. 3 キレイなコードへの意識 1 初心者でも書きやすい 型なんて意識しなくても書けちゃう

Slide 63

Slide 63 text

2022/7/18 65/66 PHPは良い言語だけど 就活では強みにしにくい…… (内定ください……) さいごに

Slide 64

Slide 64 text

2022/7/18 66/66 ご清聴ありがとうございました! 以上, うすゆきがお届けしました!