w3c-xmlhttprequest v3.0.0をリリースしました

Yamagishi Kazutoshi

Yamagishi Kazutoshi

Software Developer

表題の通りw3c-xmlhttprequest v3.0.0をリリースしました。細かなバグの修正や最新のXMLHttpRequestの仕様に追従させたりと様々な変更が含まれていますが一番大きな変更としてはECMAScript 2015からTypeScriptへの移行でしょう。

v1.0.0をリリースしたのが2012年なので当初はECMAScript 5を前提としていました。Object.keysObject.definePropertyJSON.parseといった当時としては新しい機能を使っていましたがどうしても古さは否めず2016年にECMAScript 2015に書き換えたv2.0.0をリリースしていました。とはいえvar文をlet文とconst文に置き換えたり、prototypeプロパティーをclass構文に置き換えたりといった基本的なところの書き換えしかしておらず根本の部分は2012年にリリースされたv1.0.0のままでした。

今回はTypeScriptへの移行に伴い根本の部分から書き換えました。プライベートフィールドを使って容易に属性を外から書き換えられないようにしたり、Setを使ってEventListenerのハンドリングを平易な記述でできるようにしています。ほかにもTypeScriptに置き換えたおかげで簡便な記述ができるようになり、ECMAScript 2015からの移行もさして苦ではありませんでした。

またTravis CIからGitHub Actions移行したり、MochaからJest移行したり、Dependabot導入したりもしています。長らく放置していたプロダクトをある程度近代化できたのではないかという自負があります。

余談

v1.1.0を公開した2013年にも同様の発言をしていますがv1.0.0をリリースした2012年当時はNode.jsとウェブブラウザーで同じコードを動かすモチベーションがわたしにはありませんでした。あくまでXMLHttpRequestの仕様理解のために作って自身で使うつもりもありませんでした。

当時と比べるとReactなどのフレームワークを用いたサーバーサイドレンダリングのために現在はNode.jsとウェブブラウザーで同一のコードを動かすモチベーションも高まっていますがPromsiseベースの非同期処理が主流となっていてイベントベースのXMLHttpRequestではなくfetchを使う人の方が多いのではないでしょうか。そう思っていたのですがnpmでのダウンロード数を見るとありがたいことに少なくない方々に使っていただいているようで驚いています。

次の大きな変更はまた4年後……もしくはそれ以降になるとは思いますが簡単なメンテナンスくらいはしていきたいと思います。