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

Open
azu opened this Issue Mar 24, 2016 · 22 comments

Projects

None yet

2 participants

@azu
Collaborator
azu commented Mar 24, 2016 edited

この本について 📖

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

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

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

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

このIssueについて

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

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

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

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

基本文法

  • 基本文法 #17

ユースケース一覧

  • TODOアプリ #4
  • Ajaxで何か #9
  • Node.js CLIアプリ #7
@azu azu added the meta label Mar 24, 2016
@azu
Collaborator
azu commented Mar 28, 2016 edited

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

Observerの例

@laco0416
Collaborator

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

@azu
Collaborator
azu commented Apr 18, 2016 edited

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

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

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

@azu
Collaborator
azu commented Apr 18, 2016

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

@azu
Collaborator
azu commented Apr 18, 2016 edited

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

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

@laco0416
Collaborator

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

@laco0416
Collaborator

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

@laco0416
Collaborator

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

@azu
Collaborator
azu commented Apr 18, 2016 edited

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

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

@azu
Collaborator
azu commented Apr 19, 2016

マイクロタスク

@laco0416
Collaborator

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

@laco0416
Collaborator
laco0416 commented Apr 19, 2016 edited

TODOで書けないもの

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

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

@laco0416
Collaborator
laco0416 commented Apr 19, 2016 edited

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

@laco0416
Collaborator
laco0416 commented Apr 19, 2016 edited

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

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

@azu azu changed the title from ユースケース一覧 to [meta] 全体的な設計/ユースケース一覧 May 24, 2016
@azu
Collaborator
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
Collaborator
azu commented Jul 8, 2016

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

@azu
Collaborator
azu commented Jul 18, 2016

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

@azu
Collaborator
azu commented Sep 4, 2016 edited

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

@azu
Collaborator
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
Collaborator
azu commented Dec 3, 2016

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

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

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