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
PHPの新元号対応について / About the new era fixes of PHP ...
Search
sapi_kawahara
March 27, 2019
Education
1
1.3k
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
660
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
1.1k
執筆テーマの決め方
sapi_kawahara
1
400
LTの禁じ手
sapi_kawahara
1
1.2k
||とorの違いは登壇して解決した
sapi_kawahara
0
370
Macintosh talk / Macintoshの話
sapi_kawahara
0
230
混合接種してみた / Mixed inoculation
sapi_kawahara
0
170
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
430
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
480
Other Decks in Education
See All in Education
都市の形成要因と 「都市の余白」のあり方
sakamon
0
160
MySmartSTEAM 2526
cbtlibrary
0
190
心理学を学び活用することで偉大なスクラムマスターを目指す − 大学とコミュニティを組み合わせた学びの循環 / Becoming a great Scrum Master by learning and using psychology
psj59129
1
1.7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Chapitre_2_-_Partie_2.pdf
bernhardsvt
0
170
おひとり様Organizations管理者もルートアクセス管理を有効にしよう!
amarelo_n24
1
100
AIでキミの未来はどう変わる?
behomazn
0
110
JAPAN AI CUP Prediction Tutorial
upura
2
720
Measuring your measuring
jonoalderson
1
390
2025-12-11 nakanoshima.dev LT
takesection
0
110
ThingLink
matleenalaakso
28
4.3k
滑空スポーツ講習会2025(実技講習)EMFT講習 実施要領/JSA EMFT 2025 procedure
jsaseminar
0
110
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
68
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Deep Space Network (abreviated)
tonyrice
0
64
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Accessibility Awareness
sabderemane
0
56
Skip the Path - Find Your Career Trail
mkilby
0
59
Testing 201, or: Great Expectations
jmmastey
46
8.1k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Thoughts on Productivity
jonyablonski
74
5k
Facilitating Awesome Meetings
lara
57
6.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
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