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
てきめん tekimen
PRO
February 24, 2026
Programming
310
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
220
ChatGPTを使ってRaspberry Pi Picoの処理系を書いた
youkidearitai
PRO
0
77
PHP Internals わいわい #3 PIEを使ってみよう
youkidearitai
PRO
0
55
Limit of code point for grapheme cluster in programming language side.
youkidearitai
PRO
0
81
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
2
3.5k
PHP 8.5の裏話
youkidearitai
PRO
0
150
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
320
PHP Internals わいわい #3 mb_*関数を作ってみよう
youkidearitai
PRO
0
160
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
120
Other Decks in Programming
See All in Programming
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
1.7k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
360
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
170
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
460
Swiftのレキシカルスコープ管理
kntkymt
0
210
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
150
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
3Dシーンの圧縮
fadis
1
670
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
200
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
4.7k
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
310
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
550
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Faster Mobile Websites
deanohume
310
31k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
How to make the Groovebox
asonas
2
2.2k
Google's AI Overviews - The New Search
badams
0
1k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
sira's awesome portfolio website redesign presentation
elsirapls
0
270
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
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の「歯ブラシ」らしさを追求していく