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.1k
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
執筆テーマの決め方
sapi_kawahara
1
310
LTの禁じ手
sapi_kawahara
1
1.1k
||とorの違いは登壇して解決した
sapi_kawahara
0
310
Macintosh talk / Macintoshの話
sapi_kawahara
0
160
混合接種してみた / Mixed inoculation
sapi_kawahara
0
110
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
360
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
400
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
410
推し技術の紹介 / Introduction of pushing technology
sapi_kawahara
0
160
Other Decks in Education
See All in Education
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
2.6k
情報処理工学問題集 /infoeng_practices
kfujita
0
180
ニュースメディアにおける生成 AI の活用と開発 / UTokyo Lecture Business Introduction
upura
0
190
Design Guidelines and Models - Lecture 5 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
760
Генезис казарменной архитектуры
pnuslide
0
170
生成AIと歩むこれからの大学
gmoriki
0
220
1127
cbtlibrary
0
170
5 Things Every L&D Pro Should Steal from Marketing
tmiket
0
110
脳卒中になってしまった さあ、どうする
japanstrokeassociation
0
1.4k
The Task is not the End: The Role of Task Repetition and Sequencing In Language Teaching
uranoken
0
260
Human Perception and Cognition - Lecture 4 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
800
オープンソース防災教育ARアプリの開発と地域防災での活用
nro2daisuke
0
240
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
137
6.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Automating Front-end Workflow
addyosmani
1366
200k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
A better future with KSS
kneath
238
17k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
19
2.3k
Building Applications with DynamoDB
mza
93
6.2k
A Philosophy of Restraint
colly
203
16k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Designing for humans not robots
tammielis
250
25k
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