「ビルド」機能とは?仕組みやコンパイルとの違いを解説 | サービス | プロエンジニア

    「ビルド」機能とは?仕組みやコンパイルとの違いを解説

    • このページをはてなブックマークに追加

    初めて統合開発環境(IDE)であるEclipseを使用したときに、私がまず戸惑ったのは「コンパイル」という名前の機能がない!という点でした。学校では「プログラムをコンパイルして実行ファイルを作る」と習ったのに、統合開発環境で実行ファイルを作るのは「ビルド」という機能であり、どう違うのかと混乱した覚えがあります。

    そこで今回は、ビルドとコンパイルの違いから始まり、ビルドの仕組みを解説していきたいと思います。

    目次

    1.ビルドとは?

    1.1 ビルドとは

    ビルドとは、おおまかに言うと「ソースコードに問題(バグ)がないか解析を行い、問題がなければ実行できる形のファイルに変換し、組み立てること」です。ただしお使いの開発環境によって、少し内容が異なっている場もあります。

    ▲目次へ戻る

    1.2 コンパイルとの違い

    上記の説明を聞いて、それはコンパイルではないか?と思う方もいるかもしれません。こちらもごく簡単に表すと、コンパイルはビルド作業の中に含まれる作業の一段階です。

    ▲目次へ戻る

    1.3 コンパイルとは

    コンパイルとは英語で翻訳という意味であり、ソースコードを人間が読んで分かりやすいプログラミング言語から機械が読んで分かりやすい機械語に翻訳を行うことを指します。しかし単にソースコード翻訳しただけでは複雑なプログラムは動かないため、必要な付帯ファイルのセットなどをビルドで行う必要があるのです。詳しくは次の項の中で解説していきたいと思います。

    ▲目次へ戻る

    2.ビルドの仕組みと流れ

    ビルドの中で行われている処理の流れは、次のような図に表すことができます。

    column_image6308_01

    2.1 各ソースコードの静的解析を行う

    ビルドを開始すると、まずソースの静的解析を行います。この静的解析では文法や構文の誤りを検出する、つまりバグを見つけるための処理が行われます。バグがあった場合はここで処理がストップし、コンパイルには進まずバグの検出箇所をお知らせして終わります。

    ▲目次へ戻る

    2.2 プリプロセッサで前処理を行う

    ソースコードに誤りが見つからなかったら、次は「プリプロセッサ」でコンパイルのための前処理を行います。前処理では、定数の数値への置き換えやコメントの削除、マクロの展開などが行われます。

    なおこの前処理は、行う言語と行わない言語があります。プリプロセッサを用いる言語には、代表的なものとしてC言語やCOBOLなどが挙げられます。

    なお逆に、通常であれば用いなくても問題ない言語であってもプリプロセッサを使用することは可能です。例えばJavaでは通常プリプロセッサは用いませんが、かつてファイルサイズの圧縮などを目的として、Java用のプリプロセッサが一部で用いられることもあったようです。

    ▲目次へ戻る

    2.3 各ソースコードのコンパイルを行う

    前処理が終わったら、次は「コンパイラ」でコンパイルが行われます。前述の通りコンパイルとは英語で「翻訳」という意味であり、ここで人間が書いたソースコードを機械が読んで分かりやすい言語で書かれたオブジェクトファイル(.oや.objなど)に変換します。

    ▲目次へ戻る

    2.4 各オブジェクトファイルとライブラリをリンクする

    コンパイルが終わったら、最後に「リンカ」で各オブジェクトファイルやライブラリのリンクが行われます。全ての部品をリンクすることで、最終的に「実行ファイル」が完成します。

    ▲目次へ戻る

    column_image6308_02

    3.ビルドの仕組み理解でデバッグ効率アップ

    いつも何気なく押しているビルドボタンの向こう側で何が行われているのか知っておくと、エラーが出た際に原因を特定しやすいなど便利なことが多々あります。この機会に、ぜひビルドの仕組みを覚えておいて下さいね。

    • このページをはてなブックマークに追加

    おすすめ記事

  • OCTPASS

    ピックアップ

    フリーランス

    【Unity/Android/iOS】システムエンジニア★オンライン型クラブミュージック機器アプリ開発 NEW

    月額単価 :80万円〜

    DJ機器やEDMミュージック等をスマートフォンアプリ上で操作し、 どこでもパーティ会場の雰囲気を作り出...

    フリーランス

    【PHP】サーバーサイドエンジニア★クラウド型飲食店予約管理システム開発 NEW

    月額単価 :80万円〜

    クラウド型の飲食店予約管理システムなどの 自社サービスを運営する企業にて、 PHPでのサーバーサイド...

    フリーランス

    【PHP】システムエンジニア★国内大手ポータルサイトのWEBシステム開発 NEW

    月額単価 :80万円〜

    国内某大手ポータルサイトが運営する各WEBサービスの 刷新に伴うWEBシステム開発業務となります。 歴...

    フリーランス

    【Salesforce/Apex】システムエンジニア★ECサイト構築(請求管理システム開発) NEW

    月額単価 :70万円〜

    ECサイト構築サービスに関する 顧客・契約・請求管理システム開発(増税対策)の 開発業務を担当して...

    フリーランス

    【Java】システムエンジニア★顧客契約管理・保険関連システム開発 NEW

    月額単価 :70万円〜

    下記、自社サービス開発に携わっていただきます。 ・顧客契約管理システムの機能強化 ・保険商品検...