JavaScript Temporal API について整理する

2025-06-17

はじめに

こんにちは。Belong でフロントエンドエンジニアをしている ryo です。
先日、社内で週次開催しているエンジニアミーティングのアイスブレイクで、2025 年 6 月現在ブラウザ対応中(TC39 Stage 3)の JavaScript Temporal API について話したところ、JavaScript の日付ライブラリの話や、JavaScript の日付処理のベースとなった java.Util.Date の話等が話題に上がり、割と活発な議論となったため、改めて整理してブログにまとめることにしました。

Temporal とは

端的にいうと、Date オブジェクトに替わる新しい日付/時刻 API です。
JavaScript の日付処理は、以前から多くの利用者にとって大きな課題があると指摘されてきました。そのため、2017 年ごろからTC39 を中心に、新しい日付処理の仕組みの策定が進められています。

ちなみに、なぜこのような状況になったのかという背景についても興味深い内容が紹介されています。関心のある方は、2017 年に Maggie Pint 氏が公開したブログ記事をぜひ読んでみてください。このブログは TC39 のリポジトリで詳細な動機としてリンクが貼られており、Temporal が解決しようとしている課題とも非常に関連があります。

Date オブジェクトの課題

Temporal の詳細に触れる前に、Date オブジェクトのどんなところが課題視されているのか整理しようと思います。

  • ユーザーの現地時間と UTC 以外のタイムゾーンはサポートされていない
  • パーサーの動作が信頼できない(ブラウザの実装依存)
    • new Date('06-17-2025') の実行結果:
      • Chrome: Tue Jun 17 2025 00:00:00 GMT+0900
      • Safari: Invalid Date
  • API が扱いにくい
    • 基本的に month に関する操作は monthIndex なので、操作が直感的ではない
      • new Date(2025, 6, 17) => Thu Jul 17 2025 00:00:00 GMT+0900
      • month の操作は index 値なのに date はなぜか 1〜31…

上記以外にも多くのことが課題として指摘されています。
このような状況ですので、日付処理は date-fns 等のサードパーティライブラリを利用する前提なのが、JavaScript を用いた開発の現状です。

Temporal API の使用感

試用方法

https://tc39.es/proposal-temporal/docs/index.html に polyfill が入っており、devtools 上で実際に試すことができます。
実際に少し試してみたところ、Date オブジェクトの課題は全て解決しているように感じました。

Temporal の構造

Temporal は以下のような構造になっているとのことです:

object relationship

引用: TC39 proposal-temporal

この設計により、用途に応じて適切な型を選択できるようになり、より安全で直感的な日付処理が可能になりそうです。

期待される効果

日時処理系のライブラリが不要になる可能性があると個人的には期待しています。
現在のように date-fns のようなライブラリに依存せずとも、ネイティブな API で十分な日付処理ができるようになるかもしれません。

ブラウザの対応状況

caniuse での状況を確認すると、現在は Firefox のみ対応済みの状態です。
ブラウザ(JS エンジン)が 2 つ対応したら Stage 4 になる理解なので、あと一つというところかと思います。

V8 が対応したら Node.js にも影響があるので大きなニュースになりそうですし、長年の技術的負債が解消されそうでとても楽しみです。
個人的には、フロントエンド開発における日付処理の複雑さが大幅に軽減されることを期待しています。

まとめ

今回は JavaScript の Temporal API について調べてまとめました。
Date オブジェクトの長年の問題を解決する画期的な仕様だと感じましたし、実際に使えるようになるのがとても楽しみです。
まだ Stage 3 の段階ですが、今後の動向を注視していきたいと思います。

弊社 Belong では、こういった新しい技術にも積極的に取り組むフロントエンドエンジニアを募集しています。
興味がある方は エンジニアリングチーム紹介ページ をご覧いただけると幸いです。

最後までお読みいただき、ありがとうございました。

参考資料