0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

レンダリングとコンパイラとインタプリタの違い

Posted at

レンダリングエンジンとコンパイラの仕組みの違い

はい、レンダリングエンジンとコンパイラは、どちらも「何かを別の形式に変換する」という点で似ていますが、その目的と対象が大きく異なります。

レンダリングエンジン

目的: ウェブページのソースコード(HTML、CSS、JavaScriptなど)を解析し、実際にユーザーが見ることができる視覚的な表現(ピクセル)に変換して画面に表示することです。
主な処理対象:
HTML: ドキュメントの構造を解析し、DOM (Document Object Model) ツリーを構築します。
CSS: スタイルシートを解析し、CSSOM (CSS Object Model) ツリーを構築し、DOMにスタイルを適用します。
JavaScript: JavaScriptエンジン(例: V8)に処理を渡し、DOMやCSSOMを動的に変更した結果を反映させます。
画像、動画などのリソースも扱います。
出力: 画面に描画するためのピクセル情報です。
動作: ウェブページが読み込まれるたびに、またはJavaScriptによってDOMが変更された際などに動作します。逐次的に処理を進め、可能な限り早く画面に内容を表示しようとします。
コンパイラ

目的: あるプログラミング言語で書かれたソースコード全体を、コンピュータが直接実行できる形式(機械語やバイトコードなど)に変換することです。
主な処理対象: 特定のプログラミング言語のソースコード全体です。
出力: 実行可能なプログラム(バイナリファイルやバイトコードなど)です。
動作: プログラムを実行する前に行われます。通常、一度コンパイルが成功すれば、その後はコンパイル済みのプログラムを何度でも実行できます。エラーがあれば、コンパイルは途中で止まります。
仕組みの違いのまとめ

特徴 レンダリングエンジン コンパイラ
主な入力 HTML、CSS、JavaScript、画像などウェブ関連のリソース 特定のプログラミング言語のソースコード全体
主な出力 画面のピクセル表現 実行可能なプログラム(機械語、バイトコードなど)
主な目的 ウェブページを視覚的に表示する プログラムをコンピュータが実行できるように変換する
動作のタイミング ウェブページの読み込み時や動的な更新時 プログラム実行前
処理の単位 ドキュメント全体、およびその変更に応じて逐次処理 ソースコード全体

Google スプレッドシートにエクスポート
例えるなら、

レンダリングエンジン は、レシピ(HTML)、飾り付けの指示(CSS)、調理の指示(JavaScript)を読み込んで、最終的な料理(ウェブページ)を食卓(画面)に出す料理人のようなものです。
コンパイラ は、外国語で書かれた小説(ソースコード)を、母語で書かれた小説(機械語)に翻訳する翻訳家のようなものです。翻訳が終われば、原文がなくても翻訳された小説を読むことができます。
金沢はいかがお過ごしでしょうか?何か他に知りたいことはありますか?

レンダリングとインタプリタはまた違うものですか?

はい、レンダリングとインタプリタは異なる概念です。

レンダリング (Rendering)

これは先ほど説明したように、ウェブページのソースコード(HTML、CSS、JavaScriptなど)を解析し、最終的にユーザーが見ることができる視覚的な表現(ピクセル)を画面に描画するプロセス全体を指します。
レンダリングエンジン(例:Blink、Gecko、WebKit)が行う一連の処理(HTML解析、CSS解析、レンダリングツリー構築、レイアウト、描画)を指します。
インタプリタ (Interpreter)

インタプリタは、プログラミング言語で書かれたソースコードを一行ずつ読み込みながら、その場で実行するプログラムです。
コンパイラのように、事前にソースコード全体を機械語などの実行可能な形式に変換するのではなく、実行時に解析と実行を同時に行います。
JavaScriptは、一般的にインタプリタ型の言語と見なされます(ただし、多くのJavaScriptエンジンはJust-In-Time (JIT) コンパイラを搭載しており、パフォーマンス向上のために一部コードをコンパイルします)。
違いのまとめ

特徴 レンダリング インタプリタ
主な対象 ウェブページのソースコード(HTML、CSS、JavaScript)、画像など プログラミング言語のソースコード
主な目的 ウェブページを視覚的に表示すること プログラミング言語のコードを逐次的に実行すること
出力 画面のピクセル表現 プログラムの実行結果(変数への代入、関数の呼び出し、画面への出力など)
処理の単位 ドキュメント全体とその変更に応じて処理。最終的な出力は視覚的な表現。 ソースコードの一行ずつ。

Google スプレッドシートにエクスポート
JavaScriptとの関係

ウェブページのレンダリングプロセスの中で、JavaScriptはJavaScriptエンジン(インタプリタとJITコンパイラを含む)によって実行されます。JavaScriptはDOMやCSSOMを操作することで、レンダリングの結果を動的に変更することができます。

例えるなら、

レンダリング は、ウェブページという絵を描く行為全体です。
インタプリタ (JavaScriptエンジンの主要な部分) は、絵を描くための指示書(JavaScriptコード)を一行ずつ読んで、その指示に従って絵を変化させる人のようなものです。
金沢の午後のひととき、いかがお過ごしですか?他に何か気になることはありますか?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?