JavaScript Primer v5.0.0: ES2023の対応/CC BYライセンスに変更/Open Collectiveで支援できるようになりました
ECMAScript 2023(ES2023)をサポートしたJavaScript Primer v5.0.0をリリースしました。
JavaScript Primer(jsprimer)は、JavaScriptの文法や機能を一から学べるように書かれている入門書です。 今回のウェブ版のアップデートでは、最新のECMAScriptに対応しました。
jsprimer v5.0.0リリースに合わせて、文章のライセンスをCC BY-NC 4.0からCC BY 4.0へと変更しています。 また、Open Collectiveのページを公開し、jsprimerプロジェクトを金銭的に支援できるようになりました!
これまでのjsprimer
ECMAScriptの仕様書は毎年更新されるので、それに合わせてjsprimerも更新しています。
- 1.0.0(ES2019): JavaScript Primerを出版しました!/JavaScript Primerはなぜ書かれたのか?
- 2.0.0(ES2020): JavaScript Primer 2.0 - ECMAScript 2020に対応した入門書を公開しました
- 3.0.0(ES2021): ES2021に対応したJavaScript Primer 3.0を公開しました - JavaScript入門
- 4.0.0(ES2022): JavaScript Primer 4.0.0: ECMAScript 2022に対応したJS本 | Web Scratch
今回のウェブ版のアップデートでは、2023年6月27日にリリースされたECMAScript 2023(ES2023)をサポートしています。
ES2022までの対応を含んだ書籍版もリリースされているので、安定しているものを読みたい場合は書籍版をおすすめします。
- JavaScript Primer 改訂2版をリリースしました!/JavaScript Primerはなぜ更新され続けるのか? | Web Scratch
- Amazon: JavaScript Primer 改訂2版 迷わないための入門書 | azu, Suguru Inatomi |本 | 通販 | Amazon
ECMAScript 2023の変更点
ECMAScript 2023(ES2023)に対応した、jsprimer v5.0.0の変更点を紹介します。 詳細はリリースノートに記載してあるので、変更点のみを知りたい方はリリースノートを参照してください。
ECMAScript 2023には、配列のメソッド周りの変更が多く入っています。 また、今後入るであろうECMAScriptのProposalには、配列やIteratorに関するProposalが多くあります。 ES2023でもかなり改善はされていますが、まだ配列やコレクション系の処理の良い書き方は変わっていくと思います。
ES2023はまだ変化の途中という感じがあり、ユースケースが決まりきっていない部分もあります。 あまりそういうの気にせずに読みたい方は、スナップショットとして安定している書籍版をおすすめします。
では、jsprimer v5.0.0に含まれるES2023の変更点を紹介します。
Change Array by copy
概要
配列の破壊的なメソッドであるsplice
、reverse
、sort
に対して、
ES2023では非破壊的なバージョンであるtoSpliced
、toReversed
、toSorted
が追加されました。
また、配列への代入(array[index] = item
)という破壊的な処理に対して、with
という非破壊的なメソッドが追加されました。
変更されたページ
変更内容
- 破壊的なメソッドと非破壊的なメソッド のセクション
- 追加された
toSpliced
、toReversed
、toSorted
、with
メソッドの解説の追加 - 破壊的な方法と非破壊的な方法の対応関係のテーブルを追加
- 追加された
破壊的な方法 | 非破壊な方法 |
---|---|
array[index] = item |
Array.prototype.with [ES2023]
|
Array.prototype.pop |
array.slice(0, -1) とarray.at(-1) [ES2022]
|
Array.prototype.push |
[...array, item] [ES2015]
|
Array.prototype.splice |
Array.prototype.toSpliced [ES2023]
|
Array.prototype.reverse |
Array.prototype.toReversed [ES2023]
|
Array.prototype.sort |
Array.prototype.toSorted [ES2023]
|
Array.prototype.shift |
array.slice(1) とarray.at(0) [ES2022]
|
Array.prototype.unshift |
[item, ...array] [ES2015]
|
Array.prototype.copyWithin [ES2015]
|
なし |
Array.prototype.fill [ES2015]
|
なし |
配列のメソッドを非破壊的なメソッド(Immutable)と破壊的なメソッド(Mutable)に分けると、次のようになります。
関連
Array.prototype.{findLast, findLastIndex}
概要
ES2023では、Array.prototype.findIndex
とArray.prototype.find
に対応するメソッドとして、
Array.prototype.findLastIndex
と Array.prototype.findLast
が追加されました。
それぞれ findIndex
とfind
と同じ使い方ですが、末尾から探索した結果を返すメソッドになっています。
変更されたページ
変更点
- ES2023で追加された
Array.prototype.findLastIndex
とArray.prototype.findLast
の対応 -
Array.prototype.lastIndexOf
のサンプルコードを追加
関連
Symbols as WeakMap keys
概要
ES2022までは、WeakMapのキーとWeakSetの値にはオブジェクトのみが指定可能でした。 これは弱い参照をGCで解放するために、キーは一意な値のみが指定可能という制限からくるものでした。 Symbolも一意な値となるため、ES2023ではオブジェクトに加えてSymbolも指定できるように仕様が変更されました。
変更されたページ
変更内容
- WeakMapのキーに指定可能なものとしてSymbolを追加
- WeakSetの値に指定可能なものとしてSymbolを追加
関連
その他のProposal
その他にもES2023にマージされたProposalとしてHashbang Grammarがあります。
Hashbang Grammarは#!
から始まる最初の行をコメントとして扱う仕様ですが、Node.jsなどの実行環境との相互運用性を考慮して、ES2023で仕様が変更されました。
jsprimerでは特に取り扱っていませんが、興味がある方は次のIssueを参照してください。
ライセンスの変更
今までのjsprimerのライセンスは次のとおりでした。
- ソースコード: MITライセンス
- 文章: CC BY-NC 4.0
v5.0.0からはjsprimerのライセンスを次のように変更します。
- ソースコード: MITライセンス(そのまま)
- 文章: CC BY 4.0
CC BY-NCでは商用利用を禁止する条項がありますが、 CC BYにはこの条項は含まれません。
行為 | CC BY | CC BY-NC |
---|---|---|
複製 | OK | OK |
頒布 | OK | OK |
展示 | OK | OK |
実演 | OK | OK |
改変 | OK | OK |
著作権者の表示 | 必要 | 必要 |
非営利目的 | OK | NG |
元から、教材などとしての利用は許可していましたが、商用かどうかの判断が難しいものになっていました。 今回の変更で、著作権者表示をすれば商用でも利用可能なライセンスになっています。 これにより、jsprimerの文章も、より自由に使いやすくなります。
変更の詳細についてはIssueを参照してください。
Open Collectiveでjsprimerを支援できるようになりました
BabelやPrettierなども利用しているOpen Collectiveというサービスを使い、JavaScript Primerというプロジェクトを金銭的に支援できるようになりました。
次のCollectiveページから支援できるようになっています。
このOpen Collectiveでの支援は、主に企業ユーザーを対象にしています。 支援することでWebサイトや次回(ES2024)のリリースノートにスポンサー表示ができるようになります。 また、“推しページ”を設定できるようにする予定で、https://jsprimer.net/の特定のページにメッセージ(書籍のポップをイメージ)を出せるようにする予定です。
JavaScript Primerは変化を前提にした書籍のプロジェクトであるため、毎年のECMAScriptのリリースに合わせて内容を改訂しています。 jsprimerは変化に対応できる基礎を身につけられること、またそれを迷わずに学べるようにすることを目的にしたプロジェクトです。 変化に対応するには、書籍自体も変化に対応する必要があります。
更新に継続的に行うのに必要なリソースとしてヒト、カネ、モノがあります。 Open Collectiveは、プロジェクトに対して金銭的な支援をすることができるサービスです。 単純に受け取るだけではなく、プロジェクトにContributeしてくれた方に還元することもできます。 それらのやりとりがオープンに行えるのがOpen Collectiveの特徴です。
ざっくりとした試算では、jsprimerの毎年の更新にかかる必要は年間で687,840円ぐらいです。 詳細は次の記事にまとめています。
JavaScript Primer - Open Collectiveでの支援方法として、Yearly Gold Sponsors(年間)とMonthly Gold Sponsors(月間)を用意しています。 jsprimerは年ごとの更新なので、Yearly Gold Sponsorsがわかりやすいかと思います。
まだ、どういう形が最適なのかはわかっていないため、Contributeしてくれる方(金銭的な支援もContributeです!)と考えながら形を作っていけるといいなと思います。 次のページに、このリリースについてのDiscussionを用意しているので、そちらで意見を聞かせてください。
Open Collectiveについてはまだ検討中の部分も多いので、まずは公開するところから始めています。
次のフォームからメールアドレスを登録しておくと、jsprimerの更新やOpen Collectiveについての更新があったら通知を受け取れます!
フォームが表示されない人は https://github.us13.list-manage.com/subscribe/post?u=fc41e11a2b9dc6f05350e0de0&id=7ab1594ae8 から登録できます。
また、GitHubリポジトリをWatchしておくと、更新の通知がGitHub上でも受け取れます。 ついでにリポジトリを⭐Starもしてくれると嬉しいです!
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。