karino2 / karino2.github.io

This site is auto generated from issues.
7 stars 2 forks source link

Exploring ES6 #196

Open karino2 opened 6 years ago

karino2 commented 6 years ago

あらすじ

なんだかんだでちょっとしたJSを書く機会が無くならないので、雑用を楽に書く為にES2015の便利機能も使いたいな、と思うようになる。 AndroidとPCの最新のChromeで動けばもう使ってもいいか、という感じなので。

MDNを見つつアロー演算子やfor of、テンプレートリテラル、destructuringあたりは使っていて、結構便利だな、と思ってた。ここらで一通り他の事も知っておいても良いかな、という気分になる。classと以前のコンストラクタやprototypeとのインターオペラビリティとか、generatorとかをちゃんと知りたい。 ただ趣味でちょっと書く程度なので、本気でスペシャリストになる気は無い。 古いブラウザとかBabelとかは全然興味無い。

自分は古い話になるがECMAScript 3は業務で使ってたレベルでプロフェッショナル。 なので、それを前提に、新機能についてちゃんと解説されてる本は何か無い?とomo先生に聞いたら、あんま詳しくないがExploring ES6とかどうなんだろう?と言われた。
web版をチラチラ読んだら悪く無さそうなので、epubを買って読む事に。

以前はpdfにこだわってたが、最近はepubもコード引用とかも結構まともに書かれるようになったし、久しぶりに起動したらPlay Booksも大分良くなってたので、読むのはepubでいいかなぁ、という気分に。一応pdfもダウンロードしておくが、多分見る事は無い気がする。

ページ送りとかが早いの大切だよねぇ。Perfect Viewerとかそろそろ辛い。誰か直さないかなぁ。forkしようかなぁ。でもなぁ。まぁいい。

karino2 commented 6 years ago

22.6のExampleは飛ばし読み

lazyにパースとか出来ていいよね、みたいな話はさすがにもういいだろう、という事で飛ばし読み。

karino2 commented 6 years ago

という事で22章だいたい読み終わった。 あんまPythonと変わらんね。

この章は同じ事がちょっと繰り返されたる気はしたが、知りたい事は一通り知れた感じはした。

karino2 commented 6 years ago

Part 5 Standard Library

正規表現とPromiseの話。

正規表現はES5の時点でも知らない事は多いので、へーって以上の感慨は無し。 必要になった時に調べれば良いとは思うけれど、たまには新機能を知っておいて正規表現事情をアップデートしておくのは悪い話じゃない。

24, 25は合わせてプロミスの話なのだが、全体的にいまいち。 説明しようとする事柄自体が割と単純なのにそれをあの手この手で説明しようとしてかえってわかりにくくなってる。

ただ、fulfillされたpromiseにthenしても非同期だ、というのは知らなかった。 というか昔nodeで使った時はその場で実行されてたような?違ったっけ? なんにせよ最新の情報にアップデートである。

karino2 commented 6 years ago

25.9と10 promiseの正しい使い方

これまで適当に使ってたのでこの辺の原則は勉強になった。 特にresolve()のthenにしてsynchronousな関数のexceptionをrejectにするのは良さそう。

それにしても2018年にもなってES6互換のpromiseライブラリを使っておけば将来簡単にES6に乗り換えられるよ!という話は要らないと思うんだよなぁ。 昔のブラウザをどうサポートするか、は、ES2015とは別の話題と思うのだよ。 何をどこまでサポートするかも人によるし。

なんか全体的にpromiseの章だけ時代が古い感じがする。 arrow関数使わないせいでthis退避したりするし。 というかarrow関数使ってよ。

karino2 commented 6 years ago

最後まで読む

Proxyはいろいろあったが、他はさらっと紹介されてる位だった。 ProxyもJavaのをシンプルにした程度なので、難しい事は無い。

関係ないけどObjectリテラルでさらっとハンドラが書けるのはいいね。 Objectリテラル+メソッドの組み合わせは良い。

karino2 commented 6 years ago

全体的な感想

最後に全体的な感想を書いておく。

karino2 commented 6 years ago

この本の感想

総じて良い本だった。 一部無駄に同じ記述が繰り返されたり、 トピックの取捨選択に同意出来ない所などもあるが、技術情報として質は高く十分必要な範囲は提供していると思う。

タイトルとしてはES6となってるが、内容はだいたいES2015になってるし、2017への言及もあるので、新しさという点ではちゃんと2015年以降の内容になっている。一部古い記述も残ってる気がするが、無視出来るレベル。

この本はES5までのJSに関してはかなり詳しい事を期待している。 別にそんなに細かい事情とかライブラリとかを把握してなくても読めるが(実際自分はそんな詳しくない)、少なくともES3とか、どこかのバージョンのECMAScriptとそのDOM周辺の話題は相当詳しい必要がある。

それは言語を一通り知っててコードを書ける、というレベルよりもう一段上で、言語のバグとしか思えない仕様とか落とし穴とか、処理系ごとの事情とかを前提としている。 またその上でいろいろ開発された裏技っぽいイディオムにもある程度経験が必要。 Arrayのサブクラスをどう作るか、みたいな事とか。

ただ完璧に理解してないと読めない、という訳では無くて、問題意識さえ共感出来れば十分だし、さらっとは説明がある。 それでもES5かそれ以前のESに相当詳しい必要はある。

また、ES6の本ではあるが、この本だけでES6が最初から分かる、という訳では無い。 ES5からあるがES6でもそのまま重要な言語機能などのトピックの幾つかは、本書では扱ってない。(Speaking JavaSciptという本への参照があるだけ)。 だから他の言語のスペシャリストだがJavaScriptは全然知らない、という人が、ES6を知りたくてこの本だけを読んでも、良く分からない所が多いし不完全。

karino2 commented 6 years ago

ただ、自分はそれはES6という特別な言語を対象にする以上不可避と思う。 ES6はブラウザ上で動くというその性質上、歴史や政治とはどうしても不可分で、そこまで含めないと本当の姿は見えてこない。 そしてそこまで含めようと思えば、一冊の本としてはES5までを前提とするのは正しい選択と思う。 むしろよくこれほど高い前提を置いた本を書けたものだ、と感嘆する。 これはleanpubで個人で書いたメリットだよなぁ。 技術書の商業出版に関わってる人たちは危機感を持つべき内容と思う。

karino2 commented 6 years ago

内容としてはES6の新機能について、簡単に使う上で知るべき事から仕様書に近いレベルの詳細までを説明していく、というスタイルで、実際一部は仕様書とほとんど変わらない書き方になってる。

ほとんどの人にとっては、詳しさという点では十分以上で、むしろここまで詳しく知る必要は無いと思う。ここまで詳しく知りたければ、どうせ仕様書読む事は避けて通れないのだから、そっちを読む方が良い気がする。

だが、使うだけの立場から始めて、ちゃんと間を全部埋めてあるので、必要な所まで各自が読めば良い、という使い方が出来る。 また仕様書の引用みたくなっている部分も割と「そこだけ知りたい」みたいな部分がカバーされてる事が多くて、なかなか分かってるなぁ、と好印象だった。

とりあえず使うだけの人向けの説明がいろいろ出てくるが、これはあんまり良く整理されてない印象で、同じ話題が何度か出てきて「あれ?この話どこが新しいんだ?」と無駄に頭を悩ませる所がちょこちょこあった。 ただこの位は内容を思えば許容範囲で、合格点以上と思う。 技術書は、伝えるべき事をちゃんと網羅する方がそうしたぱっと見の瑕疵を取り除くより重要だよな、というのが読んだあとの感想。

karino2 commented 6 years ago

既存の議論についてのブログへのリンクが多いのもちょっとおもしろい。 界隈の議論が垣間見れて、勉強になる。同意する気にならない意見も幾つかあったが、それが本書の技術的内容に影響は与えてないので、良いバランスで書かれていると思う。

そういう訳でES6の新機能の詳細を知りたい、という人はこの本を読むべきで、そしてこの本だけで十分と思う。 この本で不足する人もこの次は仕様書で良かろう。 という事で前提条件を満たしている人にはとてもオススメ。

karino2 commented 6 years ago

ES2015という言語自体の感想

好きという訳では無いが、JSが必要な時にES2015が使える事には感謝の念が湧く、という感じ。

この言語をメインの言語として自分のキャリアを構築したくは無いなぁ。 ちょっと書く機会がある、くらいはいいけど、この言語の専門家として生きて行きたくはない。 歴史的な事情で仕方ないとは言え、好きにはなれない事は多い。

karino2 commented 6 years ago

一方で、好きじゃない部分は使わないで、好きな所だけつまみ食いしてweb上のちょろっとした事をやるには、大分楽しくやれるようにはなってる気がする。 ES5よりはずっと良い。 これが使われるようになったのはありがたい。 感謝して使っていきたい。

アロー関数、オブジェクトリテラルでのメソッド定義、for of、iterable、Destructuring、spreadなど。 この辺一通り使わせてもらえるのはありがたいね。

karino2 commented 6 years ago

言語評論家というか、鑑賞対象としては凄い言語だと思う。 多くの政治的対立がある中で、これだけドラスティックな変化を同意にこぎつける為の考え抜かれた仕様の数々。 多数の人間のたゆまぬ努力の結晶という感じで、出来上がった物を見るのは凄く感動する。 同意に至れなかった所や、同意に至る為に犠牲になった所なども透けて見えて、そのドラマ性が凄まじい。 こんな言語は他に無い。

いやぁ、良く人類がこの難問に大して、これだけの答えにたどり着けたもんだよ。 政治的な物がここまで高度になりえるのか、というのは驚嘆する。 やれば出来るもんだな、と人類を見直した。

でも自分はkotlinとPython書くよ、うん。