Slide 1

Slide 1 text

0 #Garoon 開発 #完成度低いの歓迎LT大会 PHP 8.1で 大改修が入ったと噂の mbstringで 実際に遭遇した問題たち サイボウズ Garoon開発チーム ぱくとま(千葉 泰理)

Slide 2

Slide 2 text

1 #Garoon 開発 #完成度低いの歓迎LT大会 1 PHP 8.1使ってますか?

Slide 3

Slide 3 text

2 #Garoon 開発 #完成度低いの歓迎LT大会 2 PHP 8.0のEnd of Lifeは 2023/11/26 アップデートしましょう!

Slide 4

Slide 4 text

3 #Garoon 開発 #完成度低いの歓迎LT大会 3 - ぱくとま(千葉 泰理) - Twitter: @pakutoma - Garoon 開発チーム Yukimiチーム - PHPやライブラリの更新などを主にするチームです - 2022年度 新卒入社(あと一週間で2年目……!) 自己紹介

Slide 5

Slide 5 text

4 #Garoon 開発 #完成度低いの歓迎LT大会 4 - サイボウズ Garoon の PHP 8.1 移行のトラブル - mb_strcut() のバグに遭遇した - mb_detect_encoding() の仕様変更に巻き込まれた - 5分で話しきれないです - サイボウズで後日談LTをやります(宣伝) - 興味がある方はぜひ!!! 今日話すこと

Slide 6

Slide 6 text

5 #Garoon 開発 #完成度低いの歓迎LT大会 5 - mb_strcut(): 文字列を切り詰めてくれる! - Garoonではメールの文字列制限に利用 - 文字列が文字の途中で切れてしまうバグ - 「あaいb」 を切り詰めると、「あa?」に - 「い」の途中で文字列が切れてしまう - JISやISO-2022-JPで発生 トラブル1: mb_strcut() のバグ

Slide 7

Slide 7 text

6 #Garoon 開発 #完成度低いの歓迎LT大会 6 - 私が報告しました!!!!! (#9535) - 初めてissue報告しましたが、思ったより敷居が低かったです - GitHub上で完結出来るのもありがたかった - 素早く修正していただいた - リリースまでタイムラグがあるので、修正内容をパッチとして 取り込んで社内で検証しました バグへの対応

Slide 8

Slide 8 text

7 #Garoon 開発 #完成度低いの歓迎LT大会 7 - mb_detect_encoding(): エンコードの自動判定 - Garoonでは受信メールのエンコーディング判定に利用 - mb_detect_encoding()の仕様変更 - 1. エンコード判定時に引数の順序に従わなくなった - 2. 文字の出現頻度によって重み付けされるようになった - 人名用漢字が化けるようになった💀 トラブル2: mb_detect_encoding()

Slide 9

Slide 9 text

8 #Garoon 開発 #完成度低いの歓迎LT大会 8 - mb_check_encoding()などを利用して修正 - 検証時、mb_check_encoding()のバグを発見 - PHP 8.0でfalseと判定される文字列がtrueと判定される - バグ報告(#10648)したら修正にも関わることに - チェック関数を追加するPRを作成し、現在レビュー段階 - Alex Dowad氏やtekimenさんに大変お世話になってます - ISO-2022-JPとUTF-7の仕様に異常に詳しくなっていく 対応時にバグに遭遇

Slide 10

Slide 10 text

9 #Garoon 開発 #完成度低いの歓迎LT大会 9 - mbstringには大規模な変更が入っています - 修正されたバグもたくさん、新たなバグもたくさん - しっかり検証したほうが良さそうです - PHPのバグ報告・PRは敷居が低い - GitHubで完結するし、優しく対応してもらえる - コントリビュートしていくぞ! - 話しきれなかった分は後日談LTで話します! まとめ