開発ツールは,基本情報技術者試験をはじめとする情報処理技術者試験で頻出となる重要分野です。プログラム言語,言語プロセッサ,開発支援ツールの違いや役割を整理できていますか?
プログラム言語=プログラムを記述するための言語
言語プロセッサ=プログラムを機械語へ変換するしくみ
開発支援ツール=開発・テスト・保守を効率化するツール
ソフトウェア開発は,単にプログラムを書く作業ではなく,言語の選択から変換処理,テストや保守まで,さまざまなツールが連携して進められます。それぞれの役割を理解することで,開発の流れ全体を体系的に把握することができます。
このページでは,開発ツールの全体像を図や表で整理し,「どのツールがどの場面で使われるのか」が一目で分かるようにシンプルに解説します。
初学者の方や,基礎を体系的に復習したい方に向けたまとめページです。
ソフトウェア開発言語とは(機能と種類)
プログラム言語(定義と利用例)
プログラム言語とは,コンピュータープログラムを記述・編集するために用いる言語のことをいいます。
低水準言語とは
低水準言語とは,コンピューターが理解しやすい言語のことをいいます。
※ 人間には理解しにくい
| 機械語 | コンピューターが,直接理解できる言語。0,1のビット列で表される |
| アセンブラ言語 | 機械語の命令を,(人間が理解しやすい)アルファベットの命令語に対応させた言語 |
高水準言語とは
高水準言語とは,人間が理解しやすい人間寄りの言語のことをいいます。
| C言語 | コンパイラ型 | オペレーティングシステム(OS)など,組み込みシステムの開発に適している言語 |
| COBOL | コンパイラ型 | 会計処理や事務処理などの業務システムの開発に適している言語 |
| Fortran | コンパイラ型 | 科学技術計算に適している言語 |
| BASIC | インタプリタ型 | プログラミングの入門用に利用されていた言語 |
| Java | コンパイラ型 | 業務システムやWebアプリケーション,モバイルアプリケーションの開発に適している言語。オブジェクト指向プログラミングをサポートしている。Javaで作成したプログラムは,JVM(Java Virtual Machine;Java仮想マシン)により,基本的にはどのようなコンピューターでも動作する |
| C++ | コンパイラ型 | C言語を拡張した言語で,オブジェクト指向プログラミングをサポートしている |
| C# | コンパイラ型 | Windows向けのアプリケーションやWebアプリケーション,(Unityなどを使用した)ゲームの開発に適している言語。オブジェクト指向プログラミングをサポートしている |
| Python | インタプリタ型 | Webアプリケーションの開発や,データ処理,人工知能(AI)などの分野に適している言語 |
| Swift | コンパイラ型 | MacやiPhoneなど,Apple製品向けのアプリケーションの開発に適している言語。オープンソース化されている |
スクリプト言語とは
スクリプト言語とは,簡単なプログラムを記述・実行できるように,仕様を簡略化した言語のことをいいます。
| PHP | インタプリタ型 | Webアプリケーションの開発に特化した言語。オブジェクト指向プログラミングをサポートしている。データベースとの連携や動的コンテンツの生成(動的なWebページの生成)が容易にできる |
| Ruby | インタプリタ型 | Webアプリケーションの開発に適している言語。オブジェクト指向プログラミングをサポートしている |
| Perl | インタプリタ型 | テキスト処理を得意とする言語 |
| JavaScript | インタプリタ型 | Webページの作成に適している言語。JavaScriptで作成したプログラムはWebブラウザ上で実行することができる |
Java関連技術とは
| Javaサーブレット | Webサーバ上で動作するJavaプログラム。Webブラウザからの要求に応じてデータベースの処理やHTMLの生成を行い,動的なWebページを生成する |
| Javaアプレット | Webブラウザ上で動作するJavaプログラム。Webページに動的な機能や画面表示を追加する ※ 現在はほとんど利用されていない |
| JavaBeans | データを保持するためのJavaクラス。フィールドをprivateにし,getter・setterメソッドや引数のないコンストラクタを備え,再利用しやすい部品として利用される |
Webアプリケーション関連技術とは
Ajax(Asynchronous JavaScript + XML)とは
Ajaxとは,JavaScriptの非同期通信を利用し,Webページ全体を再読み込みせずに一部の内容を更新するしくみのことをいいます。
※ 非同期通信…サーバーからの返信を待たずに処理を進めることができる方式 ⇒ 通信中も操作を続けることができる
※ XMLではなくJSONが使われることも多い
※ 例)SNSの「いいね」ボタン:「いいね」の数を更新する。Googleマップ:地図の表示を更新する など
マークアップ言語,その他言語
マークアップ言語とは,文書の見栄えを指定するデータ(タグなど)を記述する言語のことをいいます。
| HTML | Webページの論理的な構造の記述に適している言語 |
| XML | 文書やデータの論理的な構造の記述に適してる言語。独自のタグを定義可能。DTDによって文書構造や使用できる要素・属性などを定義できる |
| XBRL | XMLを,財務情報の交換ができるようした言語 |
| CSS | Webページの見栄えなどの記述に適している |
| SQL | 関係データベースの管理や操作をするための言語 |
言語プロセッサ(言語処理系)の役割
言語プロセッサとは,プログラム言語で記述されたソースプログラムを,(コンピューターで実行するために)オブジェクトプログラムに変換するソフトウェアのことをいいます。
※ ソース(原始)プログラム…人間がプログラム言語を使用して記述したプログラム
※ オブジェクト(目的)プログラム…機械語に変換されたプログラム
言語プロセッサの種類
アセンブラとは
アセンブラは,アセンブラ言語で記述されたソースプログラムを機械語に変換するソフトウェアです。
コンパイラとは
コンパイラは,高水準言語で記述されたソースプログラムを機械語に変換するソフトウェアです。
※ 変換過程で最適化されるため実行速度が速い
※ オブジェクトプログラムだけでは実行できない(オブジェクトプログラムから呼び出されるコードが記述されている他のオブジェクトプログラムやライブラリファイルなどと連結していないため)
| 字句解析 | ソースプログラム内の文字列を,予約語や定数,区切り記号などの最小単位(トークン)に分解する |
| 構文解析 | トークンを読み込んで構文木を生成し,構文規則に従っているかをチェックする |
| 意味解析 | 変数の使用や演算におけるデータ型の整合性などをチェックし,(最適化を行いやすくするために)中間コードに変換する ※ 中間コードには,三つ組形式や四つ組形式,逆ポーランド表記法(後置表記法)などがある ※ 四つ組形式の例)(+,A,B,T)⇒ T=A+B |
| 最適化 | プログラムのサイズを小さくしたり,実行速度を向上させるために構造を変換させるなどする |
| コード生成 | オブジェクトプログラムに変換する |
リンカ(連係編集プログラム)とは
リンカは,オブジェクトプログラムやライブラリファイルなどを連結してロードモジュール(実行可能なファイル)を作成するソフトウェアです。
動的リンキング(ダイナミックリンキング)とは
動的リンキングとは,(プログラムの実行中)ライブラリなどが必要になった時点で連結する方式をいいます。
ローダーとは
ローダーは,ロードモジュールを実行するソフトウェアです。
※ ロードモジュールを主記憶装置の指定されたアドレスにロードし実行する
インタプリタとは
インタプリタは,高水準言語で記述されたソースプログラムを機械語に変換しながら実行するソフトウェアです。
※ 変換しながら実行するため,実行速度は(コンパイラ型に比べて)遅い
※ ソースプログラムを即座に実行できるため,開発や修正が容易
中間コード方式とは(仮想マシンとの関係)
中間コード方式は,ソースプログラムを仮想マシン上で実行できるバイトコードに変換する方式です。実行時には,中間コードを,実行先のコンピューターの仕様に合ったネイティブコードに変換してから実行します。
※ 中間コード…特定のOSやハードウェアに依存しないコード
※ 動的コンパイル…プログラムの実行当初は,中間コードをインタプリタとして実行し,繰り返し実行される処理については実行途中にコンパイルして実行する方式。実行速度の向上が期待できる(Javaなど)
仮想マシンとは
仮想マシンとは,コンピューターの機能を仮想的に構築したソフトウェアのことをいいます。
※ 仮想マシン上でOSを動作させることができる ⇒ 利用者からは物理的なコンピューターのように見える
ジェネレータとは
ジェネレータとは,プログラムコードなどを自動的に生成するソフトウェアのことをいいます。
※ 処理などに必要な条件を指定することで,自動的にプログラムが生成される
開発支援ツールとは
ソフトウェアの開発や保守を支援するツール
CASE(Computer Aided Software Engineering)ツールとは(上流/下流支援)
CASEツールとは,ソフトウェアの開発や保守を効率的に行えるようにするための開発支援ツールのことをいいます。
| 上流CASEツール | 要件定義などの上流工程を支援する |
| 下流CASEツール | コーディングやテスト,保守などの下流工程を支援する |
デバッグを支援するツールの種類
静的解析ツールとは
静的解析ツールは,(プログラムを実行せずに行う)静的テストを支援するツールです。
※ 静的テストには,プログラムを1行1行トレースしたり,プログラムに記述されている文などを検証したりするものなどがある
動的解析ツールとは
動的解析ツールは,(プログラムを実行しながら行う)動的テストを支援するツールです。
| ダンプツール | 主記憶装置やレジスタなどに記憶されている内容を出力するツール ※ メモリダンプ…プログラムの異常終了時に出力するもの ※ スナップショットダンプ…特定の命令が実行されるたびに出力するもの |
| トレーサー | 実行した命令や変数の内容などを逐次取得できるツール(追跡プログラム) |
| アサーションチェッカー | (ある時点で変数aが変数b以下であるなどという)変数間の関係や条件などをプログラム中に埋め込み,常に成り立っているかを検査するツール |
テストを支援するツール
| ドライバ/スタブなどの 生成ツール | 結合テストで必要となるダミーのテスト用モジュール(ドライバやスタブ)やテストケースを生成するツール |
| カバレージモニター | プロブラム内の経路のうち,どのくらいの割合をテストしたかを算出するツール |
IDE(Integrated Development Environment;統合開発環境)の機能と例
IDEとは,ソフトウェア開発に必要な機能をひとまとめにしたソフトウェアのことをいいます。ソースプログラムを記述するためのエディターや,コンパイラ,デバッガ,バージョン管理機能などを持っているものが多いです。
※ IDEは,開発を一括で行える環境として重要なツールである
※ Microsoft社の「Visual Studio」や,Apple社の「Xcode」,オープンソースソフトウェアの「Eclipse」などがある
まとめ
今回は,開発ツールについて,プログラム言語・言語プロセッサ・開発支援ツールの役割と関係をシンプルにまとめてみました。これらはそれぞれ独立したものではなく,ソフトウェア開発の流れの中で相互に連携して機能しています。特に,コンパイラとインタプリタの違い,リンカやローダーの役割,中間コード方式や仮想マシンのしくみなどは,試験で頻出となる重要ポイントです。それぞれの特徴だけでなく,「どのような場面で使われるのか」まで理解しておきましょう。
また,CASEツールやデバッグツール,IDEなどの開発支援ツールについても,開発工程との対応関係を意識して整理すると理解が深まります。
理解が進んだら,基本情報技術者試験の過去問題等にもチャレンジしてみてください。
※ このページでは読みやすさを考慮し「コンピューター」,「サーバー」など長音付きで表記していますが,試験では「コンピュータ」,「サーバ」と表記されます
基本情報技術者試験の学習におすすめの参考書
基本情報技術者試験の合格を目指す方におすすめの参考書です。
学習のお役に立ちましたら
この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。
よろしければ、このサイトを応援いただけますと嬉しいです。
※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。


