対象試験と出題頻度
ソースコードは、ITパスポート・基本情報技術者・応用情報技術者のすべてで出題されるテーマです。
「プログラム言語で記述した命令文の呼び名は?」という直球の定義問題から、コンパイラやリバースエンジニアリングの文脈で登場するケースまで幅広く、プログラミング分野の土台となる用語です。
詳細をクリックして確認
ITパスポート
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
情報処理試験を勉強していると、「ソースコードって、ようはプログラムのこと?何が違うの?」と混乱しがちです。
ソースコード(Source Code)とは、一言で言うと
「人間が読めるプログラミング言語で記述された、プログラムの原文テキスト」
のことです。
イメージとしては、「日本語で書かれたレシピの原稿」です。
料理人(人間)はレシピを読んで手順を理解できますが、全自動調理ロボット(コンピュータ)には日本語が通じません。ロボットに渡すにはロボット専用の命令形式に翻訳する必要がある。この「翻訳前の原稿」がソースコードにあたります。
📊 ソースコードの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Source Code(source=源、原典) |
| 別名 | ソースプログラム、原始プログラム |
| 対になる用語 | オブジェクトコード(機械語に変換された後のコード) |
| 変換を行うソフト | コンパイラ(一括変換)、インタプリタ(逐次変換) |
解説
コンピュータのCPUが直接実行できるのは、0と1の並びで構成された機械語(マシン語)だけです。
しかし、人間が機械語を直接書くのは非常に困難なため、人間にとって読み書きしやすい「高水準言語」(C言語、Java、Pythonなど)が生まれました。
この高水準言語で書かれたテキストファイルこそが、ソースコードです。
ソースコードが実行されるまでの流れ
ソースコードをコンピュータが実行できる形に変換する方法は、大きく2種類あります。
📊 変換方式の比較
| 方式 | 動作 | 特徴 | 代表言語 |
|---|---|---|---|
| コンパイラ | ソースコード全体を一括で機械語に変換し、オブジェクトコードを生成する | 実行速度が速い。変換後のファイルだけで動作する | C言語、Java(バイトコードへ変換) |
| インタプリタ | ソースコードを1行ずつ読み取りながら逐次実行する | 修正の反映が即座。実行速度はコンパイラ方式より遅い | Python、JavaScript、Ruby |
🔄 コンパイラ方式の変換フロー
(人間が書く)
(翻訳者)
(機械語)
(結合)
(.exe など)
ソースコードの具体例
実際のソースコードがどのようなものか、Python を例に見てみましょう。
## Python のソースコード例
def greet(name):
return f”こんにちは、{name}さん!”
print(greet(“太郎”))
上記のように、人間が「関数を定義して、名前を受け取って挨拶を返す」と読める記述がソースコードです。
これをコンパイラやインタプリタが処理することで、コンピュータが実行できる状態になります。
オブジェクトコードとの違い
ここだけは確実に押さえてください。ソースコードとオブジェクトコードの関係は「翻訳前」と「翻訳後」です。
ソースコードは人間が読める形式、オブジェクトコードはCPUが解釈できる機械語の形式です。コンパイラを境に「誰のための言葉か」が切り替わると整理すれば混同しなくなります。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 ソースコードの核心を3行で
・人間が読めるプログラミング言語で書かれたプログラムの原文テキスト
・コンパイラで一括変換するか、インタプリタで逐次実行するかの2方式で処理される
・変換前が「ソースコード」、変換後が「オブジェクトコード」
試験ではこう出る!
ソースコードは、定義そのものを問うストレートな問題と、関連用語(コンパイラ・リバースエンジニアリングなど)の文脈で登場する問題の両方があります。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| IP H29秋 問81 |
「コンピュータに対する命令を、プログラム言語を用いて記述したものを何と呼ぶか」という定義問題。 | ・PINコード、バイナリコード、文字コードとの区別 ・「プログラム言語で記述」がキーワード |
| FE H27秋 午前 問49 |
「ソースコードやオブジェクトコードを解析して、プログラムの仕様と設計の情報を取り出す手法」を選ぶ問題。 | ・正解はリバースエンジニアリング ・解析対象としてソースコードの意味を知っている前提 |
| FE H28春 午前 問19 |
「コンパイラにおける最適化」の説明を選ぶ問題。ソースコードからオブジェクトコードへの変換過程が問われた。 | ・最適化=実行効率の高いオブジェクトコードを生成する処理 ・クロスコンパイラの説明がひっかけ |
📝 IPA試験での出題パターン
パターン1:「ソースコードの定義を選べ」
ITパスポートで頻出。「プログラム言語で記述」「人間が読める」という表現がある選択肢を選べばOK。バイナリコード(機械語の別名)やPINコード(暗証番号)がひっかけ選択肢として並ぶ。
パターン2:「コンパイラの処理の流れに関する問題」
FE・APで多い。「ソースコード → コンパイラ → オブジェクトコード」の流れを前提に、最適化やリンク処理を問う。ソースコードの意味自体を知らないと問題文が読めないため、基礎知識として必須。
試験ではここまででOKです。ソースコードという用語を「人間が書くプログラムの原文」と即座に答えられれば得点できます。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. コンピュータに対する命令を、プログラム言語を用いて記述したテキストの呼び名として、最も適切なものはどれでしょうか?
- A. バイナリコード ― CPUが直接実行できる0と1の命令列であり、人間が読むことを想定していない形式。
- B. オブジェクトコード ― コンパイラがソースプログラムを翻訳して生成した、機械語または中間言語で記述されたコード。
- C. ソースコード ― 人間が読めるプログラミング言語の文法に従って記述された、プログラムの原文テキスト。
正解と解説を見る
正解:C
解説:
ソースコードは、プログラミング言語の文法に従って人間が記述したプログラムの原文です。「プログラム言語で記述」「人間が読める」の2点がこの用語を特定するキーワードになります。
選択肢Aのバイナリコードは、0と1だけで構成された機械語の表現形式です。CPUが直接解釈するためのものであり、人間がプログラム言語で書いたテキストではありません。選択肢Bのオブジェクトコードは、コンパイラがソースプログラムを変換した結果として生成されるコードです。変換後の成果物であり、「プログラム言語で記述した原文」には該当しません。
よくある質問(FAQ)
Q. ソースコードとプログラムは同じ意味ですか?
厳密には異なります。ソースコードは「人間が書いたテキストファイル」を指し、プログラムは「コンピュータが実行する命令の集合」を指す、より広い概念です。コンパイル前のテキストもコンパイル後の実行ファイルも「プログラム」と呼べますが、ソースコードと呼べるのは翻訳前のテキストだけです。試験では「ソースコード=プログラム言語で記述したもの」と覚えておけば問題なく正答できます。
Q. OSSの「ソースコードが公開されている」とはどういう意味ですか?
OSS(オープンソースソフトウェア)は、誰でもソースコードを閲覧・改変・再配布できるライセンスで公開されたソフトウェアです。通常の商用ソフトウェアは、オブジェクトコード(実行ファイル)だけを配布し、ソースコードは非公開にしています。OSSはこれを逆にして、プログラムの設計意図まで誰でも確認できる状態にしている点が特徴です。ITパスポートでも「OSSの特徴」として繰り返し出題されています。
Q. 著作権法ではソースコードは保護されますか?
保護されます。日本の著作権法では、プログラムは「著作物」として明確に保護対象になっており(著作権法第10条第1項第9号)、ソースコードもこの保護の対象です。ただし、プログラミング言語そのもの(文法規則)や、アルゴリズム(解法の考え方)は著作権の保護対象にはなりません。IPA試験では「プログラムの著作権で保護されないもの」として出題されることがあるため、この線引きを知っておくと有利です。