Twitter hashtag: #esspec
はじめに
📝Meetの録画OKか確認してから始める
録画はsyumaiの手元には残します
公開はちょっと・・、と言う場合はsyumaiに連絡ください
特に連絡なければYouTubeに出そうと思います
読むもの
やること
✗ 全部読む
○ 読み方を覚える
よく読むであろう場所の読み方
基本的な文法
読み方について読む
スケジュール
19:30 集合、自己紹介
20:42 ~ 20:53 休憩
(21:45 くらい?) 今後の予定について相談
22:00 終了
自己紹介
syumai
仕事でNext.jsやったり、Go書いたりしてます
Goの言語仕様の輪読会が終わったので、勢いでこれを開催しました
(遍歴) 初めて触った JavaScript は ES5 で、Vue, Reactから入り、jQueryはほとんどやらずに生きてきました
syu_cream
医療系スタートアップでフルスタック風なソフトウェアエンジニアやってます
React, Next.js 半年?くらいの経験値
ES5 から触ってた?記憶喪失
WhyK
今は仕事でReact書いてます
Denoが好きです
ES5->jQuery->ES6
かなり雰囲気で英語を読んで、機械翻訳よく使う人間です(読むの遅いと思います)
仕様書輪読会面白そうだったので参加しました
輪読会も仕様書を読むのも初めてです
Nozomu Ikuta
Vue/Nuxtのスタック中心に仕事をしています
zu (asazu taiga)asazutaiga.icon
仕事でReact, TypeScriptを使っています
JSは2年くらい書いてます
晩御飯食べてない
Kaito
JunYasumura
noyannoyan.icon
Reactが大好きです。最近はReact内部のコードリーディングに時間を溶かしています
言語仕様書を読むのは初めてなので緊張しています…!
yebis0942yebis0942.icon
Go仕様輪読会がよかったので流れてきました
Rails, Reactあたりをよく使ってます
遍歴:
ES5あたりからJS触り始めました。かつてはjQuery、今はReactをよく使ってます。
CoffeeScriptとかはあまり触らずに生きてきました。
おーみー
高校生です。趣味でReactなどをいじって遊んでいます
プログラミング言語に興味があります
JSはだいぶ前から少しずつ書いてました。ES2015以降が主です
ECMAScript仕様書についてのメモ
仕様書の全体構成
1. Introduction ECMAScript自体の紹介
thirdの前まで読む
3. Conformance
ECMAScriptの仕様の実装を満たす条件
2. Normative References
関連仕様(Unicode, I18n API, JSON)へのリンク
4. Overview
言語の概要
4.4. 用語の定義
4.5. 仕様書の構成
5. Notational Convensions
仕様書を表記するときに使う表記の説明
5.1. Syntactic and Lexical Grammars
Context-Free Grammars: 文脈自由文法
5.2. Algorithm Conventions
ここでいうAlgorithmとは
ランタイムでどんな処理をするかを規定する疑似コード的なやつyebis0942.icon
built-inの関数の処理内容を定義するときとかに使われてるyebis0942.icon
7. Abstract Operations
7.1 型変換の話面白そう
8. Syntax-Directed Operations
宣言的定義がメチャ出てくる
人間の読み物ではなさそう
9. Executable Code and Execution Contexts
実行コンテキストの話っぽい
大事そうなので読もう
9.2 Realms
これが実行コンテキストの話っぽい
9.3 Execution Contexts
いやこっちが実行コンテキストか…
わかんねー
10. Ordinary and Exotic Objects Behaviours
Exotic Objectとは
yebis0942.iconArrayのlengthみたいな特殊な挙動するやつだった気がする(pushしたりするとlengthが自動更新されるとか)
このあとの方から具体的な話が出てくる
Abstract
仕様は役に立つ
その仕様を読みやすくするのがこのドキュメントの狙い
仕様を読むと健康にいい
ECMAScriptとJavaScriptは実質的には同じ
普通のJavaScriptユーザーも仕様を読めると便利
不可解な挙動にぶつかった時、GoogleもStack Overflowも役に立たないことがある
MDNにも詳細が書かれていないことがある(後述)
例:
Array.prototype.push(42)とSet.prototype.add(42)
感想: そもそも前者が動作するのが謎
==の挙動
でも初学者はspec読まなくてもいいよ。とりあえず面白アプリ作ってからまた来てくれ。
英語
heck -> f*ckの婉曲表現
Ever the studious ...
everの解釈
「常に」という意味だそうです
evergreen(常緑樹), everlasting(永遠に続く)
nannycams
子守り用ビデオ
面白さがよくわからない
anythingと同じような意味と解してよさそう
warts
手のマメ?
ペンだこのようにJavaScriptダコができたらという話
どこまでがECMAScriptで規定されているのかという話
ECMAScriptの持ち物に見えてもHTMLやNode.jsの仕様の話だったりする
ECMAScript®
登録商標なんですねー
ECMAScriptは毎年リリース
不完全でも毎年出しているってことだろうか、という解釈があったけど、spec本体にプロポーザルがマージされるのはStage 4に到達して十分な品質に達したときなのではyebis0942.icon
必要とされてそうな新機能が入ってなくてもとりあえずリリースしてる、という観点ではそうなのかも
snapshotの文脈でこの話が出てきたはずですが、徐々にプロポーザルが各月でマージされるからこういう記述になるのでは?と思いました。noyan.icon
そうするとJune 2019以降(from)のブラウザで動かすアプリケーション、という話はECMA Scriptではなく実装状況によるのではという気がしますが…
なるほど…yebis0942.icon
specは5つに分けられると思っている
慣例と規則(Numberの定義とか)
文法(for-in文はどんな形?)
静的な意味論(変数はvar文でどう定義される?)
実行時の意味論(for-inループはどう実行される?)
API(String.prototype.substringはどのように動作する?)
仕様を全部読もうとしないこと
自分の知りたいことが上記のどれに当てはまるかを考える
難しかったら「いつevaluate (評価)されるのか」を考えてみる
自分の知りたいことに関係するセクションだけを読むこと
At this point, I’d like to point out that absolutely no one reads the spec from top to bottom. Rather, only look at the section corresponding to what you are trying to look for, and in that section only look at what you need. Try to determine which one of the five big sections your specific question relates to; and if you are having trouble determining which one it is, ask yourself the question "at which time is this (whatever you are trying to confirm) evaluated?" which may help. Don’t worry, navigating the spec will only become easier with practice.
英語
bullet point: 箇条書きの「・」
省略記法がよく使われているので初学者には辛いかも
仕様書の邦訳
議事メモ (余裕があれば)
ECMAScriptとは
ECMA: エクマ
ヨーロッパの情報通信分野の標準化団体
Tips
「ECMA」という名称はもはや略語ではなくなったため、大文字にせずに「Ecma International」と表記する。
ECMA-262はECMAの262番目の標準規格
JavaScript: 今はなきNetScapeで導入された言語。サンマイクロシステムズが権利を持っていた。
標準仕様としてJavaScriptという名前を使えなかったのでECMAScriptという名称を使うことにした。
参考: サイ本
ECMA-262のリリースサイクル
過去はX.Y形式のバージョニング
現在は毎年リリースしている
TC39
Ecmaの下部団体。ECMAScriptの仕様策定を担当している。
流し読みしつつ作戦を立てる
ES2020の目次を読んでみる
PDF版は目次の一覧性が高い
目次だけで10ページある
Goの仕様の目次は2ページ程度
輪読するのに1年半かかった
分量が多いので通読は無理そう
どうやって読み進める?
差分を読むのはどうだろうか
新しい文法が追加された変更では既存文法の理解も必要そう
まず基本的な事項を理解することを目標にする?
仕様書の1〜5章を流し読みしてみた
ここまでメタデータしかない
まだ仕様本体に辿り着かないねー…
どうやって読み進める?(2度目)
頭から読み始めても消費時間のわりにあまり得るものはないかも
ポイントを決めて読んでみて、その過程で読み進めるのに必要な知識を獲得していくのはどうだろうか
yebis0942.icon20:20〜20:25あたり、一瞬抜けてたので書き起こせなかった
Misc
7.1の型変換とか面白そう
これは後々参照されるんですかね〜
→6のほうでも使われてる…
HTML版は参照元を列挙できて便利
公式のテストケースがある
Realmとは
辞書引いたら「レルム」って出てきました
exotic objectの話
TC 39
39番目?
.es: スペインのTLD
español
TC39の日本語版
次回について
V8の記事は読まなくていいかなー
4ページあって長い
開催時間帯は?
今回と同じでよさそう?
Go仕様輪読会は19時開始
ちょっと早かった気がするので今回は19:30にしてみた
開催頻度は?
毎週はきつそう
全部読むなら高頻度でやろうと思ってたけども
Go仕様輪読会と同じく2週間に1回やろう
読みたいところを読み尽くすのに1年〜1年半ぐらいと見ている
淡々と開催していく
都合が合うときだけ参加する感じで
人が入れ替わっていくのも自然なことだと思う
次回開催日は?
1/18(火)予定
正月休みを避けたり、他の勉強会と連続するのを避けたり
Meetのログ
あなた19:31
あなた19:32
Hiroshi Muto19:33
視聴枠の人も記載したほうがいいですか??
0942 yebis20:09
厳密性を犠牲にして言語全体の概要をざっくり説明するパートだった気がする > overview
0942 yebis20:27
読み方ガイドググってたら「ES6あたりはまだ通読できる規模だった。2020は誰も通読してないよ」みたいなコメントありましたね
0942 yebis20:32
(realm is 何、自分も思ってました)
Ryo Okubo20:33
realm is レルム
岡本済20:36
0942 yebis20:37
あなた20:42
20:53まで休憩
岡本済20:43
再開時に遅れた方にも録画の確認もらうとよいかもです
あなた20:43
確かに!そちらまた後で確認します🙏
0942 yebis20:54
1 Preludeは前書きなんであまり真面目に読まなくても良い気がします
Kazuya Yajima21:10
ファイケー
0942 yebis21:18
nannycam, 子守り用ビデオらしいです
岡本済21:18
0942 yebis21:19
JavaScriptのやばみ的な?
0942 yebis21:28
0942 yebis21:34
生物標本みたいに固定してしまうってことかなー
青山尚紀21:39
https://youtu.be/rlRnE7zzc2Y