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
grapheme_strrev関数が採択されました(あと雑感)
Search
てきめん tekimen
PRO
February 24, 2026
Programming
480
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
grapheme_strrev関数が採択されました(あと雑感)
てきめん tekimen
PRO
February 24, 2026
More Decks by てきめん tekimen
See All by てきめん tekimen
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
1.1k
ChatGPTを使ってRaspberry Pi Picoの処理系を書いた
youkidearitai
PRO
0
130
PHP Internals わいわい #3 PIEを使ってみよう
youkidearitai
PRO
0
150
Limit of code point for grapheme cluster in programming language side.
youkidearitai
PRO
0
140
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
2
4k
PHP 8.5の裏話
youkidearitai
PRO
0
190
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
520
PHP Internals わいわい #3 mb_*関数を作ってみよう
youkidearitai
PRO
0
190
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
150
Other Decks in Programming
See All in Programming
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
330
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
320
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.5k
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
2
250
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.5k
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
170
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
150
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
610
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.7k
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
1
150
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
130
Performance Optimization With LLMs
xleitix
0
240
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
Crafting Experiences
bethany
1
420
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
890
The Cost Of JavaScript in 2023
addyosmani
56
10k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
420
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Docker and Python
trallard
47
4.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Un-Boring Meetings
codingconduct
0
490
We Are The Robots
honzajavorek
0
430
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の「歯ブラシ」らしさを追求していく