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

2009

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

3820

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してconfigureして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

ていねいな正規表現調べ

780

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

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