Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHP 8.5の裏話
Search
てきめん tekimen
PRO
November 26, 2025
Programming
160
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
830
ChatGPTを使ってRaspberry Pi Picoの処理系を書いた
youkidearitai
PRO
0
95
PHP Internals わいわい #3 PIEを使ってみよう
youkidearitai
PRO
0
72
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
350
Limit of code point for grapheme cluster in programming language side.
youkidearitai
PRO
0
95
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
2
3.6k
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
350
PHP Internals わいわい #3 mb_*関数を作ってみよう
youkidearitai
PRO
0
170
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
130
Other Decks in Programming
See All in Programming
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.2k
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.4k
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
0
550
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
290
テーブルをDELETEした
yuzneri
0
130
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.5k
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
9
3.8k
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
900
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
490
React本体のコードリーディング
high_g_engineer
0
110
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
260
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
The Spectacular Lies of Maps
axbom
PRO
1
880
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
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などで探していき、見つ かったアイデアを公式にいれるべきかを探求したいで
す
おわり