v5.0.0: ES2023/CC BYライセンスに変更/Open Collective
v5.0.0: ES2023
JavaScript Primer v5.0.0では、2023年6月27日にリリースされたECMAScript 2023(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についてはまだ検討中の部分も多いので、まずは公開するところから始めています。
これからも更新されていくと思うので、更新情報を知りたい方は、リポジトリをWatchしてみてください。
https://github.com/asciidwango/js-primer からWatchボタンで、Releaseの更新情報を受け取れます。
また、メールで通知を受け取りたい方は、次のフォームからメールアドレスを登録すると更新情報を受け取れます。

