<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Minify &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/minify/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Thu, 12 Dec 2013 01:31:01 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>&#034;Minify&#034; &#8211; Alphabetical Advent Calendar 2013</title>
		<link>https://blog.mach3.jp/2013/12/12/jaac2013-m-minify.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 12 Dec 2013 01:31:01 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Advent Calendar 2013]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Minify]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3718</guid>

					<description><![CDATA[&#8220;M&#8221; は minify の &#8220;M&#8221;。 Minify minify は、リソースを圧縮してサイズを小さくするプロセスの事です。 JavaScript のファイルで偶に jq [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>&#8220;M&#8221; は minify の &#8220;M&#8221;。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-3TSd7CVVOtA/UqR4jRvcVYI/AAAAAAAACYg/pEPEoSrgTZM/s400/ac2013-m.png" alt="M"/></figure>



<p></p>



<span id="more-3718"></span>



<h2 class="wp-block-heading">Minify</h2>



<p><strong>minify</strong> は、リソースを圧縮してサイズを小さくするプロセスの事です。 JavaScript のファイルで偶に <strong>jquery.min.js</strong> のように接尾辞 <strong>min</strong> をつけている事があると思いますが、 これはおそらく <strong>minified</strong> という事でしょう。</p>



<p>Webコンテンツはネットワークからリソースをダウンロードして動くので、それらの軽量化は重要な課題の一つです。 特に JavaScript と CSS のミニファイツールは広く出回っていて導入も簡単です。</p>



<h2 class="wp-block-heading">uglify + mincss</h2>



<p>まずは Grunt から公式にプラグインが提供されている UglifyJS と Cssmin を使ってみましょう。</p>



<h3 class="wp-block-heading"><a href="https://github.com/gruntjs/grunt-contrib-uglify">UglifyJS</a></h3>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://github.com/gruntjs/grunt-contrib-uglify
</div></figure>



<p><a href="http://lisperator.net/uglifyjs">UglifyJS</a> は JavaScript で実装された JavaScript の圧縮ツールです。 コマンドラインで圧縮する場合は npm で <strong>uglify-js</strong> をインストールし、<strong>uglifyjs</strong> コマンドを使用します。 Grunt で使用する場合は、 <strong>grunt-contrib-uglify</strong> をインストールします。</p>



<p>ここでは、Grunt でのシンプルな例を挙げてみます。（Grunt の基本的な部分はここでは省きます）</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">uglify: {
    <span class="hljs-attr">dist</span>: {
        <span class="hljs-attr">options</span>: { ... },
        <span class="hljs-attr">files</span>: {
            <span class="hljs-string">"js/hoge.min.js"</span>: <span class="hljs-string">"js/hoge.js"</span>,
            <span class="hljs-string">"js/foo.min.js"</span>: &#91;<span class="hljs-string">"js/foo.js"</span>, <span class="hljs-string">"js/bar.js"</span>, <span class="hljs-string">"js/baz.js"</span>]
        }
    }
}
</code></span></pre>


<p><strong>options</strong> では圧縮のレベルなど、<a href="https://github.com/gruntjs/grunt-contrib-uglify/blob/master/README.md">非常に多くの項目の設定が可能です</a>。 <strong>files</strong> オブジェクトの キー に出力先のファイル名を指定し、値にソースとなるファイル（群）を指定します。 複数ファイルをまとめて圧縮したい場合は、配列で指定する事ができます。</p>



<p>上の例では、 &#8220;js/hoge.js&#8221; の圧縮結果が &#8220;js/hoge.min.js&#8221; に保存され、 &#8220;js/foo.js&#8221; + &#8220;js/bar.js&#8221; + &#8220;js/baz.js&#8221; を圧縮した結果が &#8220;js/foo.min.js&#8221; として保存されます。</p>



<h3 class="wp-block-heading"><a href="https://github.com/gruntjs/grunt-contrib-cssmin">Cssmin</a></h3>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://github.com/gruntjs/grunt-contrib-cssmin
</div></figure>



<p>Cssmin は CSSファイルを圧縮する為の Grunt タスクです。 Grunt タスクの多くがそうであるように、基本的な使い方はあまりかわりません。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">cssmin: {
    <span class="hljs-attr">dist</span>: {
        <span class="hljs-attr">options</span>: { ... },
        <span class="hljs-attr">files</span>: {
            <span class="hljs-string">"css/hoge.min.css"</span>: <span class="hljs-string">"css/hoge.css"</span>,
            <span class="hljs-string">"css/foo.min.css"</span>: &#91;<span class="hljs-string">"css/foo.css"</span>, <span class="hljs-string">"css/bar.css"</span>, <span class="hljs-string">"css/baz.css"</span>]
        }
    }
}
</code></span></pre>


<p>単純にファイルを指定する方法の他に、<strong>「指定したディレクトリ内のCSSファイルを全て圧縮して &#8220;*.min.css&#8221; として保存する」</strong> なんていうことも設定次第では<a href="https://github.com/gruntjs/grunt-contrib-cssmin#minify-all-contents-of-a-release-directory-and-add-a-mincss-extension">出来ます。</a> Grunt は素晴らしいですね。</p>



<h2 class="wp-block-heading">その他のミニファイツール</h2>



<h3 class="wp-block-heading"><a href="http://yui.github.io/yuicompressor/">YUI Compressor</a></h3>



<p><a href="http://yui.github.io/yuicompressor">http://yui.github.io/yuicompressor</a></p>



<p>Yahooが提供する、非常に古くからある Java で書かれた JavaScript / CSS 共に圧縮可能なミニファイツールです。 ダウンロードした jar ファイルを java コマンドで実行して使います。設定できるオプション項目は、あまり多くはありません。</p>


<pre class="wp-block-code"><span><code class="hljs">$ java -jar /the/path/to/yuicompressor.x.x.x.jar foo.js -o foo.min.js
</code></span></pre>


<p>基本的な使い方は上の通りで、&#8221;foo.js&#8221; を圧縮した結果を &#8220;foo.min.js&#8221; に保存します。 毎回 jar ファイルを指定するのは面倒なので、Linux / Mac 環境ならば alias を設定したり、 Wndows 環境なら bat ファイルを作成するなどしましょう。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$ alias yuicompressor=<span class="hljs-string">'java -jar /the/path/to/yuicompressor.x.x.x.jar'</span>
</code></span></pre>


<h3 class="wp-block-heading"><a href="https://developers.google.com/closure/">Google Closure Compiler</a></h3>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://developers.google.com/closure/
</div></figure>



<p>Google Closure Compiler は Google が提供する JavaScript 用のミニファイツールです。 コマンドラインで使用できる他、<a href="https://developers.google.com/closure/compiler/docs/gettingstarted_api?hl=ja">サービスAPI</a>や<a href="http://closure-compiler.appspot.com/home">オンラインでのテストツール</a>も用意しています。</p>



<p>コマンドラインでは YUI Compressor 同様に Java コマンドで実行します。</p>


<pre class="wp-block-code"><span><code class="hljs">$ java -jar /the/path/to/compiler.jar --js foo.js --js_output_file foo.min.js
</code></span></pre>


<p>Google Closure Compiler には多くのオプションが用意されていますが、 中でも重要なのが圧縮のレベルを3つのモードから選択する <strong>&#8211;compilation_level</strong> です。</p>



<ul class="wp-block-list">
<li><strong>WHITESPACE_ONLY</strong><br /><br />改行や不要なスペース等を除去するだけの、もっとも簡易なモード</li>



<li><strong>SIMPLE_OPTIMIZATIONS</strong><br /><br />WHITESPACE_ONLY モードに加えて、ローカル変数や関数等のリネームによる短縮を行います。<br /><br />これが初期値です。</li>



<li><strong>ADVANCED_OPTIMIZATIONS</strong><br /><br />SIMPLE_OPTIMIZATIONS に加えて、グローバルな変数・関数のリネームを行ったり、<br /><br />恐らく不要であると思われるコードを除去したりする、非常にアグレッシブなモードです。<br /><br />その為のルールに則った書き方をしなければなりません。</li>
</ul>



<p>cf) <a href="https://developers.google.com/closure/compiler/docs/compilation_levels?hl=ja">Closure Compiler Compilation Levels &#8211; Closure Tools — Google Developers</a></p>



<h2 class="wp-block-heading">参考資料</h2>



<ul class="wp-block-list">
<li><a href="http://lisperator.net/uglifyjs/">UglifyJS — JavaScript parser, compressor, minifier written in JS</a></li>



<li><a href="https://github.com/gruntjs/grunt-contrib-uglify">gruntjs/grunt-contrib-uglify</a></li>



<li><a href="https://github.com/gruntjs/grunt-contrib-cssmin">gruntjs/grunt-contrib-cssmin</a></li>



<li><a href="http://yui.github.io/yuicompressor/">YUI Compressor</a></li>



<li><a href="https://developers.google.com/closure/">Closure Tools — Google Developers</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
