開発ツールの基礎まとめ【プログラム言語・言語プロセッサ・IDEを解説】

開発ツールに関するブログのアイキャッチ画像 ソフトウェア
広告

 このページでは,基本情報技術者試験をはじめとする情報処理技術者試験で必須となる,開発ツールについて,プログラム言語,言語プロセッサ,開発支援ツールを中心にシンプルにまとめています。図や表を用いてわかりやすく解説しており,初学者でも理解しやすく,試験対策に最適です。

広告

ソフトウェア開発言語とは

プログラム言語とは

 プログラム言語とは,コンピュータープログラムを記述・編集するために用いる言語のことをいいます。

プログラム言語の分類に関する説明画像

低水準言語とは

 低水準言語とは,コンピューターが理解しやすい言語のことをいいます。

※ 人間には理解しにくい

機械語コンピューターが,直接理解できる言語。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アプリケーションの開発に適している言語。オブジェクト指向プログラミングをサポートしている
JavaScriptインタプリタ型Webページの作成に適している言語。JavaSciptで作成したプログラムはWebブラウザ上で実行することができる

マークアップ言語,その他

 マークアップ言語とは,文書の見栄えを指定するデータ(タグなど)を記述する言語のことをいいます。

HTMLWebページの論理的な構造の記述に適している言語
XML文書やデータの論理的な構造の記述に適してる言語。独自のタグを定義可能
XBRLXMLを,財務情報の交換ができるようした言語
CSSWebページの見栄えなどの記述に適している
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とは,ソフトウェア開発に必要な機能をひとまとめにしたソフトウェアのことをいいます。ソースプログラムを記述するためのエディターや,コンパイラ,デバッガ,バージョン管理機能などを持っているものが多いです。

※ Microsoft社の「Visual Studio」や,Apple社の「Xcode」,オープンソースソフトウェアの「Eclipse」などがある

まとめ

 今回は,開発ツールについて,プログラム言語・言語プロセッサ・開発支援ツールを中心にシンプルにまとめてみました。多くの項目がありますが,まずは基本的な内容を確実に理解しましょう。

 理解が進んだら,過去問題等にもチャレンジしてみてください。