2020年(ねん)で開発(かいはつ)の終了(しゅうりょう)したOSSプロジェクト - Moment.js

個人的(こじんてき)に使用(しよう)したこのとのあるOSSのうち、2020年(ねん)で開発(かいはつ)の終了(しゅうりょう)したプロジェクトのまとめです。
本当(ほんとう)は全部(ぜんぶ)まとめて書(か)こうと思(おも)ったけど時間(じかん)がないので1つずつ紹介(しょうかい)します。

Moment.js

公式(こうしき)サイト:https://momentjs.com
リポジトリ:https://github.com/moment/moment/

Javascriptで日時(にちじ)を扱(あつか)うライブラリです。
終了(しゅうりょう)の理由(りゆう)はドキュメントページ のProject Statusの欄(らん)に書(か)かれています。
要約(ようやく)は以下(いか)のとおりです。

イミュータブルに変更(へんこう)することの難(むずか)しさ

Momentのオブジェクトはミュータブルです。
イミュータブルにしてほしいという要望(ようぼう)が多(おお)いですが、

  • 変更(へんこう)は途方(とほう)もない作業(さぎょう)であること
  • 使用(しよう)するプロジェクトにとって重大(じゅうだい)な変更(へんこう)になること
  • 他(ほか)のライブラリで既(すで)に実現(じつげん)されていること
    • →なので逆(ぎゃく)にミュータブルであることが重要(じゅうよう)であると考(かんが)えている

といった理由(りゆう)から難(むずか)しいようです。

ファイルサイズの大(おお)きさ

設計(せっけい)の古(ふる)さからツリーシェイキング(Webpack等(とう)でバンドルする際(さい)に使用(しよう)していないコードを排除(はいじょ)すること)が効(き)かなかったり、 国際化(こくさいか)やタイムゾーンのサポートでバンドルサイズが大(おお)きくなってしまいます。
また、ファイルサイズの大(おお)きさからChromeの開発者(かいはつしゃ)ツールでは置(お)き換(か)えを推奨(すいしょう)しており、Momentチームもこれを支持(しじ)しています。

まとめ(個人的(こじんてき)な感想(かんそう))

Project Statusの最後(さいご)には、日時(にちじ)のライブラリが必要(ひつよう)なくなることが願(ねが)いであると書(か)かれています。
既(すで)に標準機能(ひょうじゅんきのう)でTemporalというグローバルオブジェクトが検討(けんとう)されており、 こちらに(特(とく)にMomentやその他(た)の日時(にちじ)ライブラリを使用(しよう)したことがある人(ひと)は)貢献(こうけん)してくださいと締(し)められています。
プロジェクトの終了(しゅうりょう)に関(かん)してはレガシーな設計(せっけい)というよくある理由(りゆう)ですが、 プロジェクト開始時(かいはつじ)はまさか2020年(ねん)現在(げんざい)まで標準機能(ひょうじゅんきのう)で実装(じっそう)されず、様々(さまざま)な日時(にちじ)ライブラリが作成(さくせい)される事態(じたい)になるとは思(おも)っていなかったんだろうなぁ。。。