ビルドとデプロイって結局なんやねん!?!?!???みたいな記事


ビルドとデプロイとは

ソフトウェア開発してるとでてくる用語ですね。
Jenkins使ってて雰囲気でしか分かってないなーと思ったんでまとめてみます。

辞書的意味

Weblio辞書さんより

  • ビルド

ビルドとは、コンピュータやソフトウェア関連の用語としては、ソースコードとしてコーディングされたソフトウェアを、コンパイル、リグレッションテスト、リリースノートや関連ドキュメントの生成、第三者に提出したり配布したりするための専用のファイルの生成、などを行う一連の工程のことである。

  • デプロイ

デプロイとは、主にネットワークを通じて提供されるWebアプリケーションなどのシステム開発工程において、システムを利用可能な状態にすることである。
デプロイ(deploy)という言葉は元々、配置する、展開するといった意味の英語である。デプロイはソフトウェアのリリースやインストールも含んだ意味の広い言葉であり、開発環境からステージング環境へシステムを反映させることも、ステージング環境から本番環境へ反映させることも、「デプロイする」と表現できる。

くだいてみる

辞書的な意味が結構わかりやすくてびっくりした。。

  • ビルド

これまでソースコード1つのプログラムしかやってなかった経験からだと、書いたソースコードをちゃちゃっと機械語に翻訳して実行ファイルを作成するのがコンパイルだ、と思ってたんですが、
厳密には少し違うみたい。

大きなプロジェクトを作成するときなんかはソースコードのファイルはたくさんある
そのそれぞれのソースコードをそれぞれ機械語に翻訳したあと、1つの実行ファイルにまとめるみたいな流れになるらしい。

この、ソースコードをそれぞれ翻訳するのがコンパイルで、コンパイルされたファイル達を1つの実行ファイルにまとめてあげるのがリンク

ビルドっていうのはこのコンパイルとリンクをまとめて行っているみたいなイメージでいいのかな。

  • デプロイ

ビルドしてできた実行ファイルを、実行する環境に合わせて、実際に実行できるようにすること。
まあデプロイしたらプレイできるんです。(雑)

インストールとどう違うねん!?!?!?みたいな疑問(僕は持たなかったけど持つ人いるかな)に対する答えとしては、

開発者がデプロイして「準備おっけーだよ」ってあげたやつはネットワーク上で利用できるようになる。例えば ブラウザでできるゲームとか。
インストールっていうのは自分のpcとかにソフトを入れて自分のpcだけで利用できるようにすること

みたいな意味かな

あとがき

難しかった。なんとな〜くは理解できたかな。説明するのって難しい。
広辞苑とか書いてる人って天才だな。
間違ってたら教えてください。