[meta] 全体的な設計/ユースケース一覧
azu opened this issue · 27 comments
この本について 📖
この書籍はES2015以降をベースとしたJavaScript入門書となる予定です。
基本的なStableのECMAScriptのバージョンを扱います。
プログラミングをやったことがあるが、今のJavaScriptがよくわからないという人が、
今のJavaScriptアプリケーションを読み書きできるようになることを目標にする内容です。
(プログラミングが初めてという人が対象ではないです)
この本は、主に次の2種類から構成される予定です。
- 基本文法
- (応用)ユースケース
また、書籍として出版予定があります。
このIssueについて
新しいユースケースが思いついたら、新しいIssueを作ってここにまとめる。
Issue切るほどでもないアイデアを思いついたら、とりあえずここに書いておく形で利用しています。
その他全体的な構成についての意見を募集しています。 ✋
- こういう話も必要なのでは?
- JavaScriptを書いてていてこれを理解するのが難しかった(重点的にするべき)
- こういうユースケースがあるともっといいのでは?
- この本が分かりやすかった
- この機能の使いみちがよくわからない
といったようなコメントを書いてくれると参考になります。
基本文法
- 基本文法 #17
ユースケース一覧
自分が書いたTODO #4 でもEventEmitterを直で実装してたので、
EventEmitterを実装してみるというのも一つの話として面白いかも(ライブラリに近い)
MapとかSetとかを使う例として面白そう(WeakMapとも絡む気がする)
Array.from
は実際はRest Parametersの方がわかりやすい気がするけど
Observerの例
Observerパターンの実装は確かに良さそう
Immutablityに関する何かがあるととてもJavaScriptの癖が出る気がする。
===
、Nan.isNan
、Object.is()、Object.assign
とか。
レガシーな部分(isNan
とか)に対する新しいAPIとかがちょこちょこあるので、単にメソッドをなぞるだけでもいいけど、最近のライブラリ(React周りとか)はこの辺を上手く使って等値の比較だけで済むような仕組みをよくやってる印象。
この辺のJavaScriptにおける等値とその仕組みを上手く使った話があると、最近のライブラリを使った時に何でこんな書き方してるんだろってのはつかめるかもしれない。
前提としてオブジェクトの生成よりも、C++(DOM)との相互やり取りの方がコスト高いみたいな話があるんだろうけど、そこまではいらなくて単純なJavaScriptの世界で示せる上手い例があるとよさそう
Math
系と数字と浮動小数点数とparseInt
系の上手く扱うケースとして計算機を作ってみるというのはありがちだけど、ありそう。
(何か普通に難しい予感がしてるんだけど、普通の計算機をJavaScriptで書けるのかな)
(実際そういうものを求める層向けなのかは謎いけど)
Proxy APIとReflect APIを使ったテストライブラリみたいのを書いて、テストをしてみるみたいな話はRubyみたいな言語やってたりする人は面白いと思ったりするのかも
(Proxy APIを使ったテストみたいな話ってほとんど見たことないというだけ)
📝 Note: ProxyのtrapとReflect APIが対の概念というのは、言われないと気づきにくいのでそういうのを出したいだけ
https://twitter.com/ljharb/status/720847830156386304
Proxyまだちゃんと触ってないからあんまりピンときてない
Proxy/Reflectが Push/Pull になってるんですかね? この話流石に重すぎるのではって気はする
フォールバックの考え方をちゃんと書きたい気はする。
if ('serviceWorker' in navigator)
みたいな、動作環境によって使いたい機能があるかもしれないしないかもしれないっていうの、JS特有な気がするので
@laco0416 feature detectまじめにやると闇が深そう。
UA detectionから始まって、触るだけで例外投げるやつとか https://modernizr.com/ 見ろ的な感じになりそう。
feature detectがアプリケーションコードに入るのは、あんまり好ましくはない気がしてて、ライブラリとかpolyfillとかそういう層に収めて欲しい感じがする。
(最近、ECMAScriptの仕様レベルでもfeature detectionのための互換仕様が入ってたりしてるので、feature detectがすべて良しという話ではない気はしている。 tc39/ecma262#262 (comment) )
duck typing的な話ならプログラミング一般になるけど、こっちからの流れの方無難そう
マイクロタスク
HTTPパッケージ使ってローカルサーバを建てるとか
TODOで書けないもの
- 非同期
- 文字列操作 String.prototype系 + Regexp
- Ajax
- エラーハンドリング + try-catch
Ajaxを投げてレスポンスのJSONパースをエラーハンドリングする流れでカバーできそう
Wikipediaの検索APIを叩いてページ一覧を表示する
https://en.wikipedia.org/w/api.php?format=json&action=query&list=search&srsearch=JavaScript
Node-CLIで npmとcommonjs、外部ライブラリを使うユースケース
ファイルを読み込んで文字列操作なりして吐き出すツールっぽい
ユースケース一覧 to [meta] 全体的な設計/ユースケース一覧
Issueタイトル変えた。何かメタのメタ的なメモ欄が欲しくなったのでここで。
In the first 25 pages, the author has you installing 10+ software packages/addons... hardly something attractive for someone who is drawn to the name "Learning Javascript".
http://shop.oreilly.com/product/0636920035534.do
Learning JavaScript, 3rd Edition - O'Reilly Mediaでこういうレビューがあって、現実的にモジュールを使いまくる状況とはいえ、大量のモジュールをいきなり見せると面食らうのは確かにーって感じはした。
わかりやすさの技術 - やしお
分かりやすかった
#30 (comment) で話してたコードを入れたら構文レベルで、そのコードがECMAScript何なのか出してくれるやつを作った
学び方を学ぶというのはやっぱりテーマとして合ったほうがいい気がするので、そこに1セクションあったほうが特徴が出る気がする。
新しい仕組みを覚えるときに、良く抱える問題の一つとして フォルダ構成のベストプラクティス がある。これを一番最初に書いて欲しいと良く思ってしまう。
#140 でも話していたけど、やっぱりディレクトリ構成についてはユースケースで触れたほうが良い気がするなー
まったくの初学者はJavaScriptをどう学ぶべきか? 失敗しない学習法を考えてみた - WPJ
JavaScriptを学ぼうとしている人からよく聞くセリフに「ちょっとしたスライドショーを作ってみよう」があります。そして、たいてい下の2つのうちどちらかに陥ります。
Learning JavaScript の翻訳が出るそう。
Javaな人からプロトタイプチェーンがどう見えるか
- 基本文法
- ユースケース
と大きく別れた作りになるけど、2に入るときに2部ではユースケースを元に特定の実行環境におけるJavaScriptについて学ぶみたいな扉ページがあると良さそうと思った。
基本文法よりいっきに難しくなる気がするから、ここから先ではどういう環境でどういうことをするのかという前置きを入れて和らげたい感じする。
JavaScript Wayを見てたら、DOMの話に入る前にそういう前置き章があった。
Should new developers learn ES6 directly or should they grasp old JS first?
https://hashnode.com/ama/with-brian-terlson-cj6vu9vjv01nmo1wu8vmtt1x9#cj6zcu8oh013tnpwu68yysc40
Brian Terlsonの返事が面白い。
JavaScriptを学ぶときに、基礎から見ていくスタイルと新しいHigh LevelなAPIから基礎を掘っていくスタイルの両方あるという話。
この本では両方あるのかな。後者の傾向はあるけど。
JavaScript. The Core: 2nd Edition – ds.laboratory
デミトリーさんの用語定義
もう構成は変わらないと思うので、クローズする