TC39 Temporalのドキュメントを一部翻訳しました
2021/07/27sititou70です.少し未来のJavaScriptを紹介します!
Temporalは,TC39で提案されている次世代の日付APIです.現状のDate
における欠点を克服するために,仕様を目下策定中です.
tc39_studyというイベントで,TemporalについてのLTをしました.また,そのLTを行うにあたって,勉強のためにTemporalのドキュメントを翻訳していたのですが,そちらが公式リポジトリにマージされました 🎉
1分でわかるTemporal
tc39_studyは,TC39の各プロポーザルを わずか30〜90秒でLTし続ける というヤバいイベントです.以下が私のLTのアーカイブです.(カミカミですが許してください)
なお,このイベントの終盤は30秒LTゾーンという魔境となっており,面白いのでおすすめです.当日のTwitterも,「早口オタク」「情報の嵐」「処理が追いつかない」「EcmaScript百人組手」などと阿鼻叫喚でした.
ドキュメントを翻訳しました
上記のLTにあたって,Temporalを理解するために「公式ドキュメントを翻訳しながらじっくり読む」というのをやっていました.これらを更にブラッシュアップしたものを提出した結果,公式の日本語訳として取り込んでもらえました.
TemporalのREADMEを見ると,英語の他に日本語ドキュメントへのリンクができています.
今回翻訳したドキュメントは,Temporalのキーコンセプトに関する以下の5ページのみです.
- Temporal(トップページ)
- Temporalにおけるタイムゾーンとサマータイム、曖昧性の解決
- Temporalにおけるカレンダーシステムのサポート
- ECMAScript拡張のISO-8601とRFC 3339
- Durationのバランシング
この他にも,Temporalのドキュメントには,APIのサンプルコード集であるCookbookや,各種メソッドを詳しく説明するAPIリファレンス(例:Temporal.Nowなど)があります.
Temporalはあくまでプロポーザルであり,APIの仕様は変更される可能性が高いため,今回はキーコンセプトに関する文書のみを翻訳しました.また,コンセプトさえわかっていれば,その他のリファレンスを読む際もそこまで苦労しないだろうという目論見があります.
上記の翻訳は,自分自身で何度か読み返してチェックしているのですが,それでもなお,typoや訳のミスがあると思います.それらを発見された際には,是非TemporalのリポジトリにPRを投げてください.(そして,PRのどこかで@sititou70
にメンションをいただけると,私もレビューに参加できます)
まとめ
Temporalは現在stage3であり,フィードバックを募集しています.そして細かいミスが修正され,ブラウザ等に順調に実装されていけば…いずれ正式な仕様となるかもしれません.
私は別に,Temporalがすべてのケースにおいて最適であるとは思っていません.しかし,ビルトインのAPIのみで厳格に日付を処理できるというのは,大きな強みだと感じました.
「既存の日付ライブラリとの棲み分けはどうするのか」,「既存コードをTemporalに移植するべきか」,「パフォーマンスはどうなのか」など,これから考えなければならないことは山積みです.しかし,ともかく選択肢が増えるのは楽しみです.
Temporalの今後の活躍に乞うご期待!
謝辞
Yosuke Furukawa(@yosuke_furukawa)さんには,上記のイベントを紹介していただき,また個人用に作っていた翻訳版を公開するように助言もいただきました.ありがとうございました.
Daniel Ehrenberg(@littledan)さんには,翻訳物をどのように公開するかの議論を進めていただきました.当初は,この日本語版を個人のリポジトリで公開する予定でした.しかし,@littledanさんがTemporalのチャンピオンの方々に掛け合って議論と調整を進めていただいたおかげで,無事に公式リポジトリへ取り込まれました. Thank you for taking the time to discuss this translation