開発ツール
IDEやバージョン管理などの開発ツール、コンパイラ・インタプリタ・リンカ・ローダという言語処理ツールの役割を理解できるようになります。
ねらい
ソフトウェア開発を支えるツールを学びます。このレッスンを終えると、開発の各工程を支援するツールの種類と、書いたプログラムが実行されるまでに働く言語処理ツールの役割を説明できるようになります。
ストーリー
あなたが書いたソースコードは、そのままでは動きません。コンパイラが翻訳し、リンカが部品をつなぎ、ローダが主記憶に配置して、初めてプログラムは動き出します。さらにその周りには、設計を助けるツール、テストを自動化するツール、変更の歴史を残すツールが控えています。開発の現場を支える道具箱を開けてみましょう。
開発ツールの種類
開発の工程ごとに、支援するツールがあります。
| ツール | 役割 |
|---|---|
| 設計支援ツール、設計ツール | 設計図の作成や整合性の確認を支援する |
| 構築ツール | プログラムの組み立てを自動化する |
| テストツール | テストの実行や結果の確認を自動化する |
| バージョン管理ツール | ソースコードの変更の履歴を管理し、複数人での開発を支える |
| IDE(統合開発環境) | 編集・実行・デバッグなどの機能をひとつにまとめた環境 |
開発の一連のツールをつないだ流れをツールチェーンといいます。プログラミングの知識がなくても画面操作でアプリケーションを組み立てられるローコードツールやノーコードツールも広がっており、利用部門の人が自ら情報活用や開発を行うことをEUC、EUDといいます。
デバッグやテストの支援には、実行の足取りを記録するトレーサー、実行中のデータの中身を調べるインスペクター、ある瞬間の状態を写し取るスナップショット、満たすべき条件を検査するアサーションチェッカがあります。組み込み開発では、別の機器の動きをまねるエミュレーターやシミュレーター、実機に接続してデバッグするICE(インサーキットエミュレーター)が使われます。
言語処理ツール:プログラムが動くまで
人間が書いた原始プログラム(ソースプログラム)を実行するまでには、翻訳と組み立ての工程があります。
- コンパイラは、ソースプログラムを一括で翻訳して目的プログラムを作ります。
- リンカは、目的プログラムやライブラリを結合して、実行できる形式のロードモジュールを作ります。
- ローダは、ロードモジュールを主記憶に配置して実行できる状態にします。
ソースプログラムはコンパイラで目的プログラムになり、リンカがライブラリと結合してロードモジュールに仕上げ、ローダが主記憶へ運ぶという順で実行に至ります。
翻訳の仕方には別の方式もあります。インタプリタは、ソースプログラムを1文ずつ解釈しながらその場で実行します。翻訳を待たずにすぐ実行できる反面、実行のたびに解釈するため速度では不利です。実行時コンパイラは、実行の直前や実行中に翻訳することで、両者の良いところを取る方式です。
このほか、アセンブラ言語を機械語に翻訳するアセンブラ、翻訳の前にソースコードを加工するプリプロセッサ、決められたパターンからプログラムを生成するジェネレーター、開発用のコンピュータとは異なる環境向けの目的プログラムを作るクロスコンパイラがあります。クロスコンパイラは、スマートフォンや組み込み機器向けの開発のように、動かす機械と開発する機械が違う場面で欠かせません。
例題
次の問いに答えてください。
問1 ソースプログラムを1文ずつ解釈しながら、その場で実行する言語処理ツールを何といいますか。
問2 ソースコードの変更履歴を管理し、複数人での開発を支えるツールを何といいますか。
解答と解説
問1の答えはインタプリタです。一括で翻訳して目的プログラムを作るコンパイラとの違いは、「翻訳してから実行するか、解釈しながら実行するか」です。
問2の答えはバージョン管理ツールです。いつ、誰が、何を変えたかの履歴が残るため、問題が起きたときに前の状態へ戻せます。
応用
本試験を意識した問題を解いてみましょう。
問 開発に使うコンピュータとは異なる環境で動作する目的プログラムを生成する言語処理ツールはどれでしょうか。次の中から選んでください。
- クロスコンパイラ
- インタプリタ
- リンカ
- ローダ
解答と解説
答えは1のクロスコンパイラです。たとえばPCの上で、スマートフォンや組み込み機器向けのプログラムを翻訳するときに使います。2のインタプリタはソースプログラムを解釈しながらその場で実行するツールで、別環境向けの目的プログラムを生成するものではありません。3のリンカは目的プログラムやライブラリを結合してロードモジュールを作るツール、4のローダはロードモジュールを主記憶に配置するツールであり、どちらも翻訳そのものは行いません。
分からなかった点・気になった点
読み込み中です。