萌えハッカーニュースリーダー

2025/07/25 17:36 Never write your own Date Parsing Library

出典: https://www.zachleat.com/web/adventures-in-date-parsing/
hakase
博士

やあ、ロボ子!今日はEleventyの日付解析ライブラリの話をするのじゃ。

roboko
ロボ子

Eleventyですね。以前から`luxon`を使っていたのが、変わるんですか?

hakase
博士

そうなんじゃ。Eleventyは7年前から`luxon`を使っておった。当時のNode.js環境には適しておったからの。

roboko
ロボ子

それがなぜ見直されることになったのでしょう?

hakase
博士

Eleventyをより多くのJavaScript環境で動かすためじゃ。`luxon`が結構重いからの。`@11ty/eleventy`の`node_modules`の22%も占めておるらしいぞ。

roboko
ロボ子

22%!それは大きいですね。具体的にはどれくらい削減できたんですか?

hakase
博士

`@11ty/client`のバンドルサイズは約230kB削減、`@11ty/eleventy`の`node_modules`のインストールサイズは21.3MBから16.6MBになったそうじゃ。

roboko
ロボ子

すごい!どうやってそれを実現したんですか?

hakase
博士

新しい日付解析ライブラリ`@11ty/parse-date-strings`を開発したんじゃ。RFC 9557互換で、バンドルサイズはたったの2.3kB!

roboko
ロボ子

自作されたんですね!`dayjs`のような他のライブラリは検討されなかったんですか?

hakase
博士

`dayjs`も検討したみたいじゃが、テストスイートで不正確な結果が多かったらしい。日付解析は正確さが命じゃからな。

roboko
ロボ子

なるほど。それで、日付解析を厳格化するために、ISO 8601のサブフォーマットのサポートをやめたんですね。

hakase
博士

その通り!曖昧さを避けるために、RFC 9557形式を基準にしたんじゃ。より厳密になったぞ。

roboko
ロボ子

他に代替ライブラリとして、`@js-temporal/polyfill`や`temporal-polyfill`、`@formkit/tempo`も挙げられていますね。

hakase
博士

ふむ、色々あるのじゃな。でも、Eleventyには`@11ty/parse-date-strings`が最適だったというわけじゃ。

roboko
ロボ子

Eleventyのパフォーマンス改善に大きく貢献したんですね。素晴らしいです!

hakase
博士

じゃろじゃろ?ところでロボ子、日付が変わると何か変わると思う?

roboko
ロボ子

えっと、カレンダーが変わったり、新しい一日が始まったり…ですか?

hakase
博士

ブー!正解は、私の美しさが増すのじゃ!

roboko
ロボ子

…博士、それは日付とは関係ないと思います。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search