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
grapheme_strrev関数が採択されました(あと雑感)
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
てきめん tekimen
PRO
February 24, 2026
Programming
270
1
Share
grapheme_strrev関数が採択されました(あと雑感)
てきめん tekimen
PRO
February 24, 2026
More Decks by てきめん tekimen
See All by てきめん tekimen
Limit of code point for grapheme cluster in programming language side.
youkidearitai
PRO
0
66
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
2
3.3k
PHP 8.5の裏話
youkidearitai
PRO
0
130
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
290
PHP Internals わいわい #3 mb_*関数を作ってみよう
youkidearitai
PRO
0
150
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
120
PHP Internals わいわい #1 の資料
youkidearitai
PRO
1
1.6k
mb_trim関数を作りました
youkidearitai
PRO
1
1.4k
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
1.1k
Other Decks in Programming
See All in Programming
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
150
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
300
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
1.1k
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
870
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
270
의존성 주입과 모듈화
fornewid
0
150
Oxlintとeslint-plugin-react-hooks 明日から始められそう?
t6adev
0
290
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
220
PicoRuby for IoT: Connecting to the Cloud with MQTT
yuuu
2
680
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
350
検索設計から 推論設計への重心移動と Recall-First Retrieval
po3rin
4
1.2k
Server-Side Kotlin LT大会 vol.18 [Kotlin-lspの最新情報と Neovimのlsp設定例]
yasunori0418
1
190
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6.1k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
520
Automating Front-end Workflow
addyosmani
1370
200k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
120
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
Amusing Abliteration
ianozsvald
1
160
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
170
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
170
Transcript
grapheme_strrev作っ た、あと雑感 😴
自己紹介 てきめん • https://tekitoh-memdhoi.info • @youkidearitai • https://github.com/youkidearit ai •
PHP のmbstringコミッター オレ
grapheme_strrev関数 • 2月20日に採択されました • 書記素クラスターごとにstrrevする関数です – GitHubでmb_strrevを作ってた人が多数だったことと、複数コー ドポイントに対応させないと今どきじゃないため – 絵文字や異体字セレクタがstrrevできます
– RtoL言語(アラビア語など)でもちゃんと動きます • レビュー待ちです
書記素クラスター • ちょっと、書記素クラスターについて思うところがあ る • 書記素クラスターにコードポイントの上限はある? – https://unicode-org.atlassian.net/browse/ICU-233 02 –
ICUで聞いたところ「ない」とのこと
書記素クラスターの実験:emoji bomb • 見た目は 👨👦👦 • 実際は10000000回繰り返し、ZWJ(U+200D)を挟むことで「1書記素クラス ター」としてカウントさせる • 結果として200MB超の1書記素クラスターの
が誕生 👨👦👦 – 仮に絵文字爆弾 とでも名付けましょうか、 💣️/ Bomb Emoji 💣️/ があるけど • なお、スクリーンに表示するだけでクラッシュするため出せない
書記素クラスターにコードポイントの上限 がないのが何が悪いのか • 大量のコードポイント、1書記素クラスターができて しまう – 極めて危険で、DoSなどを考慮しないとまずい – 書記素クラスターが無限のコードポイントを受け入れら れても、コンピューターは有限なのでまずい
ということで提案してみる • 1書記素クラスターにつきコードポイントの上限を設定し、バ リデーションする関数の提案をPHP Internalにてしてみてる • ICUではないのでクローズ、ではプログラミング言語レイヤー で何とかするしか無いのでは感 • なお、もし採択、搭載まで行ってしまうと多分プログラミング
言語では初の機能になる – みんなそんな書記素クラスター興味ないの?
まとめ • grapheme_strrevが採択された • Unicode(.org)は書記素クラスターがあれば万能だと多分 思い込んでるのでは – それはたしかにそうなんだが、コンピューターなどは有限なので 狂う –
多分違うので正していく – PHPの「歯ブラシ」らしさを追求していく