あらゆる情報を楽に正しく String にフォーマットする - 令和2021年から脱却せよ by treastrain / Tanaka Ryoga

iOSDC Japan 2021
採択
2021/09/19 11:30〜
Track D
レギュラートーク(40分)

あらゆる情報を楽に正しく String にフォーマットする - 令和2021年から脱却せよ

treastrain treastrain / Tanaka Ryoga treastrain

私たちは常日頃、日付や時刻、時間、数字、名前などを表示するために、最終的に様々な情報を String に変換しています。
その際に便利な API が Formatter です。Date を String にする DateFormatter が良く使われる一例ですが、実は真の力はそこにとどまりません。

数字を3桁おきに 「,」を入れた表示をしたい
「0.85」を「85%」と表示したい
「-1700」を「(1,700)」と表示したい
1日前を「昨日」、1ヶ月後を「来月」と表示したい
[“Apple”, “Banana”, “Orange”] の Array を「Apple, Banana and Orange」と表示したい

…これらを実現するために独自で実装を行っていませんか?
コーディングのトレーニングのために独自実装する分には問題ありませんが、実プロダクトでは工数がかかり、考慮漏れがあると問題になります。しかし大抵は対応する Formatter が標準で用意されています。

日付、時刻、時間、%、通貨、指数表記、バイトサイズ(MB、GB…)、人の名前、加速度、角度、面積、体積、質量、濃度、期間、電気、エネルギー、周波数、燃費、照度、長さ、圧力、速度、温度…

これらの Formatter は i18n 対応を含めて強力にサポートしてくれますが、1つの言語のみに対応する場合でも Formatter を使うべきです。言語は同じでも地域によって適切なフォーマットが違う場合があるからです。
このセッション(40分版)では標準で用意されている Formatter のすべてと、その使用例、絶対にしてはいけない使い方を紹介します。

誤った使い方をすると、あなたも「令和2021年」に飛ばされますよ…

Happy Formatting!