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

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

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

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

Q&A

解決済

3回答

1147閲覧

ES2015(ES6)とは?

usui_orange

総合スコア38

JavaScript

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

0グッド

0クリップ

投稿2019/03/25 09:42

編集2019/03/25 09:42

経緯

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

調べてみたこと

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

引用元

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

疑問

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

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

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

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

引用元

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

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

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

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

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

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

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

guest

回答3

0

ベストアンサー

①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/25 10:32

編集2019/03/26 05:09
miyabi-sun

総合スコア21158

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

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

usui_orange

2019/03/30 07:52

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

0

仕様

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

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

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

ECMAScript

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

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

Re: usui_orange さん

投稿2019/03/25 10:20

think49

総合スコア18162

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

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

0

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

投稿2019/03/25 09:56

m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問