質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • ビルド

    82questions

    ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

  • コンパイル

    78questions

    コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

タスクランナーとビルドツールの違い

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 2,660
退会済みユーザー

退会済みユーザー

タイトル通りなのですが、タスクランナーとビルドツールはどう違うのですか?

タスクツールはwebpack・gulp・gruntなど、
ファイルの圧縮やコンパイルを自動で行うツールだと色んなサイトに書いてありました。

ビルドは「ソースコードをコンパイルして更にライブラリなどとリンクする」操作のことですが、
ビルドツールというと、「そういう操作をしてくれるツールのこと」ですよね。

【質問1】
タスクツールはファイルの圧縮をするが、ビルドツールはしない、とかそういう違いですか?
それとも、「片方は何かに特化していて、何を求めるならこっちを使うべき」
とかそういう違いでしょうか?

【質問2】
あと、コンパイルは「ソースコードの変換」のみを行って、オブジェクトコードの「実行」は行わないといくつかのサイトに書いてありましたが、
ビルドはコンパイルを行いリンクしたあと、オブジェクトコードを「実行」するのですか?
コンパイルとリンクを行うだけですか?

回答よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

こんにちは。

書かれている各用語に広く認知されている定義はありません。その時々の文脈から雰囲気で把握することになります。慣れない人にとって辛い事実ですが。

ビルドは「ソースコードをコンパイルして更にライブラリなどとリンクする」操作のことですが、 
ビルドツールというと、「そういう操作をしてくれるツールのこと」ですよね。

コンパイラやリンカをビルドツールと呼ぶ場合もあれば、Makeのようなコンパイルやリンク過程を自動化するようなツールもビルドツールと呼ぶ場合もあると思います。ソフトウェアを構築するために使うツールを全てビルドツールに分類する場合もあるでしょう。

タスクツールはファイルの圧縮をするが、ビルドツールはしない、とかそういう違いですか? 
それとも、「片方は何かに特化していて、何を求めるならこっちを使うべき」 

タスクランナーもソフトウェアを構築するために使うツールですので、ビルドツールの1つと思います。フロントエンド開発に特化しているビルドツールをタクスランナーと呼ぶイメージでしょうか。

あと、コンパイルは「ソースコードの変換」のみを行って、オブジェクトコードの「実行」は行わないといくつかのサイトに書いてありましたが、 

これはその通りと思います。コンパイルと実行は区別する場合がほとんどです。
コンパイルと書いただけで実行まですると言う意味で使っている人は今のところ見たことないです。

ビルドはコンパイルを行いリンクしたあと、オブジェクトコードを「実行」するのですか? 
コンパイルとリンクを行うだけですか?

ビルドは主にコンパイルとリンクを指します。しかし、コンパイル、リンク、テスト、インストール等も含めてポタン一発で自動実行することもできます。その時、テストやインストールも含めて「ビルド」ボタンを押して行う場合もありますから、必ずしもコンパイルとリンクだけに限定されないと思います。

ところで、「タスクランナー ビルドツール」で検索してみたら、面白いサイトがありました。最近のビルドツールって何なの?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/14 14:29 編集

    回答有難うございます。
    「その時々の文脈から雰囲気で把握することになる」
    早くこれができるようになりたいです。

    一応認識としては、
    ビルドツール:
    個々のコンパイラ・リンカを指す場合もあるし、
    コンパイルとリンク過程を自動化する「ツール」を指す場合もある。
    タスクランナー:
    ビルドツールの中でもフロントエンド開発に特化しているツール。
    ビルド:
    コンパイルとリンクを行うが、それだけに限定されるわけではない。
    ということでよろしいでしょうか?

    あともう一つ追加で質問なのですが、
    http://qiita.com/rico/items/9ab8aa110e757a13ef37
    ↑この記事のコンパイルの説明の引用で
    「変換のみを一括して行い、生成したオブジェクトコードの実行は行わない。」
    と書いてありますが、これは正しくは
    「生成したオブジェクトコードから"実行可能なプログラム(アプリケーション)"の生成(リンク?)を行わない」
    だと思うのですが、どうでしょうか。

    よろしくお願いします。

    キャンセル

  • 2016/10/14 14:42

    > ということでよろしいでしょうか?

    その理解で大丈夫です。

    > 「生成したオブジェクトコードから"実行可能なプログラム(アプリケーション)"の生成(リンク?)を行わない」

    厳密にはその通りです。ただ、コンパイル・コマンドでリンクも一緒に行うコンパイラも少なくないので、コンパイルとリンクのことをコンパイルと表現してしまうこともあります。

    キャンセル

  • 2016/10/14 22:19

    無事理解することができました。
    "その時々の文脈から雰囲気で把握"することができるように頑張ります。
    回答有難うございました!

    キャンセル

  • 2016/10/14 22:31

    > "その時々の文脈から雰囲気で把握"することができるように頑張ります。

    人によって表現が結構異なるのでたいへんですが、頑張ってください。
    実際にものを使っていると、なんとなく掴めてくると思いますよ。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • ビルド

    82questions

    ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

  • コンパイル

    78questions

    コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます