この記事は Happiness Chain Advent Calendar 2023 16 日目の記事です。
はじめに
この記事は、ソースコードを書いたあと、プログラムが動く状態になるまでを簡単にまとめた記事です。以下の方向けに書いています。
- コンパイル、リンク、ビルド、デプロイがよくわからない
- ソースコードを書いたあと、どうやってプログラムが動いているか理解できていない
コンパイル=ビルドじゃない?と思っていた時期もありました。同じような方がいるんじゃないかと思ったのでそんな方に参考になれば幸いです。
前提として
この記事の内容はコンパイル方式の言語を想定して書いています!
インタプリタ方式で実行される言語についてはコンパイルが不要であり、流れが異なります。
書いたソースコードを動かすために必要なこと
まず第一に、当たり前ですが自分が書いたソースコードはそのまま放置していても勝手に動き始めるわけではありません。
なので動く状態にするところからはじめていきます。
簡単に、動かすまでの流れは以下の作業が必要になります。
- コンパイル
- リンク
- デプロイ
ビルドがない、、、?と思った方もいるかもしれません。理由は後ほどわかります。
順を追って説明していきます。
コンパイルとは
プログラミング言語にもよりますが、高級言語などの場合は、コンピュータが理解できる言語と人間が理解できる言語のどちらに近いかというと後者にあたります。
そのため、書いたソースコードのままだと、コンピュータは理解できず、動かせません。コンピュータが理解できる言語(機械語)に変換する必要があります。
そして機械語に変換されたものは、オブジェクトコードと呼ばれます。
一言でまとめると、
コンパイルは、ソースコードをオブジェクトコードに変換する作業です。
リンクとは
コンパイルが終わった時点では、オブジェクトコードに変換された状態で、まだプログラムとしては実行できません。
なぜならオブジェクトコードそれぞれがバラバラな状態になっているからです。プログラムとして実行させるためには、実行ファイルとして一つのまとまりにしなければなりません。
リンクは、実行ファイルを生成する役割を持っています。
一言でまとめると、
リンクは、オブジェクトコードから実行ファイルを生成する作業です。
ビルドとは
ビルドは、コンパイルとリンクをまとめた一連の流れのことです。
なのでビルド=コンパイル、ではなく、
ビルド=コンパイル+リンク と考えればOKです。
デプロイとは
ビルドまで完了していると、実行ファイルが出来上がっている状態になります。そのため、プログラムとしては動く状態にはなっています。
ただWebアプリケーションなどは、これでは足りません。
Webサーバにプログラムの実行ファイルを配置し、利用できる状態にします。
この作業がデプロイです。
最後に
簡単にまとめましたので、より詳しい動きを知りたい方は、書籍などで理解を深めることをお勧めします。