Skip to content

PHP勉強会 in 新潟!

公開日:

新潟県新潟市中央区明石スペースコンフォートで開催された『PHP勉強会in新潟!』でライトニングトーク(5分)として発表しました。

Download PDF

スライドテキスト

Page 1

PHP勉強会 in 新潟!

PHP Study in Niigata!

pixiv Inc.
USAMI Kenta

PHP勉強会in新潟!

2024-06-07 #niigata _php

Page 2

お前誰よ

  • うさみけんた (@tadsan) / Zonu.EXE / にゃんだーすわん
  • ピクシブ株式会社 pixiv事業本部 Webエンジニアリングチーム PHPer
    • 2012年末から現職、APIとかCIとかいろいろなところを見つめてきました
    • 最近はピクシブ百科事典(dic.pixiv.net)も開発しています
  • Emacs PHP Modeを開発しています (2017年-)
  • プログラミング言語にちょっとこだわりのある素人 (spcamp2010)

Page 3

PHPerKaigi

Page 4

PHPerKaigi

Page 5

PHP Lovers Meetup

Page 6

PHPのとりとめのない 話をするのが好きです

Page 7

マニアックな話に
寄りがち

Page 8

PHPを使うなら
誰も避けられないもの

Page 9

ファンクション 関数

Page 10

標準関数は言語の魂

Page 11

Ruby
関数?そんなものはない

Page 12

Python
公開APIと型演算

Page 13

PHP
?????

Page 14

PHPの標準関数の数は いくつあるでしょうか

Page 15

ヒント:
Python 3.10は71個 (型を除くと56個くらい)

Page 16

答え:
わかんない

Page 17

Page 18

???

Page 19

関数は
どこからくるの?

Page 20

関数定義を探しにいこう

Page 21

https://github.com/php/php-src

Page 22

C言語で定義されています

Page 23

C言語で定義されています

ここを抜き出せば
関数一覧を作れる?

Page 24

rg -g '*.c' -o

'^(?:ZEND|PHP)_FUNCTION\(.+\)' |

cut -d: -f2 | sort -u | uniq | wc -l

Page 25

まじで???

Page 26

PHPマニュアルを
見にいこう

Page 27

PHPには関数がいっぱい

Page 28

PHPには関数がいっぱい

これ全部読むの…?

Page 29

実は関数一覧のJSONがある

Page 30

curl

http://doc.php.net/downloads/json/php_manual_en.json
| jq-rs '[ .[] | keys ] | flatten |

unique | .[]' | grep -v :: | wc -l

Page 31

増えたんですが…

Page 32

PHPには関数がいっぱい

ここから辿る

Page 33

PHPには関数がいっぱい

われわれの知る
標準関数はこのへん

Page 34

おなじみの関数がいっぱい

Page 35

拡張モジュール(Extension)とは

  • PHPにコンパイル時または起動時にロードされる機能単位
    • PHPスクリプトではなく動的モジュール(*.so, *.dll)で提供される
  • コンパイル時に有効化/無効化するか、php.iniに記述する必要あり
    • オンプレで実行していたりするとシステム管理者の作業が必要な場合あり
      • レンタルサーバー(非VPS)では利用者が設定できないかもしれない
  • ApacheやPHP-FPMでは設定変更後に再起動することで反映される

Page 36

拡張モジュールの種類

  • コア拡張 → PHPの標準機能として組み込まれており無効化できない
  • バンドル拡張 → PHPに同梱されていてコンパイル時に有効化できる
  • 外部拡張 → PHP以外のライブラリとリンクすることで有効になる機能
  • PECL拡張 → pecl.php.net でインストールできるモジュール
  • その他(野良) → コードからphpizeしてcon(cid:230)gureしてmake install

Page 37

Docker

(PHP Official Image)

mbstringはデフォルト有効

Page 38

Debianではモジュールごとのapt

よく使われるモジュールも 明示的にインストールが必要

Page 39

WindowsではDLL同梱

Page 40

php.ini

Page 41

Windowsの場合のphp.ini

必要なところだけ ; を消す

Page 42

話を戻しましょう

Page 43

狭義の標準関数=
コア拡張に属する関数

Page 44

取材班は関数の数を 数えるためJSONに 向き合うことにした

Page 45

php_manual_en.json

Page 46

区切り文字がない関数名

Page 47

ていねいな正規表現でキャッチ

Page 48

スクリプトはここにあります

Page 49

ていねいな正規表現調べ

Page 50

780個の関数を
覚えられるか

Page 51

😇

Page 52

数が多すぎるので
馴染みのない関数を 調べる方が筋がいい

Page 53

どうやって関数を探す?

Page 54

関数名 検索

php [ ]

Page 55

🙅

Page 56

php.net/json_encode

Page 57

php.net/DateTime

Page 58

php.net/$_SERVER

Page 59

特定の関数から
追っていく

Page 60

たとえば
配列を処理したい

Page 61

適当な配列関数にアクセス

ここから辿る

Page 62

日本語説明付き一覧がある

Page 63

言語を横断して関数に
使われがちな語彙も
身につけられる

Page 64

好きな関数発表ドラゴンが
好きな関数を発表します

Favorite-function-announcing dragon

pixiv Inc.
USAMI Kenta

PHP勉強会in新潟!

2024-06-07 #niigata _php

Page 65

count()

Page 66

usort()

Page 67

in_array()

Page 68

指定したキーを 値で埋めるやつ
array_fill_keys()

Page 69

正式名称がわからない関数も

Page 70

好き 好き 大好き

Page 71

strlen()

Page 72

explode()

Page 73

sprintf()

Page 74

編集距離を 数えるやつ

levenshtein()

Page 75

正式名称がわからない関数も

Page 76

好き 好き 大好き

Page 77

好きな関数がまた出てきたそのときは

Page 78

発表したい

Page 79

発表したい

Page 80

…………。

Page 81

みなさんに
PHP 8.4最新関数を
お伝えしよう

Page 82

日本語説明付き一覧がある