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

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

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

DOMは、Document Object Modelの略で、HTML文書やXML文書をアプリケーションから利用するためのAPIです。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

2144閲覧

DOMはAPIという表現について

pegy

総合スコア245

DOM

DOMは、Document Object Modelの略で、HTML文書やXML文書をアプリケーションから利用するためのAPIです。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

1クリップ

投稿2020/10/21 05:34

編集2020/10/21 05:37

普段の作業をしていて、AmazonやFaceBookのWEBAPIを利用することがあります。

この文脈でのAPIは私にとっても非常にわかりやすいです。
APIはソフトウェア(又はアプリケーション)とソフトウェア(又はアプリケーション)をつなぐ橋渡しのようなものとして解釈しています。

例えば:
「私」が自分の構築するAアプリケーションをより、効率的・便利に開発するための「外部のAMAZON」が提供する「機能や情報(API)」を「PHPやXML」で利用する。
つまり、「Aアプリケーション」と「AMAZONの機能や情報」を橋渡ししてくれるようなAPIをAMAZONが提供してくれていて、それが一般に公開されているから私も利用できるということで納得です。

さてここで:
DOMのドキュメントを読むと以下のように説明がされています。

Document Object Model (DOM) は、ウェブ上の文書のコンテンツと構造からなるオブジェクトのデータ表現です。このガイドでは、簡単に DOM を紹介します。 DOM がどのようにメモリ内で HTML または XML の文書を表現するか、どのように API を使用してウェブコンテンツやアプリケーションを作成するのかを見てみます。

この文脈でのDOMはAPIの一種であるという点が理解しづらいのですが、
0. 「何」と「何」を橋渡ししてくれているのでしょうか?
→「私のアプリケーション」と「AMAZONの機能や情報」に相当するものがあまりピンときません・・

  1. 「誰」がDOMAPIを提供していて、その実態はどこに存在するのでしょうか

→上記例では「AMAZON」が提供していて、API自体AMAZONのサーバーに実態(例えばタイムリーなXMLデータ等)が存在すると推察しているがDOMの場合には「誰」がどこから提供しているのか良くわかりません。ブラウザベンダーがブラウザを通じてDOMAPIを提供しているということでしょうか?)

基本的なことで稚拙な質問かもしれず申し訳ございませんが、上記のような点からDOMにおけるAPIという表現が理解できず、質問をさせて頂きました。
宜しくお願い申し上げます。

raitehu👍を押しています

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

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

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

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

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

guest

回答4

0

ベストアンサー

「APIはソフトウェア(又はアプリケーション)とソフトウェア(又はアプリケーション)をつなぐ橋渡しのようなものとして解釈しています。

この解釈自体が適切ではありません。「プログラマー向けに公開している機能」全般がAPIに区分可能です。

投稿2020/10/21 05:49

maisumakun

総合スコア146018

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

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

maisumakun

2020/10/21 05:52 編集

Windows APIは基本的に、Windowsの上に置いたプログラムから使うためのAPIです。 DOM APIも同様に、ブラウザのHTML機能をJavaScript(など)から使うためのAPIです。 「橋渡し」という概念にこだわらないほうがいいです。
pegy

2020/10/21 05:56

コメントありがとうございます。 ①まず「API」という概念の中に、AMAZON WEBAPIのように「プログラマー向けに公開している機能」のようなものも含まれている。ただ、API自体はもっと広い概念なので、必ずしも橋渡しのようなイメージだけではとらえられないということtですね、 "DOM APIも同様に、ブラウザのHTML機能をJavaScriptから使うためのAPIです。 とコメント頂きましたが、これが使えるのはブラウザがそのような機能を備えている、または提供しているからということでしょうか? 宜しくお願い申し上げます。
maisumakun

2020/10/21 05:57

> これが使えるのはブラウザがそのような機能を備えている、または提供しているからということでしょうか? そのとおりです。
pegy

2020/10/21 06:08

承知を致しました、ありがとうございます。 DOMが適切にAPIとして動作するかはブラウザやブラウザベンダー次第ともいえるということですね。今のところ、開発していてDOMが適切に扱えないようなブラウザに出会ったことはないのですが・・ 御礼申し上げます。
guest

0

この文脈でのDOMはAPIの一種であるという点

どの文脈?

なんか「DOM = API」と勘違いをしてるだけだと思うけど、その文章で言及してるAPIって
The HTML DOM API
の話なんじゃないの?

コメントを受けて追記

文脈がわからなかったものの、MDNの他のドキュメントと照らし合わせて疑問に思われてる点は納得しました。

Document Object ModelのModelというのは要するに「型」の事なんで、それ自体をAPIと表現するのは個人的に物凄く違和感があり、おそらく質問者も同様に疑問を抱かれたと思いますが、その「型」が提供している「機能」はAPIそのものだという解釈はできるので、たぶんそういう意味なんでしょう。

投稿2020/10/21 05:46

編集2020/10/21 06:11
gentaro

総合スコア8947

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

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

pegy

2020/10/21 05:49

コメントありがとうございます。 例えば、https://www.javadrive.jp/javascript/dom/index1.html のような記事にも、ド頭にDOMはAPIであるような表現を当然とされているのですが、こういう場合には、断りなしにHTML DOM APIのこと指していると解釈して良いのでしょうか?
Lhankor_Mhy

2020/10/21 05:53

横からすみません。 MDNではAPIと表現しています。 ただ、仕様書ではAPIとは名乗っていません。(w3cでもwhatwgでも) > DOM は文書内のすべてのノードにアクセスし操作するためにコードをブラウザー内で実行することができるので、ウェブ上で最も使用されいる API のひとつです。 https://developer.mozilla.org/ja/docs/Glossary/DOM
Lhankor_Mhy

2020/10/21 06:00 編集

もう少し補足すると、たとえば、querySelectorAll は、W3Cの「Selectors API Level 1」が最初の仕様で、仕様書の名前にズバリ「API」とありますが、現在は、DOMの仕様に吸収されています。 https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll なので、「DOMはAPI」という表現はそれほど的外れではないと思いますが、「誰がAPIと言ったんだ」となると確かな根拠はないのではないかな、と思います。
pegy

2020/10/21 06:01

>Lhankor_Mhy様 コメントありがとうございます。実はまさに仰って頂いているような "ウェブ上で最も使用されいる API のひとつです。 のような表現がまさに知りたいのですが、もちろんWEB(HTTPといった規格)やサーバーが提供してくれているものではないと思うのですが、DOMを利用できるのはブラウザのおかげなのでしょうか?どこに備わっていて、我々はAPIとして使用することができると解釈するのが正しいのか厳密にわからず、お尋ねした次第でございます。
gentaro

2020/10/21 06:02

あぁ、なるほど。 うーん、「モデル」と名乗る以上、それ自体をAPIと呼ぶのは個人的にすごく微妙だと思うけど、DOMの仕様としてはそこにモデルの操作を含むことから「APIだ」という解釈もできる、という考え方になるのかも。
Lhankor_Mhy

2020/10/21 06:07

こういう時にウィキペディアを引くのは筋が悪いのでアレですが…… >広義ではソフトウェアコンポーネント同士が互いに情報をやりとりするのに使用するインタフェースの仕様である。 https://ja.wikipedia.org/?curid=2963 API=プロトコル仕様だと理解すれば、まあ納得できるかも。 (なお、違和感は共有するところです)
think49

2020/10/25 12:41 編集

私が「DOM API」という表現をする時は、 document.getElementById('foo') のようにJavaScriptのコードをイメージしますが、「DOM」という表現をする時は、Interfaceのセットに過ぎないので、 NonElementParentNode#getElementById https://triple-underscore.github.io/DOM4-ja.html#interface-nonelementparentnode のように、Interface名をイメージしています。 私がDOM APIという表現を使うときには特定の言語に実装されたメソッド/プロパティを指していますね。
think49

2020/10/25 12:46 編集

なので、 DOM API … document.querySelectorAll() jQuery API … jQuery() のように対比して使うことが多いです。 --- 結論としては「DOM = API」ではないと思います。 私は「DOM API」を特定の言語に実装された成果物として使用しています。
guest

0

ブラウザのJSでは、DOMのプロパティを変更するとブラウザに変更が起こります。つまり、JSからDOMを介してブラウザにアクセスをしています。こう見れば、ブラウザに対するインターフェイス(API)とみなせます。HTML DOM API はこのような主張です。

ただし、DOMそれ自体は単なるデータ構造に過ぎません。たとえばPythonなどでもDOMライブラリがあり扱うことができます。ブラウザ上のDOMはブラウザに対するAPIになっているという話です。

まとめると、

  • DOM: 単なるデータ構造(APIではない)
  • HTML DOM API: JSからブラウザへDOMをインターフェイスとして使ってアクセスする機能群

(ちなみに

DOM がどのようにメモリ内で HTML または XML の文書を表現するか、どのように API を使用してウェブコンテンツやアプリケーションを作成するのかを見てみます。

ここの文書はDOMはAPIであるとは言っていないと思います)

投稿2020/10/26 23:24

編集2020/10/26 23:38
pandanoir

総合スコア72

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

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

0

REST APIを理解すればDOMの件も理解できるのではないでしょうか?

投稿2020/10/26 23:59

enokiyo

総合スコア78

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問