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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
Flinga
matleenalaakso
3
15k
栃木県警サイバーセキュリティ研修会2026
nomizone
0
200
Design Guidelines and Models - Lecture 5 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.3k
Linguaxes de programación
irocho
0
530
1111
cbtlibrary
0
270
俺と地方勉強会 - KomeKaigi・地方勉強会への期待 -
pharaohkj
1
1.6k
【dip】「なりたい自分」に近づくための、「自分と向き合う」小さな振り返り
dip_tech
PRO
0
230
Going over the Edge
jonoalderson
0
370
Introduction - Lecture 1 - Next Generation User Interfaces (4018166FNR)
signer
PRO
2
4.4k
AIで日本はどう進化する? 〜キミが生きる2035年の地図〜
behomazn
0
120
0203
cbtlibrary
0
120
【洋書和訳:さよならを待つふたりのために】第2章 ガン特典と実存的フリースロー
yaginumatti
0
230
Featured
See All Featured
KATA
mclloyd
PRO
34
15k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
470
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
79
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
How to Ace a Technical Interview
jacobian
281
24k
How to make the Groovebox
asonas
2
1.9k
Unsuck your backbone
ammeep
671
58k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
Paper Plane (Part 1)
katiecoart
PRO
0
4.3k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
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