狠狠撸

狠狠撸Share a Scribd company logo
奥贰叠サイト?フロントエンドの高速化と
             grunt.jsについて


                @tomof




 1
13年2月8日金曜日
自己绍介
     ? Twi)er	
 ?ID	
 ?:	
 ?@tomof?

     ? 静岡のSolarisに超強い某社に勤めています。

     ? jQueryの日本語リファレンスサイトを
       運営しています。
       h)p://js.studio-?‐kingdom.com/jquery



 2
13年2月8日金曜日
バージョンの违いに注意
     ? この資料は0.3系を元に作成されています。
     ? 0.3系から0.4系では、grunt.js	
 ?が	
 ?GrunDile.js	
 ?に
       変更されるなどの違いがあります。
     ? 0.3と0.4の詳しい違いは下記を参照(英文)
       h)ps://github.com/gruntjs/grunt/wiki/
       Upgrading-?‐from-?‐0.3-?‐to-?‐0.4


 3
13年2月8日金曜日
フロントエンドの高速化
     ? WEBサイトの高速化は
       バックエンドだけの課題じゃない!
     ? HTTPのリクエストを減らそう!




       参考:h&p://www.inter-?‐o?ce.co.jp/contents/177/


 4
13年2月8日金曜日
颁厂厂スプライト
     ? 数年前ぐらいから、HTML,CSSコーディングに
       おいては、導入して当然(?)の手法となった。


                   HTTPリクエスト	
 ?=	
 ?   8
                   HTTPリクエスト	
 ?=	
 ?   1
 5
13年2月8日金曜日
颁厂厂や箩蝉ファイルも同じ!
     ? 最近だと、jsやcssの
       ファイル数も増加!


     ? jQueryプラグインを
       多数使用する場合も
       注意!

 6
13年2月8日金曜日
颁丑谤辞尘别のツールで确认!
     ? 0.5secだと、人は遅延を感じないらしい。
     ? 0.2secスピードを上げるだけで売上に影響も?




 7
13年2月8日金曜日
箩蝉や肠蝉蝉のファイルをビルドする
             開発                公開
                  \	
 ?ビルド!/



                               all.js




                  \	
 ?ビルド!/




                               all.css


 8
13年2月8日金曜日
ビルドがしてくれる事
     ? Concat	
 ?	
 ?-?‐	
 ?連結
       複数のファイルを1つにまとめる。

     ? Minify	
 ?	
 ?-?‐	
 ?圧縮
       コメントや改行を除去。変数名も短縮。

     ? Lint	
 ?-?‐	
 ?文法チェック            難読化…
       文末のセミコロン抜けなどをチェック!
                                         Sass…
     ? Unit	
 ?Test	
 ?-?‐	
 ?ユニットテスト Co?ee	
 ?Script…
       エンバグやレベルダウンをチェック!                 他にも色々…
 9
13年2月8日金曜日
驳谤耻苍迟.箩蝉を试してみる




      ? jQuery1.8でビルドツールとして採用。
      ? 作成者がjQuery開発メンバーらしいです。
      ? 他にRequireJSなどがあります。
 10
13年2月8日金曜日
箩蚕耻别谤测の驳谤耻苍迟を确认
       git clone git://github.com/jquery/jquery.git




       src               開発用のファイルを格納するフォルダ

       dist              コンパイルしたファイルの出力先



      grunt.js           grunt.jsファイル



      node_module        Node.jsのモジュール用のフォルダ

      package.json       Node.jsのバージョン管理等を指定するフォルダ



 11
13年2月8日金曜日
箩蚕耻别谤测の驳谤耻苍迟を确认

             連結されたファイル

             上記ファイルを圧縮

             開発時のファイル


                 grunt.js



 12
13年2月8日金曜日
箩蚕耻别谤测の驳谤耻苍迟を确认
             node_modules
             Node.jsのモジュールを
             格納するフォルダ


             pacage.json
             バージョン
             管理用のファイル



 13
13年2月8日金曜日
驳谤耻苍迟ことはじめ
      1.node.jsとgruntのインストール	
 ?
       いわゆる「黒い画面」を使います。(割愛)

      2.grunt.jsファイルの作成
       このファイルにタスクを記述。

      3.タスクをコマンドで実行
       タスクはビルド対象ファイル、作業内容、ビルド後の
       ファイル出力先などの指定します。


 14
13年2月8日金曜日
黒い画面が苦手な人用
      ? CodeKit          h&p://incident57.com/codekit/


      ? 25ドル




             Mac限定みたい…
             (??ω?`)
 15
13年2月8日金曜日
颁辞诲别碍颈迟と骋谤耻苍迟の比较
      h&p://havelog.ayumusato.com/develop/others/e524-?‐yeoman_and_brunch.html




 16
13年2月8日金曜日
简単なサンプルで试してみる
      ? サンプルフォルダとファイルを準備

         dist
                                /*	
 ?comment	
 ?*/
                                funcRon	
 ?hoge(){
                                	
 ?	
 ?	
 ?	
 ?alert('hoge!');
             src
                   sample1.js   }


        grunt.js
                                /*	
 ?comment	
 ?*/
                                funcRon	
 ?fuga(){
                                	
 ?	
 ?	
 ?	
 ?alert('fuga!');
                   sample2.js   }

 17
13年2月8日金曜日
简単なサンプルで试してみる
      ? サンプルフォルダとファイルを準備
                   module.exports	
 ?=	
 ?funcRon(grunt)	
 ?{
         dist      ...
                   	
 ?	
 ?	
 ?	
 ?grunt.initCon?g({
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?concat:	
 ?{
             src   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?built:	
 ?{
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?src:	
 ?['src/sample1.js',	
 ?'src/sample2.js'],
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?dest:	
 ?'dist/built.js'
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
        grunt.js
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?},
                   	
 ?	
 ?	
 ?	
 ?});
                   	
 ?	
 ?	
 ?	
 ?grunt.registerTask('build',	
 ?'concat');
                   }

 18
13年2月8日金曜日
简単なサンプルで试してみる
       $	
 ?grunt	
 ?build	
 ?	
 ?	
 ?#コマンドを実行してbuilt.jsを生成


                                     /*
         dist                        	
 ?*	
 ?comment
                    built.js
                                     	
 ?*/
                     生成              funcRon	
 ?hoge(){
             src                     	
 ?	
 ?	
 ?	
 ?alert('hoge!');
                                     }
                                     /*
                                     	
 ?*	
 ?comment
        grunt.js
                                     	
 ?*/
                                     funcRon	
 ?fuga(){
                                     	
 ?	
 ?	
 ?	
 ?alert('fuga!');
                                     }

 19
13年2月8日金曜日
简単なサンプルで试してみる
      ? 先ほどのgrunt.jsにminifyを追加
                   module.exports	
 ?=	
 ?funcRon(grunt)	
 ?{
         dist      ...
                   	
 ?	
 ?	
 ?	
 ?grunt.initCon?g({
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?concat:	
 ?{…	
 ?	
 ?	
 ?	
 ?},
             src   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?min:	
 ?{
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?dist:	
 ?{
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?src:	
 ?'dist/built.js',
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?dest:	
 ?'dist/bilt.min.js'
        grunt.js
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?},
                   	
 ?	
 ?	
 ?	
 ?});
                   	
 ?	
 ?	
 ?	
 ?grunt.registerTask('build',	
 ?'concat	
 ?min');
                   }
 20
13年2月8日金曜日
简単なサンプルで试してみる
       $	
 ?grunt	
 ?build	
 ?	
 ?	
 ?#再度コマンドを実行してbuilt.min.jsを生成



         dist
                    built.js


             src


                                   funcRon	
 ?hoge(){alert("hoge!")}funcRon	
 ?fuga()
        grunt.js                   {alert("fuga!")};
                   built.min.js

                     生成




 21
13年2月8日金曜日
机能を拡张してみる
      ? SCSSファイルのコンパイル機能をgruntに
        追加する。
      ? 開発速度も高速化!




 22
13年2月8日金曜日
机能を拡张してみる
      ? scssのファイルを準備
                                          $blue:	
 ?#3bbfce;
         css       scss                   $margin:	
 ?16px;
                           sample1.scss   .content-?‐navigaRon	
 ?{
                                          	
 ?	
 ?border-?‐color:	
 ?$blue;
                                          	
 ?	
 ?color:
                                          	
 ?	
 ?	
 ?	
 ?darken($blue,	
 ?9%);?…(省略)


                                          table.hl	
 ?{
        grunt.js                          	
 ?	
 ?margin:	
 ?2em	
 ?0;
                          sample2.scss    	
 ?	
 ?td.ln	
 ?{
                                          	
 ?	
 ?	
 ?	
 ?text-?‐align:	
 ?right;
                                          	
 ?	
 ?}
                                          }?…(省略)



 23
13年2月8日金曜日
机能を拡张してみる
       $npm	
 ?install	
 ?grunt-?‐sass?#拡張機能をインストール

                          module.exports	
 ?=	
 ?funcRon(grunt){
         css              	
 ?	
 ?	
 ?	
 ?grunt.loadNpmTasks('grunt-?‐sass');	
 ?
                   scss
                          	
 ?	
 ?	
 ?	
 ?grunt.initCon?g({
                          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?concat:	
 ?{…	
 ?	
 ?	
 ?	
 ?},
                          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?min:	
 ?{…	
 ?	
 ?	
 ?	
 ?},
                          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?sass:	
 ?{
                          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?dist:	
 ?{
                          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ??les:	
 ?{'css/sample.css':	
 ?
                          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?['css/scss/sample1.scss',	
 ?'css/scss/sample2.scss']
        grunt.js          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
                          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
                          	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?},
                          	
 ?	
 ?	
 ?	
 ?});
                          	
 ?	
 ?	
 ?	
 ?grunt.registerTask('build',	
 ?'concat	
 ?min');
                          	
 ?	
 ?	
 ?	
 ?grunt.registerTask('style',	
 ?'sass');
                          }
 24
13年2月8日金曜日
机能を拡张してみる
                                .content-?‐navigaRon	
 ?{
                                	
 ?	
 ?border-?‐color:	
 ?#3bbfce;
                                	
 ?	
 ?color:	
 ?#2ca2af;	
 ?}

         css         scss       .border	
 ?{
                                	
 ?	
 ?padding:	
 ?8px;
                                	
 ?	
 ?margin:	
 ?8px;
                                	
 ?	
 ?border-?‐color:	
 ?#3bbfce;	
 ?}

                                table.hl	
 ?{
                                	
 ?	
 ?margin:	
 ?2em	
 ?0;	
 ?}
                                	
 ?	
 ?table.hl	
 ?td.ln	
 ?{
        grunt.js   sample.css   	
 ?	
 ?	
 ?	
 ?text-?‐align:	
 ?right;	
 ?}

                    生成          li	
 ?{
                                	
 ?	
 ?font-?‐family:	
 ?serif;
                                	
 ?	
 ?font-?‐weight:	
 ?bold;
                                	
 ?	
 ?font-?‐size:	
 ?1.2em;	
 ?}

 25
13年2月8日金曜日
机能を拡张してみる
      ? その他にも色々
        –	
 ?Data	
 ?URI	
 ?   'data:image/png;base64,iVBORw0KGgoAAAANSUhEU



        –	
 ?Less
        –	
 ?Co?eeScript
        –	
 ?etc…                                  grunt.jsの公式サイトから探せます。




 26
13年2月8日金曜日
飞补迟肠丑でファイルを监视

                      1. 監視対象を決定する
         css
                      2. 監視対象が更新された時に
             src       実行したいタスクを登録

                      3. watchコマンドを実行して監視を
        grunt.js       開始する。




 27
13年2月8日金曜日
飞补迟肠丑でファイルを监视

                    module.exports	
 ?=	
 ?funcRon(grunt)	
 ?{...
         css        	
 ?	
 ?	
 ?	
 ?grunt.initCon?g({…
                    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?watch:	
 ?{
                    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?css:	
 ?{                                 cssの監視
             src    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ??les:['css/scss/*.scss'],
                    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?tasks:	
 ?'sass'
                    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?},
                    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?js:	
 ?{                                  jsの監視
        grunt.js    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ??les:['src'],
                    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?tasks:	
 ?'concat	
 ?min'
                    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
                    	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?},
                    	
 ?	
 ?	
 ?	
 ?…});
                    }
 28
13年2月8日金曜日
飞补迟肠丑でファイルを监视
                        $grunt	
 ?watch?#監視を実行
      監視を開始             Running	
 ?"watch"	
 ?task
                        WaiRng...OK
      sample1.scssの更新   >>	
 ?File	
 ?"css/scss/sample1.scss"	
 ?renamed.
      ↓
      sassタスク自動実行       Running	
 ?"sass:dist"	
 ?(sass)	
 ?task
                        Uncompressed	
 ?size:	
 ?886	
 ?bytes.
                        Compressed	
 ?size:	
 ?381	
 ?bytes	
 ?gzipped	
 ?(796	
 ?bytes	
 ?mini?ed).

      sample1.jsの更新     >>	
 ?File	
 ?"src/sample1.js"	
 ?renamed.
      ↓
      concatタスク         Running	
 ?"concat:built"	
 ?(concat)	
 ?task
      minタスク            File	
 ?"dist/built.js"	
 ?created.
      自動実行
                        Running	
 ?"min:dist"	
 ?(min)	
 ?task
                        File	
 ?"dist/bilt.min.js"	
 ?created.
                        Uncompressed	
 ?size:	
 ?125	
 ?bytes.
                        Compressed	
 ?size:	
 ?66	
 ?bytes	
 ?gzipped	
 ?(75	
 ?bytes	
 ?mini?ed).
 29
13年2月8日金曜日
监视+ブラウザ自动リロード

                            1. 監視によって更新を検知
         css
                            2. Chrome等の拡張機能に通知
             src            3. 拡張機能がブラウザを自動的に
                             リロード
        grunt.js



               LiveReload


 30
13年2月8日金曜日
监视+ブラウザ自动リロード
                   ? LiveReload	
 ?-?‐	
 ?ブラウザの拡張機能
      LiveReload




 31
13年2月8日金曜日
监视+ブラウザ自动リロード
       $npm	
 ?install	
 ?grunt-?‐reload?#リロード機能をインストール

                     module.exports	
 ?=	
 ?funcRon(grunt){…
                     	
 ?	
 ?	
 ?	
 ?grunt.loadNpmTasks('grunt-?‐reload');	
 ?
         css         	
 ?	
 ?	
 ?	
 ?grunt.initCon?g({
                     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?watch:	
 ?{
                     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?css:	
 ?{
                     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ??les:['css/scss/*.scss'],
             src     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?tasks:	
 ?'sass	
 ?reload'
                     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?},
                     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?js:	
 ?{
                     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ??les:['src'],
        grunt.js     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?tasks:	
 ?'concat	
 ?min	
 ?reload'
                     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
                     	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?},
                     	
 ?	
 ?	
 ?	
 ?});
                     	
 ?	
 ?	
 ?	
 ?…
                     }
 32
13年2月8日金曜日
监视+ブラウザ自动リロード

                   module.exports	
 ?=	
 ?funcRon(grunt){…
                   	
 ?	
 ?	
 ?	
 ?grunt.initCon?g({
         css       	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?…
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?server	
 ?:	
 ?{
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?port:	
 ?8000,
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?base:'.'
             src   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?},
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?reload:	
 ?{
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?port:	
 ?35729,	
 ?//	
 ?LiveReloadで使用するポート

        grunt.js   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?liveReload:	
 ?true
                   	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
                   	
 ?	
 ?	
 ?	
 ?});
                   	
 ?	
 ?	
 ?	
 ?…
                   	
 ?	
 ?	
 ?	
 ?grunt.registerTask('develop',	
 ?['server',	
 ?'reload',	
 ?'watch']);
                   }

 33
13年2月8日金曜日
まとめ

      ? WEBサイトと開発、両方を高速化しよう!
      ? チームでビルドツールの統一が必要
      ? 日進月歩で次々と新しい技術が
       ???????????(?;ω;`)????




 34
13年2月8日金曜日
ご清聴、
             ありがとうございました



 35
13年2月8日金曜日

More Related Content

奥别产サイト?フロントエント?の高速化と驳谤耻苍迟.箩蝉について

  • 1. 奥贰叠サイト?フロントエンドの高速化と grunt.jsについて @tomof 1 13年2月8日金曜日
  • 2. 自己绍介 ? Twi)er ?ID ?: ?@tomof? ? 静岡のSolarisに超強い某社に勤めています。 ? jQueryの日本語リファレンスサイトを 運営しています。 h)p://js.studio-?‐kingdom.com/jquery 2 13年2月8日金曜日
  • 3. バージョンの违いに注意 ? この資料は0.3系を元に作成されています。 ? 0.3系から0.4系では、grunt.js ?が ?GrunDile.js ?に 変更されるなどの違いがあります。 ? 0.3と0.4の詳しい違いは下記を参照(英文) h)ps://github.com/gruntjs/grunt/wiki/ Upgrading-?‐from-?‐0.3-?‐to-?‐0.4 3 13年2月8日金曜日
  • 4. フロントエンドの高速化 ? WEBサイトの高速化は バックエンドだけの課題じゃない! ? HTTPのリクエストを減らそう! 参考:h&p://www.inter-?‐o?ce.co.jp/contents/177/ 4 13年2月8日金曜日
  • 5. 颁厂厂スプライト ? 数年前ぐらいから、HTML,CSSコーディングに おいては、導入して当然(?)の手法となった。 HTTPリクエスト ?= ? 8 HTTPリクエスト ?= ? 1 5 13年2月8日金曜日
  • 6. 颁厂厂や箩蝉ファイルも同じ! ? 最近だと、jsやcssの ファイル数も増加! ? jQueryプラグインを 多数使用する場合も 注意! 6 13年2月8日金曜日
  • 7. 颁丑谤辞尘别のツールで确认! ? 0.5secだと、人は遅延を感じないらしい。 ? 0.2secスピードを上げるだけで売上に影響も? 7 13年2月8日金曜日
  • 8. 箩蝉や肠蝉蝉のファイルをビルドする 開発 公開 \ ?ビルド!/ all.js \ ?ビルド!/ all.css 8 13年2月8日金曜日
  • 9. ビルドがしてくれる事 ? Concat ? ?-?‐ ?連結 複数のファイルを1つにまとめる。 ? Minify ? ?-?‐ ?圧縮 コメントや改行を除去。変数名も短縮。 ? Lint ?-?‐ ?文法チェック 難読化… 文末のセミコロン抜けなどをチェック! Sass… ? Unit ?Test ?-?‐ ?ユニットテスト Co?ee ?Script… エンバグやレベルダウンをチェック! 他にも色々… 9 13年2月8日金曜日
  • 10. 驳谤耻苍迟.箩蝉を试してみる ? jQuery1.8でビルドツールとして採用。 ? 作成者がjQuery開発メンバーらしいです。 ? 他にRequireJSなどがあります。 10 13年2月8日金曜日
  • 11. 箩蚕耻别谤测の驳谤耻苍迟を确认 git clone git://github.com/jquery/jquery.git src 開発用のファイルを格納するフォルダ dist コンパイルしたファイルの出力先 grunt.js grunt.jsファイル node_module Node.jsのモジュール用のフォルダ package.json Node.jsのバージョン管理等を指定するフォルダ 11 13年2月8日金曜日
  • 12. 箩蚕耻别谤测の驳谤耻苍迟を确认 連結されたファイル 上記ファイルを圧縮 開発時のファイル grunt.js 12 13年2月8日金曜日
  • 13. 箩蚕耻别谤测の驳谤耻苍迟を确认 node_modules Node.jsのモジュールを 格納するフォルダ pacage.json バージョン 管理用のファイル 13 13年2月8日金曜日
  • 14. 驳谤耻苍迟ことはじめ 1.node.jsとgruntのインストール ? いわゆる「黒い画面」を使います。(割愛) 2.grunt.jsファイルの作成 このファイルにタスクを記述。 3.タスクをコマンドで実行 タスクはビルド対象ファイル、作業内容、ビルド後の ファイル出力先などの指定します。 14 13年2月8日金曜日
  • 15. 黒い画面が苦手な人用 ? CodeKit h&p://incident57.com/codekit/ ? 25ドル Mac限定みたい… (??ω?`) 15 13年2月8日金曜日
  • 16. 颁辞诲别碍颈迟と骋谤耻苍迟の比较 h&p://havelog.ayumusato.com/develop/others/e524-?‐yeoman_and_brunch.html 16 13年2月8日金曜日
  • 17. 简単なサンプルで试してみる ? サンプルフォルダとファイルを準備 dist /* ?comment ?*/ funcRon ?hoge(){ ? ? ? ?alert('hoge!'); src sample1.js } grunt.js /* ?comment ?*/ funcRon ?fuga(){ ? ? ? ?alert('fuga!'); sample2.js } 17 13年2月8日金曜日
  • 18. 简単なサンプルで试してみる ? サンプルフォルダとファイルを準備 module.exports ?= ?funcRon(grunt) ?{ dist ... ? ? ? ?grunt.initCon?g({ ? ? ? ? ? ? ? ?concat: ?{ src ? ? ? ? ? ? ? ? ? ? ? ?built: ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?src: ?['src/sample1.js', ?'src/sample2.js'], ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dest: ?'dist/built.js' ? ? ? ? ? ? ? ? ? ? ? ?} grunt.js ? ? ? ? ? ? ? ?}, ? ? ? ?}); ? ? ? ?grunt.registerTask('build', ?'concat'); } 18 13年2月8日金曜日
  • 19. 简単なサンプルで试してみる $ ?grunt ?build ? ? ?#コマンドを実行してbuilt.jsを生成 /* dist ?* ?comment built.js ?*/ 生成 funcRon ?hoge(){ src ? ? ? ?alert('hoge!'); } /* ?* ?comment grunt.js ?*/ funcRon ?fuga(){ ? ? ? ?alert('fuga!'); } 19 13年2月8日金曜日
  • 20. 简単なサンプルで试してみる ? 先ほどのgrunt.jsにminifyを追加 module.exports ?= ?funcRon(grunt) ?{ dist ... ? ? ? ?grunt.initCon?g({ ? ? ? ? ? ? ? ?concat: ?{… ? ? ? ?}, src ? ? ? ? ? ? ? ?min: ?{ ? ? ? ? ? ? ? ? ? ? ? ?dist: ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?src: ?'dist/built.js', ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dest: ?'dist/bilt.min.js' grunt.js ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ?}, ? ? ? ?}); ? ? ? ?grunt.registerTask('build', ?'concat ?min'); } 20 13年2月8日金曜日
  • 21. 简単なサンプルで试してみる $ ?grunt ?build ? ? ?#再度コマンドを実行してbuilt.min.jsを生成 dist built.js src funcRon ?hoge(){alert("hoge!")}funcRon ?fuga() grunt.js {alert("fuga!")}; built.min.js 生成 21 13年2月8日金曜日
  • 22. 机能を拡张してみる ? SCSSファイルのコンパイル機能をgruntに 追加する。 ? 開発速度も高速化! 22 13年2月8日金曜日
  • 23. 机能を拡张してみる ? scssのファイルを準備 $blue: ?#3bbfce; css scss $margin: ?16px; sample1.scss .content-?‐navigaRon ?{ ? ?border-?‐color: ?$blue; ? ?color: ? ? ? ?darken($blue, ?9%);?…(省略) table.hl ?{ grunt.js ? ?margin: ?2em ?0; sample2.scss ? ?td.ln ?{ ? ? ? ?text-?‐align: ?right; ? ?} }?…(省略) 23 13年2月8日金曜日
  • 24. 机能を拡张してみる $npm ?install ?grunt-?‐sass?#拡張機能をインストール module.exports ?= ?funcRon(grunt){ css ? ? ? ?grunt.loadNpmTasks('grunt-?‐sass'); ? scss ? ? ? ?grunt.initCon?g({ ? ? ? ? ? ? ? ?concat: ?{… ? ? ? ?}, ? ? ? ? ? ? ? ?min: ?{… ? ? ? ?}, ? ? ? ? ? ? ? ?sass: ?{ ? ? ? ? ? ? ? ? ? ? ? ?dist: ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??les: ?{'css/sample.css': ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?['css/scss/sample1.scss', ?'css/scss/sample2.scss'] grunt.js ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ?}, ? ? ? ?}); ? ? ? ?grunt.registerTask('build', ?'concat ?min'); ? ? ? ?grunt.registerTask('style', ?'sass'); } 24 13年2月8日金曜日
  • 25. 机能を拡张してみる .content-?‐navigaRon ?{ ? ?border-?‐color: ?#3bbfce; ? ?color: ?#2ca2af; ?} css scss .border ?{ ? ?padding: ?8px; ? ?margin: ?8px; ? ?border-?‐color: ?#3bbfce; ?} table.hl ?{ ? ?margin: ?2em ?0; ?} ? ?table.hl ?td.ln ?{ grunt.js sample.css ? ? ? ?text-?‐align: ?right; ?} 生成 li ?{ ? ?font-?‐family: ?serif; ? ?font-?‐weight: ?bold; ? ?font-?‐size: ?1.2em; ?} 25 13年2月8日金曜日
  • 26. 机能を拡张してみる ? その他にも色々 – ?Data ?URI ? 'data:image/png;base64,iVBORw0KGgoAAAANSUhEU – ?Less – ?Co?eeScript – ?etc… grunt.jsの公式サイトから探せます。 26 13年2月8日金曜日
  • 27. 飞补迟肠丑でファイルを监视 1. 監視対象を決定する css 2. 監視対象が更新された時に src 実行したいタスクを登録 3. watchコマンドを実行して監視を grunt.js 開始する。 27 13年2月8日金曜日
  • 28. 飞补迟肠丑でファイルを监视 module.exports ?= ?funcRon(grunt) ?{... css ? ? ? ?grunt.initCon?g({… ? ? ? ? ? ? ? ?watch: ?{ ? ? ? ? ? ? ? ? ? ?css: ?{ cssの監視 src ? ? ? ? ? ? ? ? ? ? ? ? ? ??les:['css/scss/*.scss'], ? ? ? ? ? ? ? ? ? ? ? ? ? ?tasks: ?'sass' ? ? ? ? ? ? ? ? ? ?}, ? ? ? ? ? ? ? ? ? ?js: ?{ jsの監視 grunt.js ? ? ? ? ? ? ? ? ? ? ? ? ? ??les:['src'], ? ? ? ? ? ? ? ? ? ? ? ? ? ?tasks: ?'concat ?min' ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ?}, ? ? ? ?…}); } 28 13年2月8日金曜日
  • 29. 飞补迟肠丑でファイルを监视 $grunt ?watch?#監視を実行 監視を開始 Running ?"watch" ?task WaiRng...OK sample1.scssの更新 >> ?File ?"css/scss/sample1.scss" ?renamed. ↓ sassタスク自動実行 Running ?"sass:dist" ?(sass) ?task Uncompressed ?size: ?886 ?bytes. Compressed ?size: ?381 ?bytes ?gzipped ?(796 ?bytes ?mini?ed). sample1.jsの更新 >> ?File ?"src/sample1.js" ?renamed. ↓ concatタスク Running ?"concat:built" ?(concat) ?task minタスク File ?"dist/built.js" ?created. 自動実行 Running ?"min:dist" ?(min) ?task File ?"dist/bilt.min.js" ?created. Uncompressed ?size: ?125 ?bytes. Compressed ?size: ?66 ?bytes ?gzipped ?(75 ?bytes ?mini?ed). 29 13年2月8日金曜日
  • 30. 监视+ブラウザ自动リロード 1. 監視によって更新を検知 css 2. Chrome等の拡張機能に通知 src 3. 拡張機能がブラウザを自動的に リロード grunt.js LiveReload 30 13年2月8日金曜日
  • 31. 监视+ブラウザ自动リロード ? LiveReload ?-?‐ ?ブラウザの拡張機能 LiveReload 31 13年2月8日金曜日
  • 32. 监视+ブラウザ自动リロード $npm ?install ?grunt-?‐reload?#リロード機能をインストール module.exports ?= ?funcRon(grunt){… ? ? ? ?grunt.loadNpmTasks('grunt-?‐reload'); ? css ? ? ? ?grunt.initCon?g({ ? ? ? ? ? ? ?watch: ?{ ? ? ? ? ? ? ? ? ? ?css: ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ??les:['css/scss/*.scss'], src ? ? ? ? ? ? ? ? ? ? ? ? ? ?tasks: ?'sass ?reload' ? ? ? ? ? ? ? ? ? ?}, ? ? ? ? ? ? ? ? ? ?js: ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ??les:['src'], grunt.js ? ? ? ? ? ? ? ? ? ? ? ? ? ?tasks: ?'concat ?min ?reload' ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ?}, ? ? ? ?}); ? ? ? ?… } 32 13年2月8日金曜日
  • 33. 监视+ブラウザ自动リロード module.exports ?= ?funcRon(grunt){… ? ? ? ?grunt.initCon?g({ css ? ? ? ? ? ? ? ?… ? ? ? ? ? ? ? ?server ?: ?{ ? ? ? ? ? ? ? ? ? ? ? ?port: ?8000, ? ? ? ? ? ? ? ? ? ? ? ?base:'.' src ? ? ? ? ? ? ? ?}, ? ? ? ? ? ? ? ?reload: ?{ ? ? ? ? ? ? ? ? ? ? ? ?port: ?35729, ?// ?LiveReloadで使用するポート grunt.js ? ? ? ? ? ? ? ? ? ? ? ?liveReload: ?true ? ? ? ? ? ? ? ?} ? ? ? ?}); ? ? ? ?… ? ? ? ?grunt.registerTask('develop', ?['server', ?'reload', ?'watch']); } 33 13年2月8日金曜日
  • 34. まとめ ? WEBサイトと開発、両方を高速化しよう! ? チームでビルドツールの統一が必要 ? 日進月歩で次々と新しい技術が ???????????(?;ω;`)???? 34 13年2月8日金曜日
  • 35. ご清聴、 ありがとうございました 35 13年2月8日金曜日