よくある質問
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
-
Closure Compiler とは使用するメリット
-
Closure Compiler は、JavaScript のダウンロードと実行を高速化するためのツールです。Closure Compiler を使用すると、JavaScript ファイルのサイズを縮小し、効率を高めることができます。
-
Closure Compiler は、他の JavaScript コンプレッサとどう違うのですか?
-
一般的に、Closure Compiler は他のコードの最小化ツールよりも圧縮率が高く、ウェブ アプリケーションのダウンロード時間を短縮します。また、Closure Compiler は、開発中に(テスト中ではなく)構文エラーを見つけ、バグの可能性があるコードパターンを特定するのに役立ちます。
Simple モードでは、Closure Compiler はコンパイラのような分析を使用してコードサイズを最小限に抑える方法を見つけるため、他のツールよりも優れた結果が得られるはずです。たとえば、Closure Compiler は、数回しか使用されない関数をインライン化したり、変数名を再利用したり、定数式を事前計算したりできます。
詳細モードでは、Closure Compiler は追加された型アノテーションを使用して、見つけにくいバグを検出することもできます。
-
Closure Compiler は HTML に埋め込まれた JavaScript をコンパイルできますか?
-
いいえ。Closure Compiler は、JavaScript のみを含むファイルでのみ動作します。
-
Closure Compiler を他の JavaScript ミニファイアと組み合わせて使用できますか?
-
はい。Closure Compiler は有効な JavaScript を読み取り、有効な JavaScript を生成します。そのため、別のミニファイアでファイルを実行する前または後に、JavaScript ファイルに Closure Compiler を適用できます。
Closure Compiler などのミニファイアは、入力コードについて想定していることがあることに注意してください。コメントを削除するミニファイアは、別のツールで必要なライセンスやアノテーション情報を削除する可能性があります。
-
Closure Compiler が生成する JavaScript をデバッグするにはどうすればよいですか?
-
コンパイルされたコードがエラーをスローしたり、予期しない動作をしたりする場合は、ソースマップを使用して問題をデバッグできます。ソースマップは、コンパイルされたコードと元のソースコード間のマッピングを提供します。これにより、ブラウザのデベロッパー ツールで、コンパイルされたコードではなく元のソースコードを表示できます。Closure Compiler でソースマップを生成するには、コマンドラインで
--create_source_map
フラグを渡します。次に例を示します。$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
次に、ソースマップをサポートするブラウザ(Chrome や Firefox など)を使用している場合は、コンパイルされていないコードの場合と同様にブレークポイントを設定できます。ブラウザのデベロッパー ツールには、元のソースの対応するコード行が表示されます。ソースマップに関する情報など、Chrome のデベロッパー ツールについて詳しくは、JavaScript のデバッグをご覧ください。
-
コンパイラは、アプリケーションの実行速度とダウンロード コードサイズの間でトレードオフを行いますか?
- はい。最適化コンパイラは、常にトレードオフを行います。サイズを最適化すると、わずかな速度のオーバーヘッドが発生することがあります。ただし、Closure Compiler のデベロッパーは、実行時のオーバーヘッドが大幅に増えないように注意しています。コンパイラの最適化の中には、実行時間を短縮するものもあります(次の質問を参照)。
-
コンパイラは速度を最適化しますか?
-
ほとんどの場合、コードが小さいほど高速になります。ウェブ アプリケーションでは、通常、ダウンロード時間が最も重要な速度要因であるためです。冗長性を減らす最適化により、コードの実行時間も短縮されます。
-
コンパイルできるファイルのサイズに制限はありますか?
-
コンパイル ウェブサービスには最大ファイル サイズがありますが、スタンドアロン コンパイラ アプリケーションにはありません。
-
Closure Compiler はすべてのプラットフォームで利用できますか?
-
コンパイラは Java で記述されているため、Java が実行される場所であればどこでも実行できます。
-
コンパイラは、有効な JavaScript を処理できますか?
-
ほとんどの場合。
eval()
や with()
などの JavaScript 構造の一部は、コンパイラの変換の基盤となる前提を無効にする可能性があります。
-
Closure Compiler を使用するには、ウェブ開発についてどの程度の知識が必要ですか?
-
Closure Compiler は JavaScript 開発用のツールであるため、コンパイラを使用するには JavaScript でのプログラミング方法を知っておく必要があります。ただし、JavaScript を使用するユーザーであれば、Closure Compiler を使用するメリットがあります。
-
Closure Compiler は Closure Library とどのように連携しますか?
-
Closure Compiler は、Closure Library を使用するコードに対して特別なチェックと最適化を行います。また、Closure Compiler サービスは Closure Library ファイルを自動的に含めることができます。Closure の使い方では、必要な Closure の部分を宣言するための構文について説明しています。API で Closure ライブラリを使用する方法については、API リファレンスをご覧ください。Closure Compiler アプリケーションで Closure Library を使用するには、まず Closure Library をダウンロードする必要があります。Closure ライブラリのサポートは、コンパイラ アプリケーションでデフォルトで有効になっています。
-
ADVANCED_OPTIMIZATIONS
でコンパイルすると、コードが動作しなくなるか、コンパイラがエラーを生成します。理由
-
通常、高度なモードを使用するには、準備とコードの変更が必要です。高度なコンパイルと外部ファイルでは、コードが
ADVANCED_OPTIMIZATIONS
で動作することを確認する方法について説明しています。
-
コンパイルされたスクリプトにランダムな改行があるのはなぜですか?
-
Closure Compiler は、意図的に 500 文字ごとに改行を追加します。ファイアウォールやプロキシは、非常に長い行を含む大きな JavaScript ファイルを破損させたり、無視したりすることがあります。500 文字ごとに改行を追加すると、この問題を回避できます。改行を削除しても、スクリプトのセマンティクスには影響しません。コードサイズへの影響は小さく、Compiler は改行の配置を最適化するため、ファイルを gzip 圧縮した場合のコードサイズ ペナルティはさらに小さくなります。
-
ソースコードに表示する必要がある著作権表示またはオープンソース ライセンス テキストがあります。Closure Compiler がこのテキストを削除しないようにするにはどうすればよいですか?
-
Closure Compiler は JSDoc の
@license
タグをサポートしています。@license
タグを JSDoc コメントに追加すると、コンパイラの出力でコメントが保持されます。詳しくは、Closure Compiler 用の JavaScript のアノテーションをご覧ください。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-07-26 UTC。
[null,null,["最終更新日 2025-07-26 UTC。"],[[["\u003cp\u003eThe Closure Compiler is a tool for making JavaScript download and run faster by reducing file size and improving efficiency.\u003c/p\u003e\n"],["\u003cp\u003eIt offers greater compression than standard minifiers and helps identify syntax errors and potential bugs during development.\u003c/p\u003e\n"],["\u003cp\u003eThe Closure Compiler works with any valid JavaScript and can be used alongside other minifiers for enhanced optimization.\u003c/p\u003e\n"],["\u003cp\u003eSource maps enable debugging of compiled code by providing a mapping back to the original source.\u003c/p\u003e\n"],["\u003cp\u003eWhile prioritizing download speed, the compiler also performs optimizations to enhance execution speed without significant runtime overhead.\u003c/p\u003e\n"]]],[],null,["# Frequently Asked Questions\n\n- [What is the Closure Compiler? Why should I use it?](#what)\n- [How is the Closure Compiler different\n from the other JavaScript compressors that are out there?](#how-different)\n- [Can the Closure Compiler compile JavaScript that's embedded in HTML?](#tags)\n- [Can I use the Closure Compiler together with other JavaScript\n minifiers?](#other-minifiers)\n- [How can I debug the JavaScript that the Closure Compiler produces?](#sourcemaps)\n- [Does the compiler make any trade-off between my application's\n execution speed and download code size?](#tradeoffs)\n- [Does the compiler optimize for speed?](#speed)\n- [Are there any restrictions on the size of the files that can be compiled?](#size-restrictions)\n- [Is the Closure Compiler available for all platforms?](#platforms)\n- [Can the Compiler process any legal JavaScript?](#restrictions)\n- [How does the Closure Compiler work with\n the Closure Library?](#how-closure)\n- [My code stops working or the Compiler produces\n errors when I compile\n with `ADVANCED_OPTIMIZATIONS`. Why?](#advanced)\n- [Why are there random line feeds in\n compiled scripts?](#linefeeds)\n- [I have copyright notices or open source license\n text that must appear in my source code. How do I keep the Closure\n Compiler from stripping this text out?](#license)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\nWhat is the Closure Compiler? Why should I use it?\n:\n The Closure Compiler is a tool for making JavaScript download and\n run faster. You can use the Closure Compiler to reduce the size of\n your JavaScript files and to make them more efficient.\n\n\nHow is the Closure Compiler different from the other JavaScript\ncompressors that are out there?\n\n: Generally, the Closure Compiler should meet or exceed the compression\n of other code minification tools, and improve download times for your\n web application. In addition, the Closure Compiler can help you\n find syntax errors during development (rather than during testing)\n and identify potentially buggy code patterns.\n\n In Simple mode, Closure Compiler should be able to do better than\n other tools because it uses compiler-like analysis to find additional\n ways to minimize code size. For example, the Closure Compiler can\n inline functions that are used in only a few occurrences, reuse\n variable names, and pre-compute constant expressions.\n\n In Advanced mode, Closure Compiler can also use your added type\n annotations to find hard-to-spot bugs.\n\n\nCan the Closure Compiler compile JavaScript that's embedded in HTML?\n:\n No. The Closure Compiler works only on files that contain only JavaScript.\n\n\nCan I use the Closure Compiler together with other JavaScript\nminifiers?\n\n: Yes. Closure Compiler reads in any valid JavaScript and generates\n valid JavaScript, so you can apply the Closure Compiler to a\n JavaScript file either before or after you run the file through a\n different minifier.\n\n Remember that Closure Compiler and other minifiers might have\n expectations about the incoming code. A minifier that strips\n comments may remove licenses or annotation information needed by\n another tool, for example.\n\n\nHow can I debug the JavaScript that the Closure Compiler produces?\n:\n If your compiled code is throwing errors or exhibiting unexpected behavior,\n you can use Source Maps to debug the issue. A source map provides a mapping\n between the compiled code and the original source code so that the browser's\n developer tools can show you your original source code instead of the compiled code.\n To make the Closure Compiler produce a source map, pass the\n `--create_source_map` flag on the command line. For example: \n\n ```\n $ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js\n ```\n\n Then, if you're using a browser that supports Source Maps (such as Chrome\n or Firefox), you can set breakpoints just as you would for uncompiled code,\n and the browser's developer tools will show the corresponding line of code\n in the original source. For more information about Chrome's developer tools, including\n information about source maps, see\n [Debugging JavaScript](https://developers.google.com/chrome-developer-tools/docs/javascript-debugging).\n\n\nDoes the compiler make any trade-off between my application's\nexecution speed and download code size?\n:\n Yes. Any optimizing compiler makes trade-offs. Some size\n optimizations do introduce small speed overheads. However, the\n Closure Compiler's developers have been careful not to introduce\n significant additional runtime. Some of the compiler's\n optimizations even decrease runtime (see next question).\n\n\nDoes the compiler optimize for speed?\n:\n In most cases smaller code is faster code, since download time is usually the most important speed factor in web applications. Optimizations that\n reduce redundancies speed up the run time of code as well.\n\n\nAre there any restrictions on the size of the files that can be compiled?\n:\n The compilation web service has a maximum file size, but the\n standalone compiler application does not.\n\n\nIs the Closure Compiler avalable for all platforms?\n:\n The compiler is written in Java, so it can run anywhere Java runs.\n\n\nCan the Compiler process any legal JavaScript?\n:\n Mostly. Some JavaScript constructs, including `eval()`\n and `with()`, can invalidate assumptions on which the\n compiler's transformations are based.\n\n\nHow much do I need to know about web development to use the\nClosure Compiler?\n:\n The Closure Compiler is a tool for JavaScript development, so you\n do need to know how to program in JavaScript to use the\n compiler. But anyone who uses JavaScript can benefit from using\n the Closure Compiler.\n\n\nHow does the Closure Compiler work with the Closure Library?\n:\n The Closure Compiler provides special checks and optimizations for\n code that uses the Closure Library. In addition, the Closure\n Compiler service can automatically include Closure Library\n files. [Finding\n Your Way around Closure](/closure/library/docs/introduction#deps) describes the syntax for declaring the\n parts of Closure that you need. See\n the [API\n reference](/closure/compiler/docs/api-ref#closure) for information on using the Closure Library with the\n API. To use the Closure Library with the Closure Compiler\n application you must\n first [download\n the Closure Library](https://github.com/google/closure-library). Support for the Closure Library is\n enabled in the compiler application by default.\n\n\nMy code stops working or the Compiler produces errors when I\ncompile with `ADVANCED_OPTIMIZATIONS`. Why?\n:\n Using Advanced mode usually requires some preparation and code\n changes. [Advanced Compilation\n and Externs](/closure/compiler/docs/api-tutorial3) explains how to make sure your code works\n with `ADVANCED_OPTIMIZATIONS`.\n\n\nWhy are there random line feeds in compiled scripts?\n:\n The Closure Compiler intentionally adds line breaks every 500\n characters or so. Firewalls and proxies sometimes corrupt or\n ignore large JavaScript files with very long lines. Adding line\n breaks every 500 characters prevents this problem. Removing the\n line breaks has no effect on a script's semantics. The impact on code size is small, and the Compiler\n optimizes line break placement so that the code size penalty is even smaller when files are gzipped.\n\n\nI have copyright notices or open source\nlicense text that must appear in my source code. How do I keep the\nClosure Compiler from stripping this text out?\n:\n Closure Compiler supports the JSDoc `@license` tag. Add the\n `@license` tag to any JSDoc comment to preserve the\n comment in the compiler\n output. See [Annotating\n JavaScript for the Closure Compiler](/closure/compiler/docs/js-for-compiler#tag-license) for more information."]]