$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPの新元号対応について / About the new era fixes of PHP ...
Search
sapi_kawahara
March 27, 2019
Education
1
1.2k
PHPの新元号対応について / About the new era fixes of PHP language
sapi_kawahara
March 27, 2019
Tweet
Share
More Decks by sapi_kawahara
See All by sapi_kawahara
コマンドラインを見直そう(1995年からタイムリープ)
sapi_kawahara
0
600
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
910
執筆テーマの決め方
sapi_kawahara
1
380
LTの禁じ手
sapi_kawahara
1
1.2k
||とorの違いは登壇して解決した
sapi_kawahara
0
360
Macintosh talk / Macintoshの話
sapi_kawahara
0
210
混合接種してみた / Mixed inoculation
sapi_kawahara
0
160
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
420
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
470
Other Decks in Education
See All in Education
【ZEPホスト用メタバース校舎操作ガイド】
ainischool
0
150
バケットポリシーの記述を誤りマネコンからS3バケットを操作できなくなりそうになった話
amarelo_n24
1
140
Use Cases and Course Review - Lecture 8 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.3k
✅ レポート採点基準 / How Your Reports Are Assessed
yasslab
PRO
0
150
CSS3 and Responsive Web Design - Lecture 5 - Web Technologies (1019888BNR)
signer
PRO
1
3k
XML and Related Technologies - Lecture 7 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
1111
cbtlibrary
0
240
SJRC 2526
cbtlibrary
0
160
HCI Research Methods - Lecture 7 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.2k
国際卓越研究大学計画|Science Tokyo(東京科学大学)
sciencetokyo
PRO
0
35k
令和エンジニアの学習法 〜 生成AIを使って挫折を回避する 〜
moriga_yuduru
0
170
核軍備撤廃に向けた次の大きな一歩─核兵器を先には使わないと核保有国が約束すること
hide2kano
0
190
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
250
A Tale of Four Properties
chriscoyier
162
23k
Chasing Engaging Ingredients in Design
codingconduct
0
74
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
140
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
57
37k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
400
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
85
Faster Mobile Websites
deanohume
310
31k
How to train your dragon (web standard)
notwaldorf
97
6.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
Utilizing Notion as your number one productivity tool
mfonobong
2
180
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Transcript
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) PHPの新元号対応について 第136回 PHP勉強会@東京 ㍻31年3月27日(水) 1
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 自己紹介 • さっぴー川原 @sapi_kawahara • 埼玉県川越市在中、五反田の中小企業で働いてます。 •
エンジニア暦:30年目、最初はコンシューマーゲーム機 の開発、のちにLAMPでの開発にジョブチェンジ、言語に こだわらない性格、最近はPythonをメインでやってま す。 2
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) PHPのスキル • 私のPHP歴です。 • PHP4からPHP7までの経験あります。 • フレームワークはMojaviスタートで、CodeIgniterを経
由してCakePHP2,CakePHP3をやりました。 • 趣味でFuelPHPもやってました。 3
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) いきなり 質問です 4
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) E860 と 32FF 5
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) この数値の意味わかりますか? 6
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 答え • 新元号で割り当てられる合字のコードポイントです。 ◦ E860はEBCDICで割り当てられた新元号の合字です。 ◦ 32FFはUNICODEで割り当てられた新元号の合字です。
• 合字とは複数の文字を1文字のフォントで表現したもので す。 ◦ ㍉ ㌔ ㌢ ㍍ ㌘ ㌧ ㌃ ㌶ ㍑ ㍗ ㌍ ㌦ ㌣ ㌫ ㍊ ㌻ ㎜ ㎝ ㎞ ㎎ ㎏ ㏄ ㎡ № ㏍ ℡ ㈱ ㈲ ㈹ • 元号では㍾(U+337E)、㍽(U+337D)、 ㍼(U+337C)、㍻ (U+337B)が対応してます。 7
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) ※注意 • 新元号の文字コード、UNICODEは「
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) アジェンダ 1. 新元号の概要 2. dateとDateTime::format()クラスの対応 3. strftimeの対応
4. Normalizerの対応 5. 合字の対応 6. One more thing ※データーベースなどについては言及しません。 9
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 新元号の概要 • 新元号の発表は㍻31年4月1日(月)午前11時30分です。 なお公表時間は決まってません。 •
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 新元号の概要 • Windows 10、Mac OSX、iOS、Android OSなど、元号 を表示するOSは、新元号発表後にアップデート配布で対
応されます。 ◦ 和暦表示対応と合字フォント対応 • UNIX系ではLinux系の一部が和暦に対応しているので アップデートが必要です、(BSD系は非対応、Mac OSX もBSD系)確認方法はこちらです。 ◦ LC_TIME=ja_JP.utf8 date +'%EY' 11
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) dateとDateTime::format()クラスの対応 • 和暦に対応していないので、対応は不要です、PHPの バージョンアップも不要です。 • 独自実装なら、エポックミリ秒「1546300800000」を 判定に使ってください。
• なお、JavaなどはGGGGとかで平成が出るので、新元号 対応JVMの差し替えが必須です。 12
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) strftimeの対応 • こちらはC言語のライブラリーから表示をしているだけな ので、対応は不要です、PHPのバージョンアップも不要 です。 • 概要にも書きましたが、和暦に対応したLinuxのみ対応が
必要、Linuxのアップデートが必要です。 • 確認方法はこちらです、平成31年と表示されます。 ◦ setlocale(LC_TIME, "ja_JP.utf8", "Japanese_Japan.932"); ◦ print strftime('%EC%Ey年'); 13
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) Normalizerの対応 • 対応が必要です。 • 文字コードの正規化のことです。 • 半角文字、全角文字、記号などが混ざると、文字判定処
理が面倒です、正規化するとこれを統一できます。 • NFKC(Normalization Form Compatibility Composition)を使うことが多いようです、こちらの命令 を実行すると合字の㍻ではなく平成と出ます。 ◦ print normalizer_normalize("㍻", Normalizer::FORM_KC); 14
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) Normalizerの対応 • 新元号発表後、PHPなどのアップデートがあれば、PHP5 系はPHP自体の差し替え、PHP7系はPECL intlとintl (国際化用拡張)モジュールの差し替えが必要です。 •
CakePHP3はintlモジュールが必須なので、元号を使って なくても更新するのが望ましいと思われます。 15
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 合字の対応 • 合字は表示の話なので、クライアント側の対応です、 PHP側は関係ない?! 16
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 本当に、そう思ってます? 17
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 正しく侮ヲできると思ってます? 18
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 合字の対応 • スライドの最初に出した合字のコードはEBCDICと UNICODEです、Shift-JISとEUC-JPは割り当てが無いで す。 • つまり、Shift-JISとEUC-JPで書かれたソースコードで
元号表示しているのは、そのままでは対応ができませ ん、ソースコードをUNICODEに変換する必要がありま す。 19
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 合字の対応 • ソースコードをShift-JISで書くのは止めましょう! • 関連のテンプレートファイルなどもUNICODEに変換した ほうが良いと思います。 •
合字は一番楽な対応と思われておりますが、一番面倒な 対応になります。 • 出力されるHTMLのエンコードも忘れずにね! 20
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 新元号対応まとめ • アップデートが必要 ◦ Linux ◦ PHP5
◦ PHP7系PECL intl ◦ intlモジュール • ソースコードの改修が必要 ◦ 独自実装で元号を表示している ◦ ソースコードがShift-JISとEUC-JPで書かれいる 21
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) One more thing 22
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 天皇誕生日について • 今上天皇の誕生日は、12月23日で平日に戻ります。 • 昭和天皇の誕生日は、4月29日で「みどりの日」として祝 日になりましたが、のちに「昭和の日」に名前が変わり ました。
• 大正天皇の誕生日は、8月31日で現在も平日です。 • 明治天皇の誕生日は、11月3日で「文化の日」祝日です。 23
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 天皇の即位の日について • 神武天皇(初代天皇)の即位の日は、2月11日(旧暦は1 月1日)で「建国記念日」祝日です。 ◦ 両陛下が神武天皇陵で「退位報告」の儀式 奈良・橿原市 https://www.mbs.jp/news/kansainews/20190326/GE0000000000
00027130.shtml •
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) ゴールデンウィークについて •
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 祝日について •
第136回 PHP勉強会@東京 #phpstudy ㍻31年3月27日(水) 平成最後のLT大会&PARTY㍻31年4月30日開催 • 新元号に興味が出てきました?それなら平成年越しイベ ントどうでしょうか?Let’s Party! • https://connpass.com/event/123175/
27