Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[meta] 全体的な設計/ユースケース一覧 #6

Closed
4 tasks
azu opened this issue Mar 24, 2016 · 27 comments
Closed
4 tasks

[meta] 全体的な設計/ユースケース一覧 #6

azu opened this issue Mar 24, 2016 · 27 comments

Comments

@azu
Copy link
Collaborator

azu commented Mar 24, 2016

この本について 📖

この書籍はES2015以降をベースとしたJavaScript入門書となる予定です。
基本的なStableのECMAScriptのバージョンを扱います。

プログラミングをやったことがあるが、今のJavaScriptがよくわからないという人が、
今のJavaScriptアプリケーションを読み書きできるようになることを目標にする内容です。
(プログラミングが初めてという人が対象ではないです)

この本は、主に次の2種類から構成される予定です。

  • 基本文法
  • (応用)ユースケース

また、書籍として出版予定があります。

このIssueについて

新しいユースケースが思いついたら、新しいIssueを作ってここにまとめる。
Issue切るほどでもないアイデアを思いついたら、とりあえずここに書いておく形で利用しています。

その他全体的な構成についての意見を募集しています。 ✋

  • こういう話も必要なのでは?
  • JavaScriptを書いてていてこれを理解するのが難しかった(重点的にするべき)
  • こういうユースケースがあるともっといいのでは?
  • この本が分かりやすかった
  • この機能の使いみちがよくわからない

といったようなコメントを書いてくれると参考になります。

基本文法

ユースケース一覧

@azu azu added the Type: Meta label Mar 24, 2016
@azu
Copy link
Collaborator Author

azu commented Mar 28, 2016

自分が書いたTODO #4 でもEventEmitterを直で実装してたので、
EventEmitterを実装してみるというのも一つの話として面白いかも(ライブラリに近い)
MapとかSetとかを使う例として面白そう(WeakMapとも絡む気がする)
Array.from は実際はRest Parametersの方がわかりやすい気がするけど

Observerの例

@lacolaco
Copy link
Collaborator

Observerパターンの実装は確かに良さそう

@azu
Copy link
Collaborator Author

azu commented Apr 18, 2016

Immutablityに関する何かがあるととてもJavaScriptの癖が出る気がする。
===Nan.isNanObject.is()Object.assignとか。

レガシーな部分(isNanとか)に対する新しいAPIとかがちょこちょこあるので、単にメソッドをなぞるだけでもいいけど、最近のライブラリ(React周りとか)はこの辺を上手く使って等値の比較だけで済むような仕組みをよくやってる印象。
この辺のJavaScriptにおける等値とその仕組みを上手く使った話があると、最近のライブラリを使った時に何でこんな書き方してるんだろってのはつかめるかもしれない。

前提としてオブジェクトの生成よりも、C++(DOM)との相互やり取りの方がコスト高いみたいな話があるんだろうけど、そこまではいらなくて単純なJavaScriptの世界で示せる上手い例があるとよさそう

@azu
Copy link
Collaborator Author

azu commented Apr 18, 2016

Math系と数字と浮動小数点数とparseInt系の上手く扱うケースとして計算機を作ってみるというのはありがちだけど、ありそう。
(何か普通に難しい予感がしてるんだけど、普通の計算機をJavaScriptで書けるのかな)

@azu
Copy link
Collaborator Author

azu commented Apr 18, 2016

(実際そういうものを求める層向けなのかは謎いけど)
Proxy APIとReflect APIを使ったテストライブラリみたいのを書いて、テストをしてみるみたいな話はRubyみたいな言語やってたりする人は面白いと思ったりするのかも
(Proxy APIを使ったテストみたいな話ってほとんど見たことないというだけ)

📝 Note: ProxyのtrapとReflect APIが対の概念というのは、言われないと気づきにくいのでそういうのを出したいだけ
https://twitter.com/ljharb/status/720847830156386304

@lacolaco
Copy link
Collaborator

Proxyまだちゃんと触ってないからあんまりピンときてない

@lacolaco
Copy link
Collaborator

Proxy/Reflectが Push/Pull になってるんですかね? この話流石に重すぎるのではって気はする

@lacolaco
Copy link
Collaborator

フォールバックの考え方をちゃんと書きたい気はする。
if ('serviceWorker' in navigator) みたいな、動作環境によって使いたい機能があるかもしれないしないかもしれないっていうの、JS特有な気がするので

@azu
Copy link
Collaborator Author

azu commented Apr 18, 2016

@laco0416 feature detectまじめにやると闇が深そう。
UA detectionから始まって、触るだけで例外投げるやつとか https://modernizr.com/ 見ろ的な感じになりそう。
feature detectがアプリケーションコードに入るのは、あんまり好ましくはない気がしてて、ライブラリとかpolyfillとかそういう層に収めて欲しい感じがする。
(最近、ECMAScriptの仕様レベルでもfeature detectionのための互換仕様が入ってたりしてるので、feature detectがすべて良しという話ではない気はしている。 tc39/ecma262#262 (comment) )

duck typing的な話ならプログラミング一般になるけど、こっちからの流れの方無難そう

@azu
Copy link
Collaborator Author

azu commented Apr 19, 2016

@azu
Copy link
Collaborator Author

azu commented Apr 19, 2016

マイクロタスク

@lacolaco
Copy link
Collaborator

HTTPパッケージ使ってローカルサーバを建てるとか

@lacolaco
Copy link
Collaborator

lacolaco commented Apr 19, 2016

TODOで書けないもの

  • 非同期
  • 文字列操作 String.prototype系 + Regexp
  • Ajax
  • エラーハンドリング + try-catch

Ajaxを投げてレスポンスのJSONパースをエラーハンドリングする流れでカバーできそう

@lacolaco
Copy link
Collaborator

lacolaco commented Apr 19, 2016

Wikipediaの検索APIを叩いてページ一覧を表示する
https://en.wikipedia.org/w/api.php?format=json&action=query&list=search&srsearch=JavaScript

@lacolaco
Copy link
Collaborator

lacolaco commented Apr 19, 2016

Node-CLIで npmとcommonjs、外部ライブラリを使うユースケース

ファイルを読み込んで文字列操作なりして吐き出すツールっぽい

@azu azu changed the title ユースケース一覧 [meta] 全体的な設計/ユースケース一覧 May 24, 2016
@azu
Copy link
Collaborator Author

azu commented May 24, 2016

ユースケース一覧 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でこういうレビューがあって、現実的にモジュールを使いまくる状況とはいえ、大量のモジュールをいきなり見せると面食らうのは確かにーって感じはした。

@azu
Copy link
Collaborator Author

azu commented Jul 8, 2016

わかりやすさの技術 - やしお
分かりやすかった

@azu
Copy link
Collaborator Author

azu commented Jul 18, 2016

#30 (comment) で話してたコードを入れたら構文レベルで、そのコードがECMAScript何なのか出してくれるやつを作った

@azu
Copy link
Collaborator Author

azu commented Sep 4, 2016

学び方を学ぶというのはやっぱりテーマとして合ったほうがいい気がするので、そこに1セクションあったほうが特徴が出る気がする。

@azu
Copy link
Collaborator Author

azu commented Oct 1, 2016

新しい仕組みを覚えるときに、良く抱える問題の一つとして フォルダ構成のベストプラクティス がある。これを一番最初に書いて欲しいと良く思ってしまう。

https://gist.github.com/voluntas/14303cbf0a1a5fb47ac58c2682bfa877#%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E6%A7%8B%E6%88%90

#140 でも話していたけど、やっぱりディレクトリ構成についてはユースケースで触れたほうが良い気がするなー

@azu
Copy link
Collaborator Author

azu commented Dec 3, 2016

まったくの初学者はJavaScriptをどう学ぶべきか? 失敗しない学習法を考えてみた - WPJ

JavaScriptを学ぼうとしている人からよく聞くセリフに「ちょっとしたスライドショーを作ってみよう」があります。そして、たいてい下の2つのうちどちらかに陥ります。

@azu
Copy link
Collaborator Author

azu commented Jan 6, 2017

@azu
Copy link
Collaborator Author

azu commented Jul 22, 2017

Javaプログラマ向けJSの忘備録 - Qiita

Javaな人からプロトタイプチェーンがどう見えるか

@azu
Copy link
Collaborator Author

azu commented Jul 29, 2017

  1. 基本文法
  2. ユースケース

と大きく別れた作りになるけど、2に入るときに2部ではユースケースを元に特定の実行環境におけるJavaScriptについて学ぶみたいな扉ページがあると良さそうと思った。
基本文法よりいっきに難しくなる気がするから、ここから先ではどういう環境でどういうことをするのかという前置きを入れて和らげたい感じする。

JavaScript Wayを見てたら、DOMの話に入る前にそういう前置き章があった。

@azu
Copy link
Collaborator Author

azu commented Sep 15, 2017

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から基礎を掘っていくスタイルの両方あるという話。
この本では両方あるのかな。後者の傾向はあるけど。

@azu
Copy link
Collaborator Author

azu commented Nov 18, 2017

JavaScript. The Core: 2nd Edition – ds.laboratory

デミトリーさんの用語定義

@azu
Copy link
Collaborator Author

azu commented Jul 28, 2019

もう構成は変わらないと思うので、クローズする

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants