🧸

ブラウザレンダリングの仕組み

に公開
17

Discussion

NobkzNobkz

一般的に、機械語に翻訳する方法は2つあります。

一つは「インタープリタ」と呼ばれる方式です。
インタープリタでは、実行時にソースコードの内容を一行ずつ解釈して処理していきます。ソースコードを即座に実行開始できるため、開発や修正をテンポよく進めることができます。
しかし、同じコードを何度も実行するようなループ ( 繰り返し ) の箇所などでは、一度構文解釈した部分でも毎回最初から解釈と実行を行うので、実行速度が遅くなるという欠点があります。

とありますが、ここは明確に間違ってます。まず、インタープリタは機械語に翻訳する方法ではありません。インタプリタは、人間が読める言語で書かれたプログラムに対して、即座に書かれた操作を直接実行するものです。
また、「一行ずつ解釈して処理」も間違っています。おそらく、「逐一実行」のことだと思いますがこれは、一行ずつ実行して処理するものでありません。

JITコンパイラは、簡単にいうと上記2つのいいとこ取りをしたようなコンパイラです。
機械語に一気に変換するのでなく、中間言語に変換したあとに一行ずつコンパイルして実行します。中間言語のファイルを作ることでOSやCPUに依存しない環境で実行でき、インタプリタ形式よりも実行速度が早くなります。JITとは Just In Time の略で、ちょうど間に合う ( その都度 ) というような意味を持ちます。

このところもいろいろ勘違いしているように思います。中間形式に変換してやる方式のことを説明したのだと思いますが、JITコンパイルは実行時コンパイルするだけです。通常コンパイラは実行の前、事前コンパイルして、機械語を直接実行実行します。この辺、よく理解されてないように思います。

hoge20210510hoge20210510

こんなにいい記事なのに批判コメしかついてなくてかわいそう。

すごく参考になりました。

akiaki

ありがとうございます。頑張って書いたので、そう言っていただけてすごく嬉しいです。

hoge20210510hoge20210510

会社の人たちにこの記事を共有しましたが、みんなすごいと言ってました。

これからも頑張って下さい!!

TamayaTamaya

DOMはAPIではないと思うのですが…

shunshun

気になったので私も調べてみたのですが、Wikipediaには仕組みとかモデルと書かれていてAPIではないとありますね(参照元はDocument Object Model (DOM) Level 1 Specificationっぽいです)
https://ja.wikipedia.org/wiki/Document_Object_Model

他のページとか見てもAPIというよりは仕組みとか仕様と訳すほうが私はしっくりきました

nao86nao86

そのWikipediaの記載は誤りかと思います。
根拠に挙げてるのはおそらくw3cのこちらのドキュメントかとおもいますが、
そのなかのWhat is the Document Object Model?に冒頭で
「The Document Object Model (DOM) is an application programming interface (API) for HTML and XML documents.」とあるので、APIという記載は正しいと思います。

TamayaTamaya

なるほど。「ドキュメントにAPIと書いていた」ということですね。
APIという語が幅のある使い方をするようだな、と思いましたね。
DOMは"Model"だと理解すれば一般的な意味でのAPIとイメージが異なる気がしていて、
MDNでも表記がやや統一されていない印象が若干ありました。
団体によっても語の意味が多少ぶれている可能性もありそうです。

mikanmikan

modelという名前のAPIが無いかなと調べてみたらkerasとpytorchにmodelと名のつくAPIが公開されてました。
https://keras.io/ja/models/model/
https://torch.classcat.com/2017/02/24/mxnet-api-model/

おそらくMVCなどの文脈におけるModelとして考えるとニュアンス変だよねってことなんだと思いますが、Modelは抽象的な言葉なのでそれをAPIの名称につけることもありうると思います。
名前はもちろん重要ですが、使われ方がAPIであればそれはもうAPIでしか無いんでしょうね。
HTMLやXMLを操作するためにDOMを使っていれば、その使い方はAPIと何ら変わりないんだと思います。

べつの記事に「DOMにアクセスするためにDOM APIというのがある」というのもあったのでDOMを操作するためのAPIとしてのDOMという認識があるのかもしれません

ハガユウキハガユウキ

DOMがよく分からなかったので、とても参考になりました!
すごく分かりやすかったです。

凡人くん凡人くん

貴方のような方、心底尊敬してます。
私自身、Yahooがネットを一般に流行らせていた頃~十年近くはネットに触れず青春を謳歌してました。携帯がスマホに変わる「i-MODE」前後から徐々にネット検索したりと触れる機会も徐々に増えましたが私のイメージだとテレビの様に動くなんて普通だろ…と。動画サイトもありましたけど個人のサイトは動きどころか写真も色もない‥大学ノートに書かれてる文章を読む‥的な?こ これがネットの現状なの か‥と。余りの静的なネットに驚き、落胆し、興味も持てないままスマホに変えざるを得ない世の中になり、実際手に見たら当時のソレとは別物で、何かしたい事が出来ないと徹底して情報を探し‥。ネットに関わるのが遅くAMDとINTELさえ知らずに当時一番のハイスペックPCを自作しようとパーツを買ってみたものの、ん‥?結局余分に購入したパーツも良い値段したのでドンドン買い足し最終的に6台分も(ケース除)。
次に自然と興味はハードからソフトへ。1年も経たずバイナリエディタを使ったりJavaを使用して‥程度には。しかしCOMの奥を知るほど宇宙そのもの。大気圏程度のDeepwebなど話にならない最深部を覗くいても機械語やそれらの説明自体まるで他所の惑星の言語。日進月歩で進むこの世界は光速を超えて広がるのをBlackHole宜しく取り入れる人たちは東大理Ⅲなんて目じゃない、半端ねぇ。こんなスピードで進歩し更にスピードは増すばかりなのを承知で飛び込むなんて畏敬の念しかない。
駄文を長々と‥すいませんでした。

match1124match1124

丁寧でわかりやすく、非常に勉強になりました。
ありがとうございました。

noisyjokernoisyjoker

駆け出しエンジニアです。
とても勉強になりました!
ありがとうございます!