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

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

ただいまの
回答率

87.61%

ES2015(ES6)とは?

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 720

score 38

経緯

webに関する記事を読んでいると分からない言葉が沢山出てくるので、webに関する技術を調べるようになりました。
タスクランナーとかトランスパイルとかそういう言葉の意味を調べてみるって感じです。
そうやって言葉を調べていくうちに、ECMAScriptという言葉を知りました。

調べてみたこと

引用テキスト「ECMAScriptとはEcma Internationalによって定められるJavaScriptの標準規格です。」

引用元

と引用先のウェブサイトに書いてありました。

疑問

①ECMAScriptという言葉を初めてみた時、自分の知らない言語の名前が出来たというふうに思いました。ですが、javascriptの標準規格ということは、僕がドットインストールで学んだjavascriptはECMAScriptという種類のものだったということなのでしょうか?

②Javascriptの標準規格という言葉を裏返すと、javascriptのはいくつか種類があるということでしょうか?

③仕様という言葉の意味について

「皆さんが普段何気なく使っているJavaScriptですが、その仕様はどこで決まっているのでしょうか?」

引用元

自分は仕様という言葉についての意味が分かっていないところがあります。
例えば、パソコンの仕様という言い方をすればパソコンのスペックのことだろうなあと思うんですね。
ただjavascriptの仕様をjavascriptのスペックと読み替えるのは絶対に違いますよね。。。
仕様という言葉の意味について少し調べてみたんですが、どうも分かません。
上の引用文で用いられてる「仕様」という言葉の意味について教えて欲しいです。

※1番、2番の質問は、質問というよりも確認に近いいので、解釈が正しければ"イエス"とか"はい"だけの回答で結構です。もし間違っていれば詳しく教えて欲しいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+8

①ECMAScriptという言葉を初めてみた時、自分の知らない言語の名前が出来たというふうに思いました。ですが、javascriptの標準規格ということは、僕がドットインストールで学んだjavascriptはECMAScriptという種類のものだったということなのでしょうか?

これだけの情報では、どちらとも言えません。

例えばドットインストールではChromeのデベロッパーツールで動かしてみましょう…みたいに限定していませんでしか?
もしそうならば、Chromeに搭載されているJavaScriptの事を指しているはずです。

ChromeのJavaScriptはECMAScriptという仕様を厳密に守っている挙動をするので、
ほぼそのコードを他のブラウザに持っていっても大丈夫です。
という訳で仕様に限りなく近い挙動を学習出来ていると考えて差し支えありません。

詳しくは3でまとめて解説します。

②Javascriptの標準規格という言葉を裏返すと、javascriptのはいくつか種類があるということでしょうか?

その通りです。

ベンダー毎にJavaScriptの実装(エンジン)は異なりますし、
同じFirefoxというブラウザ一つをとっても、実行速度を改善する為に何度もエンジンを作り直しています。
Chromeなんかも同じV8エンジンですが、細かいバージョンアップを繰り返しているので内部ロジックはコロコロ変わっているはずです。

つまりブラウザの数 * ブラウザのバージョン番号の数だけエンジンの実装が存在します。
ただしオープンソースで提供されているV8エンジンを流用しているブラウザなんてのもありますので、
全てが全て自前の独自仕様というわけではありません。

③仕様という言葉の意味について

歴史に知っておいた方が理解が捗ると思いますので解説していきます。

そもそもJavaScriptのエンジンは、
Javaのように誰かが作ったものを全世界で使っているわけではありません。
ブラウザ作ってるベンダーは自前のエンジンを用意して、
他のブラウザに対するアピールポイントとして利用しています。

質問文で気にされているポイントにフォーカスするならば、
全てのブラウザは自前で用意したエンジンで実行するので同じ動作をする保証はありません。

同じ動作しないってマジかよ…
ここで大昔のIEとネットスケープ(Firefoxの前身)の二大ブラウザがシェアを争っていた1990年代にさかのぼります。
当時はJavaScriptの統一仕様というものはなかったので、
「俺のブラウザのJavaScriptにはこんな機能や関数があるんだぜ」
「なんの!こっちのJavaScriptにはあんな機能が搭載されているんだ!」
……と独自仕様を盛り込みまくる事で自社のブラウザの優位性を語っていました。

でも、ちょっと待てよ。
AのブラウザでしかJavaScriptのコードが動作しないって、Webサイトの閲覧者相当困らないか?
…となるわけですね。

結果としてWebサイトは動作しない独自仕様だらけになってしまいました。
なので当時は「閲覧者が困るので共通部分しか使わない!JavaScriptの実行とかもってのほか」
…という防御的な姿勢が一般的であり、殆どのWebサイトを公開する企業はJavaScriptを利用していませんでした。

そこで、ECMAという団体がECMAScriptという統一規格の仕様を作成し、
ブラウザ作ってる団体に「俺の作った仕様で動作するように従いなさい」と勧告するに至ります。

例えばfalse == nullを比較した結果はfalseになりますよという事が明記されてますし、
Arrayという配列型はこういうメソッドを所持して、こんな挙動をして下さいねみたいなことまで事細かに記載されています。
ECMAScriptの仕様通りに動作しないJavaScriptのエンジンは、
勧告に従って作られてない欠陥品として世のエンジニアやユーザーから見放されることになります。

この流れに世界中のブラウザのベンダーが合意し、全世界共通になっていきました。
1990年代後半に作られたECMAScriptは少しずつ浸透し、
今日では有名所のブラウザのほぼ全てのJavaScriptエンジンはECMAScriptに準拠しています。

新しいバージョンのES6以降に関しては仕様が新しすぎるので、
IE11等の古いブラウザでは準拠しきれてないものもありますが、
ES5までならJavaScriptが動作すると謳っているブラウザはほぼ完璧に対応しています。

この辺の歴史を考慮に入れて考えると、

  • ECMAScript: ECMAが作った仕様
  • JavaScript: ブラウザ作ってる団体が実装したエンジン

こういう違いがあります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/30 16:52

    なるほど、そういうことだったんですね!
    理解が深まりました。ありがとうございます!

    キャンセル

+4

仕様

仕様を元にアプリケーションを作ることを実装するといいます。

現在のブラウザはHTML, CSS, JavaScript等のWeb標準仕様を実装しています。
ブラウザが正しく実装すれば、Web標準仕様に書かれている内容は全てのブラウザで同じように動作します。

Web標準仕様に書かれていない機能はそのブラウザ固有の機能であり、たとえ複数ブラウザで同じ名前の関数が定義されていたとしても、同じ挙動とは限りません。

ECMAScript

ECMAScriptがブラウザに実装されることで、全てのブラウザのJavaScript基本機能が同じように動作する事を期待できます。
ブラウザに実装されているJavaScript関連仕様はECMAScriptだけではなく、他にDOM, XMLHttpRequest...etc等がありますが、ECMAScriptはJavaScriptの骨格となる仕様なので、そこが標準化されるだけでも大分コーディングが楽になります。

ECMAScriptは1年毎にアップデートしており、現在の正式版における最新版はES2018です。

Re: usui_orange さん

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

バージョン
という認識です。
HTML5やCSS3のようなもの。
ブラウザによって対応されてる機能があったりなかったりしますしね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る