はじめに
コンパイルとビルド。
普段何となく飛び交っている二つの言葉ですが、意味が似ている為に混合して使用されていませんか?
実は私もコンパイル=ビルドみたいに思っていた一人です。
その日の気分で、コンパイルが〜って言ってみたりビルドが〜って言ってみたり
これではまずいと思い、今回改めて2つの言葉の違いを調べたのでまとめます。
本題に入る前に前提としての知識確認
● ソースコードとは
私たちが書いているコードそのもののことです。
実際にコンピュータを動かすコードは、ソースコードではなく、コンピュータが認識できるオブジェクトコードというものです。
最初からオブジェクトコードを私たちが書ければ良いのですが、
とてもとても難しいので、私たちでも書きやすいように考案されたのがソースコードです。
ソースコードは現在、様々なプログラミング言語で書かれており、RubyやPHP、JAVA等それぞれで固有の特徴を持ちます。
いよいよ本題!コンパイルとビルドとは??
● コンパイル
一言でいうと、"ソースコードをオブジェクトコードに変換すること" です!
ソースコードは、私たちが書きやすいようにオブジェクトコードを人間語で書いたようなものでしたね。
でもコンピュータは人間ではないので、コンピュータの言語(オブジェクトコード)に翻訳してあげないと理解してくれません。
その変換作業がコンパイル!
ここで重要なのは、
コンパイルはあくまでソースコードをオブジェクトコードに変換するだけということです!
変換した後の実行作業等は別になります。
● ビルド
ビルドとは、 "コンパイルしたファイルを一つにまとめ、実際に実行まですること" です。
噛み砕いて説明していきます。
まずコンパイルしている時点では、ファイルは全てバラバラです。
htmlファイルがあったり、jsファイルがあったり、rbファイルがあったり。。
オブジェクトコードに変換したけど、コンピュータが実行するにはバラバラすぎて何が何やらです。
そこで!
これは全部同じ実行ファイルだよ!と、実行する一連のファイルを一つの実行ファイルとしてまとめて整理するんですね。
(このまとめる作業をリンクと言います。)
またそれ以外にも、実行ファイルから参照される外部ファイル等がある場合は、その外部ファイルを適切な場所にコピーして配置します。
ビルドはこの一連の作業のことをまとめた言葉です。
#さいごに
どうでしょうか??
コンパイルもビルドもよく使われる言葉だけに、しっかりと意味の違いを把握しておくことが大切だと思います。
コンパイルはビルドの作業の一部のことだったんですね。
ぜひこの機会に把握して頂き、知らない人にドヤ顔で説明しちゃってください
【参考URL】
http://e-words.jp/w/%E3%83%93%E3%83%AB%E3%83%89.html
https://www.weblio.jp/content/%E3%83%93%E3%83%AB%E3%83%89