パソコンやスマホでアプリを使うことが多いよな。これらのアプリをどうやってつくっているのでしょう。アプリのプログラムはそのコンピューターが理解できる機械語(マシン語)というものです。ですが、プログラマはいきなり機械語でプログラムをつくるわけではない。まずは人間にもわかりやすいプログラミング言語を使う。日本語を知らないアメリカ人に日本語で話しかけらても通じないように、プログラミング言語のままではコンピューターで動かせないぞ。そのために必要なのがコンパイルやビルドです。これらの違いや、なぜ分かれているのかを、長年会社でコンパイルやビルドを繰り返してきたプログラマでもあるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。コンパイルやビルドを1万回以上はやってきた。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさん。

プログラムは部品の集合?コンパイルとビルドとは

パソコンやスマホのアプリはそのコンピューターの言葉で書かれたプログラムです。機械用の言葉なので、人間が普段読み書きしている言葉とはちがいます。では、プログラマはいきなりコンピューターの言葉でプログラムをつくるのでしょうか。大昔はそういう時代もありましたが、現代は多くの場合人間に分かりやすいプログラミング言語というものを使います。

そのプログラミング言語で書いたプログラムを、コンピューターの言葉に直すときに使う用語がコンパイルやビルド。アプリは大きなものではいくつもの部品からできています。その部品をコンピューターの言葉にするのがコンパイルで、できた部品をまとめて1つのアプリにするのがビルドです。分かりにくいと思うので、もう少し詳しく説明していきます。

コンパイル:1つの部品をコンピューター向けに変換すること

パソコンやスマホで使うアプリにも、大きいものから小さいものまでいろいろあります。大きなものではいくつもの部品からできていることも多いです。そのひとつひとつの部品を、人間が分かりやすいプログラミング言語から機械の言葉に翻訳することを「コンパイル」、実際に翻訳するアプリのことを「コンパイラ」と呼びます。

このコンパイルする前のプログラミング言語で書いたものが「ソースコード」、略してソースです。情報の出所のことを情報ソースとかいう言い方もしますよね。ソースというのは源という意味です。また、コンパイルした結果を「オブジェクトコード」、略してオブジェクトと呼びます。つまりコンパイルとはソースをオブジェクトに変換することです。

ビルド:いくつかの部品をまとめてひとつのプログラムにまとめること

ソースをコンパイルするとオブジェクトができますが、それだけではまだアプリにはなりません。細かい話は後で説明しますが、コンパイル以外にも作業をした結果、アプリができあがります。このソースからアプリをつくることがビルドです。ビルドとは建設すること。アプリをソースからつくることがビルドになります。その中にコンパイルも含まれているのです。

\次のページで「プログラムは定食メニュー?ご飯と味噌汁とおかずでできている」を解説!/

プログラムは定食メニュー?ご飯と味噌汁とおかずでできている

image by iStockphoto

コンピューターの話をしても分かりにくいので、アプリを定食に例えてみます。例えば、トンカツ定食や、焼き魚定食などがありますよね。アプリはこの定食メニューと思ってください。料理人は客の注文を受けて指定された料理をつくります。これがプログラミング。完成すると客の前に運ばれてきます。ここまではよいですね。

ご飯やおかずをそれぞれ作る?コンパイルとは

トンカツ定食の内容は店によってさまざまです。ですが、大抵はご飯と味噌汁、そしてトンカツとキャベツの千切りでしょう。漬物や他の小鉢がついてくるかもしれません。ご飯は炊飯器で炊きますし、味噌汁は鍋でつくるでしょう。

アプリも同じトンカツ定食ならトンカツを揚げる必要がありますよね。このトンカツの調理が「コンパイル」です。肉やパン粉などがソースにあたります。肉などを鍋に入れて揚げる、ご飯を炊く、味噌汁を作るという調理がコンパイルなのです。ご飯と味噌汁、トンカツは別々に料理(コンパイル)できることを覚えておいてください。

できたものを1つのお盆に?リンクとは

定食はたいてい、お盆にいくつかの茶碗や皿で提供されます。トンカツは注文があるたびに揚げるとして、ご飯や味噌汁はおそらくあらかじめ作ってあるでしょう。漬物などは買ってきたものかもしれません。これらをまとめてお盆の上に揃えて定食メニューにまとめることを「リンク」と呼びます。

リンクとは英語で「つなげる、接続する、関連づける」といった意味です。つまり、トンカツやご飯、味噌汁といったそれぞれ独立したものをひとまとめにすることが「リンク」になります。

コンパイルとリンクを合わせたのがビルド!

ここまで説明すればビルドも想像がつくかと思います。コンパイルとリンクをしてトンカツ定食を提供するまでの全体がビルドです。ビルドはコンパイルとリンクだけでない場合もありますが、この2つは必ず必要になります。

例えば、キャベツの千切りやご飯、味噌汁などは注文を受けてから作るのではなく、あらかじめ用意してあることが多いでしょう。アプリをつくる時もそんな下ごしらえや前準備もあります。ただ、メインの料理をつくるコンパイルや、それらを皿に盛り付けてお盆に並べるリンク必ず必要。そして、注文を受けてから客に提供されるまでの全体がビルドになります。

元々は別物?コンパイルとリンクの歴史

image by iStockphoto

現代のプログラマがアプリをつくるときに使うものは、ビルドボタンを押すことでソースから一気にアプリを作ってしまうものが多いです。では、なぜビルドとコンパイルを分けているのでしょう。ビルドしてしまえばよいのであれば、コンパイルを分ける必要もありません

実際、プログラマの中にはビルドしか使ったことない人もいるでしょう。分かれている経緯や理由について簡単に説明します。

\次のページで「昔はバラバラ?コンパイルとリンクが別な理由」を解説!/

昔はバラバラ?コンパイルとリンクが別な理由

実は、昔はアプリをつくるために使う道具がバラバラだったのです。今でこそコンピューターはさまざまな作業を一気にこなします。しかし、コンピューターができた頃はとても非力で、一度にあまり多くのことができません。そのため、コンパイルはコンパイル、リンクはリンク、と分けないといけなかったのです。

初めてのお使いで子供にこの店であれを買い、別の店でこれを買って、とお願いしても子供が混乱してしまいますよね。当時のコンピューターも同じ。できることは細かく分けて、1ステップずつやってもらわないといけなかったのです。

ひとつになって便利?統合開発環境の登場

コンピューターが進化すると一度に色々なことができるようになります。子供も小学校から、中学、高校と進めばできることが増えますよね。コンピューターが成長してできることも多くなれば、親としてもまとめてお願いできた方が楽です。

アプリ作成もコンピューターが進化したことで、より便利な道具が登場します。それが統合開発環境(IDE)です。それまではコンパイル、リンク、その他の作業はみなバラバラでした。それがIDEによってひとつの道具ですべてできるようになります。今では当たり前になってますが、当時のプログラマはとても楽に。一つになった結果、すべてを一貫して作業するビルドができるようになったのです。

今ではビルドの途中経過?ビルドだけ注目される理由

IDEの登場で一気にビルドするのが普通になった結果、ビルドが主に使われるようになりました。例えば、Windowsのアプリをつくるために使うVisual Studioでは、ビルドというメニューの中にコンパイルがありますビルドという作業の中のひとつという位置付けです。リンクというメニューはもはやありません。

では、なぜビルドだけでなく、コンパイルが残っているのでしょう。これはコンパイルだけしたい時があるため。プログラマも最初から問題なくアプリができるとは限りません。ソースのなかに間違いがあることも。その時、コンパイルすれば間違いを教えてくれることがあります。そのため、間違いがないか確認するためにコンパイルだけしたい時があるのです。

\次のページで「ビルドの裏に、コンパイルとリンクあり」を解説!/

ビルドの裏に、コンパイルとリンクあり

現代のアプリ作成ではビルドをすれば一通りの作業を一気に処理してくれます。そのため、プログラマでもビルドしか使わない、その中でどういう作業をしているか知らないということもあるかもしれません。

しかし、実際にはアプリを作るときにはコンパイルとリンクという作業をしています。この全体がビルドです。アプリはいくつかの部品からできています。そのひとつひとつの部品を作るのがコンパイルできた部品をまとめてアプリにするのがリンクそれらをまとめてビルドと呼びます。

" /> 簡単でわかりやすい!コンパイルとビルドの違いとは?翻訳?建設?プログラマが詳しく解説 – Study-Z
IT・プログラミング雑学

簡単でわかりやすい!コンパイルとビルドの違いとは?翻訳?建設?プログラマが詳しく解説

パソコンやスマホでアプリを使うことが多いよな。これらのアプリをどうやってつくっているのでしょう。アプリのプログラムはそのコンピューターが理解できる機械語(マシン語)というものです。ですが、プログラマはいきなり機械語でプログラムをつくるわけではない。まずは人間にもわかりやすいプログラミング言語を使う。日本語を知らないアメリカ人に日本語で話しかけらても通じないように、プログラミング言語のままではコンピューターで動かせないぞ。そのために必要なのがコンパイルやビルドです。これらの違いや、なぜ分かれているのかを、長年会社でコンパイルやビルドを繰り返してきたプログラマでもあるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。コンパイルやビルドを1万回以上はやってきた。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさん。

プログラムは部品の集合?コンパイルとビルドとは

パソコンやスマホのアプリはそのコンピューターの言葉で書かれたプログラムです。機械用の言葉なので、人間が普段読み書きしている言葉とはちがいます。では、プログラマはいきなりコンピューターの言葉でプログラムをつくるのでしょうか。大昔はそういう時代もありましたが、現代は多くの場合人間に分かりやすいプログラミング言語というものを使います。

そのプログラミング言語で書いたプログラムを、コンピューターの言葉に直すときに使う用語がコンパイルやビルド。アプリは大きなものではいくつもの部品からできています。その部品をコンピューターの言葉にするのがコンパイルで、できた部品をまとめて1つのアプリにするのがビルドです。分かりにくいと思うので、もう少し詳しく説明していきます。

コンパイル:1つの部品をコンピューター向けに変換すること

パソコンやスマホで使うアプリにも、大きいものから小さいものまでいろいろあります。大きなものではいくつもの部品からできていることも多いです。そのひとつひとつの部品を、人間が分かりやすいプログラミング言語から機械の言葉に翻訳することを「コンパイル」、実際に翻訳するアプリのことを「コンパイラ」と呼びます。

このコンパイルする前のプログラミング言語で書いたものが「ソースコード」、略してソースです。情報の出所のことを情報ソースとかいう言い方もしますよね。ソースというのは源という意味です。また、コンパイルした結果を「オブジェクトコード」、略してオブジェクトと呼びます。つまりコンパイルとはソースをオブジェクトに変換することです。

ビルド:いくつかの部品をまとめてひとつのプログラムにまとめること

ソースをコンパイルするとオブジェクトができますが、それだけではまだアプリにはなりません。細かい話は後で説明しますが、コンパイル以外にも作業をした結果、アプリができあがります。このソースからアプリをつくることがビルドです。ビルドとは建設すること。アプリをソースからつくることがビルドになります。その中にコンパイルも含まれているのです。

\次のページで「プログラムは定食メニュー?ご飯と味噌汁とおかずでできている」を解説!/

次のページを読む
1 2 3 4
Share: