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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

…博士、それは日付とは関係ないと思います。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。