質問: ※回答文で指摘されているように、私は「仕様」という言葉の意味を履き違え文章を記していたようです。。恥ずかしい。。;; ### 経緯 ウェブフロントの関する記事を読んでいると分からない単語がいくつも出てきます。 最近分からなかったのは「DOMはAPI」であるという文脈です。 私の中でのAPIの解釈は、外部のプログラムを簡単に使えるようにしたもの、またはそのプログラムを使わせてもらう為の窓口という解釈でした。 DOMとはjsファイルから容易にHTMLファイルを弄れるやつくらいの解釈です。 なので「DOMがAPI」という文脈を読んだ時の私の頭の中は 「APIって外部のプログラムの簡単に使えるあれでしょ、DOMってjavascriptという言語の仕様の一部なんじゃないの。何でDOMがAPIなの?」 という感じでした。 ### 調べてみたこと考えてみたこと ということで疑問だったので調べてみることにしました。参考にしたのが以下の記事です。 javascript wiki API wiki API MDN 記事の内容は難しく全ての内容は分かりませんでしたが、何となくの意味は分かったような気がします。 私が知っていたAPIの意味は狭義の意味で、いわゆる「webAPI」や「サードパーティAPI」。 しかし、APIにはいくつか種類があり、ブラウザAPIと呼ばれるものもあるんですね。 > > 前述のとおりAPIは各種システム/サービスがそのシステム/サービスを利用するアプリケーションに対して公開するインタフェースである。APIの重要な役割は、システム/サービス提供者が公式に仕様(外部仕様)を定義し管理している各種機能を利用するための操作方法(インタフェース)を提供することである。 > > > 上記はAPI wiki からの引用文です。この引用文にはAPIは外部の仕様を指すという旨が書かれています。 ブラウザAPIというものがあるのは理解したけれど、でも何でAPIという呼ぶのは依然よく分かりません。 前述した通りAPIは外部の仕様、もしくはそのインターフェースを指し、DOMはjavascriptの仕様の一部だと思っているからです。 そんな訳で、そもそもDOMとはjavascriptの仕様ではないのかもしれない。そもそもjavascriptって何だ?というところに疑問が深まっていきました。 そんな時に以下のサイトを思い出しまsi た。javascriptに関する説明を記載したウェブサイトです。 javasscriptの説明 画像はリンク先のサイトのスクリーンショットです。ECMAscriptという仕様に色々なものが肉付けされ、それがjavascriptだという旨が書かれています。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/81f6a8d760e37773f81d3f6cb0d98176.png) ### 質問 ECMAScriptという仕様に、DOMやwebglなどの色々な仕様をあわせたのがjavascript。ECMAscriptという仕様から考えると、DOMやwebglは外部の仕様なので、APIという枠組みに入る。 自分なりに考えてみた結果、こんな感じの解釈になったのですが、はたしてこの解釈は当たっているのでしょうか?教えて欲しいです。 ※正直こんな言葉の意味について深く知る必要は全くないのですが、疑問を深堀りしていったら凄く気になってしまって質問を投稿しました。 ### 追記 言葉を意味を間違え文章を書いていたため、改めて質問文を書きます。 > > APIとは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。 > > > 引用文のリンク APIとは外部のプログラムを使う為の手順や規約だという旨が書かれています。 ※文脈によっては手順や規約ではなく、外部のプログラム自体をAPIと呼んだりするみたい? そしてDOMはAPIです。 webAPIを使う時はAPIシークレットとAPIキーが必要でした。しかしDOMを用いてHTML操作をする時、特別な手順などを特にに意識することなくHTML操作が出来ました。なのでDOMはJavascriptという言語の中の一つの仕組みだと思っていました。 しかしAPIということは外部のプログラムもしくはその手順。ということはDOMはjavascriptの中の一つの仕組みではないのかな。 もしかするとECMAscriptという標準から考えると、DOMは外部のプログラムということになるから、DOMはAPIという括りに入るのかな? という感じです。表現がつたなく言葉がくだけてしまいましたが、こんな感じです;;
回答: > > 記事の内容は難しく全ての内容は分かりませんでしたが > > > 次の2つは別のものとして考えます。 1. `JavaScript` はECMAScript の仕様に基づいて実装された「**プログラミング言語**」です。 2. `API` はご質問でもリンクされている API MDN の「APIって何?」のセクションの通りです。 > > Application Programming Interfaces (APIs) は、開発者が複雑な機能をより簡単に作成できるよう、プログラミング言語から提供される構造です。複雑なコードを抽象化し、それにかわる簡潔な構文を提供します。 > > > 「プログラミング言語から提供される構造」とありますが、 「プログラミング言語で利用できるように提供される構造(機能)」と解釈すると良いかもしれません。 APIは、**他のプログラミング言語**でも実装され利用できたりもします。 * DOM はマークアップ文書の作成、変更を簡便にするAPI * WebGL は OpenGLの機能を絞ったものでビデオカードの3Dグラフィックス描画を簡便にするAPI * XMLHttpRequestやfetchは HTTP通信を利用してデータのやり取りを簡便にするAPI APIは「webAPI」や「サードパーティAPI」とカテゴライズして表現されることもありますが、 プログラミングにおいて、何かしらの処理を簡便にするために提供されます。