目的
基本がまだまだだ。
結論
JavaScriptはコンパイル不要のインタープリター言語である。
ビルドはしなくてもブラウザで動く場合もあるが、ビルドが必要な時もある(後述)。
インタープリター(逐次翻訳型)とは
実行時に一行ずつ翻訳しながら実行する作業のこと。
以下mdn引用。
インタープリター言語では、コードが上から下に実行されてコードの実行結果がすぐに返ってきます。ブラウザーが実行する前にコードを何らかの形に変換する必要はありません。 コードはプログラマーに親しみやすいテキストで受け取られ、それが直接処理されます。
JavaScriptのほか、Pythonはインタプリター型言語に該当する。
コンパイルとは
インタープリターとは対になる言葉。
開発者が書いたプログラムを、機械が理解できるように一括して翻訳する作業のこと。
JavaやC言語などはコンパイラ言語。
TypeScriptもJavaScriptにコンパイルされてから実行されるのでコンパイラ言語。
以下「TypeScript Deep Dive 日本語版」引用。
TypeScriptは、 最終的にJavaScriptにコンパイルされます。実際に実行されるのは、JavaScriptです。開発をするときは、TypeScriptを書きますが、ブラウザで実行する時には、TypeScriptをコンパイルして作成されたJavaScriptを実行する、ということです(Node.jsでも同じです)。
ビルドとは
(コンパイルしてできた)複数のオブジェクトファイルと、ライブラリが結合したり(この作業のことをリンクという)様々な手順を踏んで実行可能ファイルを作成するまでの作業のこと。
JavaScriptのビルド
以下のケースの場合、JavaScriptでもビルドが必要になる。
- 複数のJavaScriptファイルをまとめたい場合(bundle)
- ES2015などの新しい規格を使用したい場合(transpile)
- ソースコードを圧縮させたい場合(minify)
「ビルド=コンパイル+リンク」と思っていたが、
JavaScriptファイルの場合はコンパイルしないかつ、リンク以外の処理もビルドに含まれるので、単に「ビルド=コンパイル+リンク」という解釈はよくなさそう。
ちなみにデプロイとは
ビルドしてできた実行可能ファイルを実行環境(サーバーなど)に配置すること。
ちなみにVue.jsでビルドは必要か
基本的なVueプロジェクトを作成して開発する場合は必要と思って良い。
ただし、ScriptタグでCDNからVueを読み込む場合は不要。
以下Vue.js公式ドキュメントから引用
CDN から Vue を使用する場合は「ビルドステップ」は必要ありません。これによりセットアップが非常にシンプルになり、静的な HTML を拡張したり、バックエンドのフレームワークと統合したりするのに適しています。ただし、単一ファイルコンポーネント(SFC)の構文は使用できません。
参考
- TypeScript Deep Dive 日本語版
- mdn web docs
- Vue.js公式ドキュメント