対象試験と出題頻度

インタプリタは、ITパスポート・基本情報技術者・応用情報技術者で出題されるテーマです。

コンパイラとの違いを問う定番の比較問題として繰り返し出題されており、「どちらが逐次実行か」「どちらが実行速度で有利か」を正確に区別できるかが問われます。

詳細をクリックして確認
対象試験:
ITパスポート
基本情報技術者
応用情報技術者
出題頻度:
★★★★☆
ランクA(重要)必ず覚えておくべき

用語の定義

情報処理試験を勉強していると、「インタプリタとコンパイラって何が違うの?」と混乱しがちです。

インタプリタ(Interpreter)とは、一言で言うと

 「ソースコードを1行ずつ解釈しながら、そのまま実行する言語プロセッサ」

のことです。

イメージとしては、「同時通訳者」です。

外国語のスピーチを、通訳者がその場で1文ずつ日本語に訳して伝える。原稿全体を事前に翻訳するのではなく、リアルタイムで逐次変換していく。これがインタプリタの動き方です。

📊 インタプリタの基本情報

項目 内容
英語名 Interpreter(interpret=解釈する)
分類 言語プロセッサ(言語処理系)の一種
最大の特徴 ソースコードを事前に翻訳せず、1行ずつ解釈しながら即時実行する
代表的な言語 Python、JavaScript、PHP、Ruby

解説

プログラミング言語は人間が読み書きしやすい「高水準言語」で記述されます。

 

しかしコンピュータが直接理解できるのは0と1で構成された機械語だけです。この橋渡しを担うソフトウェアが「言語プロセッサ」であり、その代表格がインタプリタとコンパイラです。

 

処理の流れ

インタプリタはソースコードの先頭から1命令を読み取り、機械語に変換して即座に実行します。実行が終わると次の1命令を読み取る。この繰り返しでプログラム全体を処理します。

 

目的プログラム(実行ファイル)を生成しないため、実行するたびに毎回翻訳処理が走ります。その結果、プログラムの実行速度はコンパイラ方式より遅くなります。

一方、コードを書き換えた直後にすぐ動作確認できるので、開発中のテスト効率は高くなります。

📊 インタプリタ方式 vs コンパイラ方式の処理フロー

インタプリタ方式

ソースコード(1行目)

⬇ 解釈+実行

ソースコード(2行目)

⬇ 解釈+実行

ソースコード(3行目)

⬇ 解釈+実行

実行結果(逐次出力)

コンパイラ方式

ソースコード(全体)

⬇ 一括翻訳

目的プログラム(機械語)

⬇ 実行

実行結果

コンパイラとの比較

両者を正しく区別するには、「翻訳のタイミング」と「目的プログラムの有無」で整理するのが近道です。

📊 インタプリタとコンパイラの違い

比較項目 インタプリタ コンパイラ
翻訳タイミング 実行時に1行ずつ 実行前に一括
目的プログラム 生成しない 生成する
実行速度 遅い(毎回翻訳が発生) 速い(翻訳済みを実行)
開発効率 高い(修正→即テスト可能) やや低い(再コンパイルが必要)
エラー検出 該当行で実行が停止 翻訳時にまとめて検出
代表的な言語 Python、JavaScript、PHP C言語、Java(※)、COBOL

※Javaはソースコードをバイトコードにコンパイルし、JVM上でインタプリタ的に実行するハイブリッド方式。試験範囲ではここまで深追いしなくて問題ない。

▶ 他の言語プロセッサとの違い(クリックで展開)

言語プロセッサにはインタプリタとコンパイラ以外にも種類があります。試験の選択肢に登場することがあるため、名前と役割だけ押さえておくと安心です。

 

アセンブラ:アセンブリ言語(低水準言語)を機械語に変換する。高水準言語を扱うインタプリタ・コンパイラとは対象言語のレベルが異なる。

 

ローダ:目的プログラム(実行ファイル)を主記憶装置に読み込むソフトウェア。翻訳は行わない。

 

ジェネレータ:パラメータを指定するだけで処理目的に応じたプログラムを自動生成する。

 

トランスレータ:ある処理系用のソースコードを、別の処理系用のソースコードに変換する。

では、この用語が試験でどのように出題されるか見ていきましょう。

💡 インタプリタの核心を3行で

・ソースコードを1行ずつ解釈しながら即時実行する言語プロセッサ
・目的プログラムを生成しないため実行速度は遅いが、開発中のテスト効率は高い
・コンパイラは「一括翻訳→実行」、インタプリタは「逐次解釈→即時実行」と整理する


試験ではこう出る!

インタプリタは、言語プロセッサの定義・比較問題として各試験区分で繰り返し出題されています。

出題パターンは大きく2つに分かれます。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
FE H31春
午前 問19
「インタプリタの説明として適切なものはどれか」を選ぶ問題。 ・「原始プログラムを解釈しながら実行」が正解
・コンパイラ・ローダ・トランスレータの説明がひっかけ選択肢
FE サンプル
科目A 問16
H31春 問19と同一の問題(流用)。新制度のサンプル問題にも採用。 ・新試験でも出題対象であることが公式に示されている
FE H23特別
午前 問23
インタプリタ方式とコンパイル方式の処理時間を計算で比較する問題。 ・条件を読み取って方程式を立てる
・155行を境にコンパイル方式が有利になる
IP H25秋
問55
インタプリタ方式とコンパイラ方式のプログラム実行の流れを図示し、どちらがどれか対応させる問題。 ・逐次実行=インタプリタ、一括翻訳→実行=コンパイラの対応

📝 IPA試験での出題パターン

パターン1:「インタプリタの説明を選べ」
4つの言語プロセッサ(インタプリタ・コンパイラ・ローダ・トランスレータ等)の説明文が並び、正しいものを選ぶ形式。キーワードは「解釈しながら実行」「原始プログラム」。

 

パターン2:「両方式の処理時間を比較せよ」
FE H23特別のように、インタプリタ方式の処理時間とコンパイル方式の処理時間(コンパイル時間+オーバーヘッド含む)を方程式で比較し、損益分岐点の行数を求める計算問題。

 

試験ではここまででOKです。「解釈しながら実行=インタプリタ」「一括翻訳してから実行=コンパイラ」という対比を押さえれば得点できます。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. 言語プロセッサであるインタプリタの説明として、最も適切なものはどれでしょうか?

  • A. 高水準言語で書かれた原始プログラムを、1命令ずつ解釈しながら実行するソフトウェアである。
  • B. 高水準言語で書かれた原始プログラムを、一括して目的プログラム(機械語)に翻訳するソフトウェアである。
  • C. 実行可能な目的プログラムを、主記憶装置にロードするソフトウェアである。

正解と解説を見る

正解:A

解説:
インタプリタは、ソースコード(原始プログラム)を1行ずつ解釈しながら即座に実行する言語プロセッサです。「解釈しながら実行」がこの用語を特定するキーワードになります。

選択肢Bはコンパイラの説明です。ソースコード全体を事前に機械語へ一括翻訳し、目的プログラムを生成する点がインタプリタと決定的に異なります。選択肢Cはローダの説明です。翻訳は行わず、既に生成された実行ファイルをメモリに読み込む役割を担います。


よくある質問(FAQ)

Q. Pythonはインタプリタ言語ですが、なぜ.pycファイル(バイトコード)が生成されるのですか?

Pythonは実行時にソースコードをバイトコード(中間コード)に変換し、それをPython仮想マシン(PVM)上でインタプリタ的に実行しています。.pycファイルはこのバイトコードをキャッシュしたものであり、次回実行時の変換処理を省略して起動を速くするためのものです。コンパイラのように最終的な機械語を生成しているわけではないため、分類としてはインタプリタ方式に含まれます。IPA試験ではこの内部挙動まで問われることはないので、参考程度で構いません。

Q. JIT(Just-In-Time)コンパイラとインタプリタは何が違いますか?

JITコンパイラは、インタプリタの実行速度の遅さを補う技術です。プログラムの実行中に頻繁に使われるコード部分を検出し、その部分だけを機械語にコンパイルしてキャッシュします。次回同じコードが呼ばれたときは翻訳済みの機械語を使うため高速に動作します。JavaのJVM(HotSpot)やGoogle ChromeのV8エンジン(JavaScript)がこの方式を採用しています。

Q. スクリプト言語とインタプリタ言語は同じ意味ですか?

厳密には異なります。スクリプト言語は「簡易的な記述で手軽に処理を自動化できる言語」という用途面での分類であり、インタプリタは「実行方式」の分類です。ただし、スクリプト言語のほとんどがインタプリタ方式を採用しているため、実質的に重なる部分が大きくなっています。試験で問われた場合は「スクリプト言語=用途の分類」「インタプリタ=実行方式の分類」と区別してください。

Q. 実務でインタプリタ方式の言語が好まれる場面はどこですか?

Webアプリケーション開発、データ分析、業務スクリプトの自動化など「短いサイクルでコードを書き換えながら動作確認したい」場面で広く使われています。PythonがAI・機械学習分野で主流になった理由のひとつも、対話的にコードを実行しながら結果を確認できるインタプリタ方式の手軽さにあります。