質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2788閲覧

今Javascriptの勉強を始める場合、教科書はどのECMAScriptに対応しているべきか

退会済みユーザー

退会済みユーザー

総合スコア0

ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/11/17 06:19

Javascriptの勉強を趣味で始めようと考えています。
プログラミング経験はCとPythonがちょろっと触れる程度です。
ブラウザの簡単な欲しいアドオンなんかを自作できたらいいな…くらいが目標です。

JavascriptにはECMAScriptという標準規格があるそうですが、勉強する際これのバージョンはどれがよいのでしょうか。教科書を選ぶ際の参考にしたいです。

自分で調べた範囲では、「ES6(2015年)での変更が多いからそれに対応したもののほうが良い」とかの意見がありました。
今手元にある購入済みの教科書「徹底マスター Javascriptの教科書」だと、ES5をベースに解説しES6の新機能についても詳しく解説すると書かれていました。
今勉強するにはこの本の内容で大丈夫でしょうか。それともすでに情報が古いから別の教科書を使ったほうがよかったりするのでしょうか。

(最新のバージョン対応の教科書を選ぼうとすると絶対数が少ないでしょうし、上記の教科書は内容が面白そうだった(数学の話題とかも載っている)ので選んだので今から変えるのも腰が重いのですが……)

どなたか意見を書いてくださると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/11/17 06:32

そもそも書籍を選ぶ時点で「最新」からは外れることは認識されてますよね?
hentaiman

2019/11/17 07:24

本の内容はともかく、面白そうな本で学習する方が良くありませんか? 読み辛かったり興味の湧かない最新の書籍で勉強してもやる気でなくて学習効率下がりませんか?
think49

2019/11/17 08:00 編集

シンプルに仕様選択のべき論でいうなら、当然、最新仕様を学ぶべきですが、「手段と目的の一致」がなされているのか、不安が残る質問ですね。
dameo

2019/11/17 08:42

多分時代の流れ的なものを加味した、流行のようなものを聞かれてるのだと思いますよ。 趣味とおっしゃってますしね。 個人的には今から始めるならES6くらいがボリュームゾーンだと思います。 ES2017ですがasync/awaitも使えるようになってた方がいいです。 古い環境のソースを読まないといけないときはES3くらいまで遡るときもありますが、そちらは必要なときに知ればいいと思います。
退会済みユーザー

退会済みユーザー

2019/11/17 09:34

コメントありがとうございます。 >m.ts10806さん >そもそも書籍を選ぶ時点で「最新」からは外れることは認識されてますよね? 今日の時点での「最新」について書籍がないことは(想像で)認識してます。 書籍が出てる範囲でのバージョンの最新版が話の対象です。 >hentaimanさん >読み辛かったり興味の湧かない最新の書籍で勉強してもやる気でなくて学習効率下がりませんか? もちろんそうなのですが、「勉強した内容が全く意味のないことだとわかる」ことが一番やる気を削がれることだと思うので最低限それだけをまず避けたかったんです。 >think49さん 手段(Javascript)の中身を知らない段階なので目的(何か作る)の中身すらもはっきりとは決められてません……。目的がはっきりしていてそれの達成だけが唯一の動機なら極端な話何を学んで作ろうとしても同じ事ですが、まずは王道というか標準的な手段に何があるかを聞きたいです >dameoさん >多分時代の流れ的なものを加味した、流行のようなものを聞かれてるのだと思いますよ。 大体そんな感じです。何が普通なのかを最初に知りたかったんです。 >個人的には今から始めるならES6くらいがボリュームゾーンだと思います。 >ES2017ですがasync/awaitも使えるようになってた方がいいです。 >古い環境のソースを読まないといけないときはES3くらいまで遡るときもありますが、そちらは必要なときに知ればいいと思います。 ありがとうございます。 それなら手持ちの教科書で一応大丈夫そう?ですね。
guest

回答1

0

ベストアンサー

必要性

端的にいえば、「必要なら学び、不要なら学ばない」
これだけです。
必要性を図る目安は、作れるか、作れないか

作ろうとしているものがES5の範疇で作れるなら、最新仕様を学習しなくても良い(MAY NOT)、といえるでしょう。
ただし、必要性に関係なく、自身の知見を広げる目的なら、最新仕様を学ぶべき(SHOULD)です。

しかし、それを判断できるのは、実際に作ろうとしている takenoko_sand さんです。
自分自身が持ちうる知識(ES5)で作ることを試みて、その結果で判断してください。
それが世の多くのプログラマが意識せずともやっている「必要になったら学ぶ」という姿勢です。

Exploring ES2018 and ES2019

ところで、ES最新仕様の書籍とは**『Exploring ES2018 and ES2019』**の事ですか?

最新仕様を体系的に学びたいのであれば、書籍は良いと思います。
私は所持していないのでレビューはできませんが、"Dr. Axel Rauschmayer" でぐぐれば、著者の事が分かると思います。

後方互換性

Pythonはサーバサイドで動く言語なので、Python2からPython3にバージョンアップする際、プログラマの意志でサーバの環境を変更して対応することができます。
よって、サーバサイド言語は後方互換性のないバージョンアップをすることが可能です。

一方、JavaScriptはクライアントサイドで動く言語(Node.js等のサーバ環境を除く)です。
仮にECMAScriptで「後方互換性がないバージョンアップ」がされた場合、最新バージョンに対応していない古いブラウザを使用しているユーザを切り捨てる事になります。
「HTML4→XHTML2」の移行に失敗した(IE6のシェアが下がらなかった)経緯から、クライアントサイドの言語(HTML,CSS,ECMAScript...etc)は、出来るだけ後方互換性を保つバージョンアップをする傾向にあります。
だからこそ、typeof null の仕様バグはいつまでも残り続けますし、document.all故意にEMCAScript仕様に違反する仕様(HTML Standard)が策定されているのです。

JavaScript

1console.log(typeof null); // "object" (本来は "null" を返すべき) 2 3console.log(Boolean(document.all)); // 存在している 4 5if (!document.all) { // この挙動は故意にECMAScript仕様に違反している (HTML Standard) 6 console.log('document.all is falsy') 7}

私の知る範囲では、後方互換性がなくなった更新は、独自拡張から逆輸入して標準化された 「Object.prototype.__proto__ の削除」ぐらいですね。

そんなわけで、ES5は現在の最新ブラウザでも通用する仕様です。


※仕様を読む段階になれば、内部動作が大きく変化している部分はありますが、同じコードを書けば、同じ結果が返ってくるという意味での後方互換性は担保されています。

  • Object.prototype.toString[[Class]] ではなく、@@toStringTag を返すようになりました
  • new Array の要素列挙に Array.prototype[@@iterator] が使用されるようになりました

Re: takenoko_sand さん

投稿2019/11/17 07:00

編集2019/11/17 10:21
think49

総合スコア18156

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/17 09:03

すみません、多分think49さんが「質問者が当然持っているだろう」と考える前提知識とか経験を私が持っていないような気がするので重ねて質問させてください。 >自分自身が持ちうる知識(ES5)で作ることを試みて、その結果で判断してください。 返答の感じから察するに、ES5は今の環境でも普通に動くしそれから学び始めるのも特別変なことでもない、という認識でもいいのでしょうか。 例えば初めてプログラミングを学ぶ友達がPython3ではなくPython2をやろうとするのを見かけたら「3のほうがいいんじゃない」ということぐらいはするんじゃないか、とも思うのですが(この例自体が間違っていたらすみません、メジャーでない仕様よりメジャーなものから学んだほうが(一般論として)いいと言えるのでは、ということです) 今回みたいな「ES5以前を学ぼうとしている」ことは別段止めるようなことでもないという認識でよいのでしょうか。 極端に聞けば「ES5は今でも動く」は真でしょうか。多分正しいとは思うんですが自信をもってはいと答えられないくらいには知識が無いです。 仕様が変わったから古い情報なんて学んでも(自分が使う分には)無駄なだけだよ、動かないかあるいは必要のないめんどくささを味わうだけだよ、とならないかが心配だった、というのが元の質問を投稿した意図です。 作りたいものが作れるならなんでもいい、というのも正しいと思うのですが、まず「何が(仕様上)作れるか」を知れる前の段階ですし、どうせ始めるなら余計な小道に入り込んで出てこなくなったりしないように標準的な道の方角くらいは聞いておかないと、と思ったので……。
think49

2019/11/17 10:22

親記事に追記しました。 >後方互換性
think49

2019/11/17 10:27 編集

今、あなたが学習開始段階でES2019を学ぶ方向に方針変更できるのなら、ES2019を学ばない理由はないと考えます。 ES2019に出来なくて、ES5に出来る事は「ES2019に未対応なブラウザでも動く」という事ぐらいです。 https://caniuse.com/https://kangax.github.io/compat-table/es6/ やMDNを見れば、対応状況は大体わかります。 今、足を引っ張っているのはIE11なので、対応させるブラウザ次第では古いバージョンを採用する事はありえます。
退会済みユーザー

退会済みユーザー

2019/11/17 11:09

追記読みました。非常に助かります。 ES2019を学ぶ場合、教えていただいたDr. Axel Rauschmayerの教科書がよさそうなので検討してみます。無料なのがありがたいです。(英語読むのが大変ですがそれもまた勉強だと思えば)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問