Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PHP 8.5の裏話
Search
てきめん tekimen
PRO
November 26, 2025
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHP 8.5の裏話
てきめん tekimen
PRO
November 26, 2025
More Decks by てきめん tekimen
See All by てきめん tekimen
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
1k
ChatGPTを使ってRaspberry Pi Picoの処理系を書いた
youkidearitai
PRO
0
120
PHP Internals わいわい #3 PIEを使ってみよう
youkidearitai
PRO
0
130
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
450
Limit of code point for grapheme cluster in programming language side.
youkidearitai
PRO
0
130
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
2
3.9k
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
510
PHP Internals わいわい #3 mb_*関数を作ってみよう
youkidearitai
PRO
0
180
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
150
Other Decks in Programming
See All in Programming
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.6k
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
4k
ActionController meets Protocol Buffers
sorah
0
580
phperだってパンチカードでコーディングしたい
o0h
PRO
0
360
Seven New Principles of Software Engineering
yegor256
0
110
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
1
310
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
530
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
AmebaブログはKMPから卒業します
kmars0605
0
210
Verilogで学ぶCPU自作入門
uyuki234
8
4.2k
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
190
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
Automating Front-end Workflow
addyosmani
1369
210k
It's Worth the Effort
3n
188
29k
Side Projects
sachag
456
43k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Transcript
PHP 8.5の裏話
自己紹介 てきめん • https://tekitoh-memdhoi.info • @youkidearitai • https://www.youtube.com/use r/tekitohmrp •
https://www.nicovideo.jp/user /2957748 オレ
アジェンダ • ぶっちゃけネガティブめなPHP Internalsの話題 – DmitryさんZend退職だったり • PHP 8.5の開発で感じたこと –
てきめん視点での報告 スライドは急造みがあるのでゆっくり喋ります
PHP 8.5リリース 🎉 • 1年待ったうれしい • 大変だったなあと思いました
Dmitryさん、Zendやめる • https://externals.io/message/126804#126804 • PHPのJITを開発してたDmitryさん、Zendを退職 – 2025-03-17での発表 – これ以降、Zend Engineのレビュー中心になってる印象
Onigurumaの開発終了 • Onigurumaが開発終了 – https://github.com/kkos/oniguruma/ • This project ended on
April 24, 2025. • PHPではmbregex(mb_eregなど)で使っている – OnigurumaはVSCodeなどでユースケースがありなかなか止められない – 膠着状態で板挟み状態 • mbstringのAlexさんはOnigurumaをメンテしてでも維持したい、PHP Internalsは PCREでいいのではないかという意見 • 解決策が見当たらない
mb_levenshtein関数の否決 • mbstringでのレーベンシュタイン距離を求める関数のRFC が全会一致で否決 – https://wiki.php.net/rfc/mb_levenshtein • mbstringではUnicodeコードポイント単位でわかるので、プ ログラマーが欲しい時があると主張したのだけど、 grapheme関数のほうがほしいとのこと
• mbstring関数は時代遅れなのかというとそうでもないのだ けど…なかなか伝わらない
grapheme_levenshtein関数の実装 • 書記素クラスター単位というか、絵文字とかでレー ベンシュタイン距離を測ることができます – 何文字違うのかがわかりますね
grapheme関数にロケールを追加 • grapheme_strpos、grapheme_stripos、grapheme_strrpos、 grapheme_strripos、grapheme_strstr、grapheme_stristr、 grapheme_levenshtein関数にロケールを追加 – grapheme_levenshtein関数の修正RFCでもある • トルコ語のİとiとをマッチさせたり(tr_TR)できます •
ロケールというか、LDMLベースで決められます – ちょっと複雑 https://www.unicode.org/reports/tr35/ – 日本語の異体字でも使えます 邊とか – 複雑にしてすいません感がある
grapheme関数にロケールを追加 • 議論して2週間経って特に誰も何も言わなかったので 投票したらNOを突きつけられる – 加えてなんか色々言ってきた – えーそれは議論のときに言ってよと抗議した – ちょっとなーと思った部分だったかな
– 再投票して可決 • なんだかなあ…
LDMLのサンプル • 邊の異体字を判定するのにLDMLの ‘u-ks-identic’ を使います • ドイツ語のßとssとをマッチさせるのに’u-ks-level1’が使えます • https://www.unicode.org/reports/tr35/tr35-collation.html# Combining_Rules
PHP 8.5の開発で感じたこと • もうmbstring関数は増えないかもしれない – ただ、コードポイント単位のプログラミングをしたいというニーズはまだあるはずなので主張はしていきたいが – Unicodeのネイティブ世代として要求される知識量は増えたと感じている • CJKの事情を伝えるのに遠く感じる
– Onigurumaでも感じたけど簡素化したい感は感じる – Unicodeでいいと思っていそうな割にCJKの事情はわかってなさそうなのでちゃんと伝えないといけないと感じる • CJKだけじゃなくアラビア語などRtoLの言語でもどういう事情なのかとかは知りたいし • Unicodeのプログラミングは複雑である – LDMLをはじめ、ちゃんと勉強しないと文字の処理がうまくいかないことがある – 特に異体字はちゃんとしないと、自分の名前が表示されないというユーザーからの要請に答えられない • これは名前というアイデンティティの問題なので、ちゃんとしてほしい。する土壌は整えている • もっとアジア圏からPHPへの意見を出してほしい感はある
PHP Internalsで思うこと • JITは一段落した感じがします – 特に開発者のDmitryさんがZendを抜けたのは大きい • 色々あったのでしょう • 今は非同期処理がアツい気がします
– ここらへんはノータッチですが
2026年の抱負 • これから、PHPのUnicode実装はどうするべきか、他プ ログラミング言語の参考を勉強したいです • CJKの立場を伝えるために、海外のユーザーのコミュ ニケーションを増やしたいです • PHPのユースケースをGitHubなどで探していき、見つ かったアイデアを公式にいれるべきかを探求したいで
す
おわり