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
PHPの新元号対応について / About the new era fixes of PHP ...
Search
sapi_kawahara
March 27, 2019
Education
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPの新元号対応について / About the new era fixes of PHP language
sapi_kawahara
March 27, 2019
More Decks by sapi_kawahara
See All by sapi_kawahara
氷川神社の話
sapi_kawahara
0
82
EzSignという 電子ペーパー
sapi_kawahara
2
98
Gitがない時代 インターネットがない時代の 開発話
sapi_kawahara
0
420
プログラミング言語において文字列を複数行にわたって だらだらと記載するアレ
sapi_kawahara
0
230
コマンドラインを見直そう(1995年からタイムリープ)
sapi_kawahara
0
780
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
2.1k
執筆テーマの決め方
sapi_kawahara
2
460
LTの禁じ手
sapi_kawahara
2
1.3k
||とorの違いは登壇して解決した
sapi_kawahara
0
430
Other Decks in Education
See All in Education
【ホスト用】ainiチャット操作ガイド
ainischool
0
120
LEGO Geometry Tutorial
arnoknobbe
0
720
【新規入学者様】ZEPメタバース校舎ガイド
ainischool
0
200
マークシート試験のTeX言語を用いた自動採点について
doratex
0
6.2k
1人 × AI、1か月でここまで作れる ー 数年前の外注換算3.8〜7.4億円・241〜379人月分の作業を、AI費用 約10万円・31日で
frievea
0
580
子どものためのプログラミング道場『CoderDojo』〜法人提携例〜 / Partnership with CoderDojo Japan
coderdojojapan
PRO
4
19k
1007
cbtlibrary
0
220
検定資格の価値 ~実はすごいよQC検定~
bunnchinn3
0
260
Digijulkaisut
matleenalaakso
1
10k
1014
cbtlibrary
0
170
AWS Academy プログラムのご紹介
hiragahh
0
110
Book-keeping
bvr7352
0
130
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Art, The Web, and Tiny UX
lynnandtonic
304
22k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Being A Developer After 40
akosma
92
590k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
560
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.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