SlideShare a Scribd company logo
フロントエンド制作向け
ビルドツールGruntを
PHPバックエンド開発で利利⽤用する
@M_̲Ishikawa
2013/9/24 (火)
本⽇日の⽬目標
•Gruntがなにかを知る
•PHP開発でGruntの使い道を知る
•Gruntプラグインを⾃自分で開発できる
ようにする
⼊入⾨門者向けの内容です
2013/9/24 (火)
• ⾃自⼰己紹介
• Gruntとは
• Grunt概要
• Gruntプラグイン
• 活⽤用事例例
• バックエンド開発での利利⽤用
• 事例例
• PHP関連プラグイン
本⽇日のメニュー
2013/9/24 (火)
⾃自⼰己紹介
2013/9/24 (火)
•Masayuki  Ishikawa
•@M_̲Ishikawa
•id:ishikawam
•ブラウザソーシャルゲームの開発エンジニア
2013/9/24 (火)
Gruntとは
2013/9/24 (火)
http://gruntjs.com/
2013/9/24 (火)
•最近のHTMLとかCSSのイベント・カンファレンスで
使っているのをよく⾒見見かける
•講演内容がGruntではなくても、講演者はGrunt使⽤用
が前提でセッションを進めてたり
•フロントエンド開発では結構当たり前に使っている
•デザイナーが「⿊黒い画⾯面」といいだしたのはGruntを
触るのがきっかけ?(実際はcompassとかsassとか
gitとかだけど)
でも我々PHPerにはほとんど縁がない!
2013/9/24 (火)
• node.js製のフロントエンド開発⽀支援ツール
• フロントエンド関連ファイルのビルドを⾏行行う
• 開発⽤用、公開⽤用ディレクトリを分けて管理理し、公開⽤用に画像を圧
縮したりJSを難読化したりCSSプリプロセッサ変換(Sass等)
をしたりテストしたり  etc...
• プラグインによりツールを拡張できる
• プラグインの開発が簡単(node=JS)
• Gruntプラグイン=nodeモジュールなのでnpmで管理理されてます
Gruntとは
2013/9/24 (火)
•依存管理理といったら例例えばこんなの
•PEARとかGemは?>パッケージ管理理。
•※npmはパッケージ管理理、依存管理理の両⽅方できる
•git  submoduleではなく機能として利利⽤用できる
npm  のおさらい
ライブラリの依存管理理
2013/9/24 (火)
Gruntの動作環境
•開発環境で使う
•nodeが動けば動く。Macでも、
Windowsでも、Linuxでも
•今回はクライアントMacでデモ
•サーバ上での開発で使⽤用しても
まったく問題なし
2013/9/24 (火)
•デザイナーがMacで制作、Sublime  Text
を使⽤用して⿊黒い画⾯面でGruntを利利⽤用
•エンジニアがターミナルから接続した開発
⽤用サーバ上でプログラミング、そこで
Gruntを利利⽤用
例例えばこんなシチュエーション
2013/9/24 (火)
•Gruntは枠組みだけ、実態はプラグイ
ンで、これをどう使うか。
•http://gruntjs.com/plugins
•公式 25
•全体 1390
※npm  search  gruntplugin  |  wc  -‐‑‒l  調べ  2013/9/12現在
Gruntプラグイン
2013/9/24 (火)
• grunt-‐‑‒contrib(公式プラグイン:25個)でどんなことができるか https://github.com/gruntjs/grunt-‐‑‒contrib
• grunt-‐‑‒contrib-‐‑‒clean Clean  files  and  folders.
• grunt-‐‑‒contrib-‐‑‒coffee Compile  CoffeeScript  files  to  JavaScript.
• grunt-‐‑‒contrib-‐‑‒compass Compile  Compass  to  CSS
• grunt-‐‑‒contrib-‐‑‒compress Compress  files  and  folders.
• grunt-‐‑‒contrib-‐‑‒concat Concatenate  files.
• grunt-‐‑‒contrib-‐‑‒connect Start  a  connect  web  server.
• grunt-‐‑‒contrib-‐‑‒copy Copy  files  and  folders.
• grunt-‐‑‒contrib-‐‑‒cssmin Compress  CSS  files.
• grunt-‐‑‒contrib-‐‑‒csslint Lint  CSS  files.
• grunt-‐‑‒contrib-‐‑‒handlebars Precompile  Handlebars  templates  to  JST  file.
• grunt-‐‑‒contrib-‐‑‒htmlmin Minify  HTML
• grunt-‐‑‒contrib-‐‑‒imagemin Minify  PNG  and  JPEG  images
• grunt-‐‑‒contrib-‐‑‒jade Compile  Jade  files  to  HTML.
• grunt-‐‑‒contrib-‐‑‒jasmine Run  jasmine  specs  headlessly  through  PhantomJS.
• grunt-‐‑‒contrib-‐‑‒jshint Validate  files  with  JSHint.
• grunt-‐‑‒contrib-‐‑‒jst Precompile  Underscore  templates  to  JST  file.
• grunt-‐‑‒contrib-‐‑‒less Compile  LESS  files  to  CSS.
• grunt-‐‑‒contrib-‐‑‒nodeunit Run  Nodeunit  unit  tests.
• grunt-‐‑‒contrib-‐‑‒qunit Run  QUnit  unit  tests  in  a  headless  PhantomJS  instance.
• grunt-‐‑‒contrib-‐‑‒requirejs Optimize  RequireJS  projects  using  r.js.
• grunt-‐‑‒contrib-‐‑‒sass Compile  Sass  to  CSS
• grunt-‐‑‒contrib-‐‑‒stylus Compile  Stylus  files  to  CSS.
• grunt-‐‑‒contrib-‐‑‒uglify Minify  files  with  UglifyJS.
• grunt-‐‑‒contrib-‐‑‒watch Run  predefined  tasks  whenever  watched  file  patterns  are  added,  changed  or  deleted.
• grunt-‐‑‒contrib-‐‑‒yuidoc Compile  YUIDoc  Documentation.
2013/9/24 (火)
様々なコンバート処理理
nodeunit
uglifyjs
2013/9/24 (火)
• 開発、運⽤用において、「コードを書く以外」でやっている⼿手間ありま
せんか?
• コンパイル、ビルドのコマンド実⾏行行
• Sass(SCSS,less)を変換、CoffeeScriptを変換
• 本番配布⽤用に画像の圧縮、JSの難読化、CSSのミニファイ
• 規則正しく予想できるファイル名(card1.png,card2.png,...)
へ直接アクセスされないように隠蔽するのにハッシュのリネーム
• CDNのキャッシュをクリアするために⾛走らせているコマンド
• srcにパラメータ付与、ファイル名変更更、等
• テストの実⾏行行
• Lint,  シンタックスチェック,  UNITテスト,等
• その他、無限の可能性が...!!!
Gruntの使いどころ
2013/9/24 (火)
•1.開発環境へnode、Gruntを導⼊入
•ちなみに本番運⽤用サーバへnodeを⼊入れる必要は
ありません!あくまで開発⽀支援で使うのみです。
•2.プロジェクトリポジトリへGruntfile.jsと
package.jsonを⼊入れて、node_̲modules
を.gitignoreに⼊入れる
•3.各開発環境では  npm  install  を実⾏行行して
node_̲modules以下にGruntプラグインを構築
Grunt導⼊入までの流流れ
2013/9/24 (火)
# nodeが入っている前提
% npm -g install grunt-cli
% mkdir ~/hoge
% cd ~/hoge
% npm install grunt --save
1.開発環境へGruntを導⼊入
npmのお作法により、プロジェクトごとにインストールする
2013/9/24 (火)
•Gruntfile.js
•Gruntの設定ファイル
•package.json
•Gruntで使⽤用するプラグインのパッ
ケージ管理理&依存管理理
2.プロジェクトへ  Gruntfile.js  
と  package.json  を設置
2013/9/24 (火)
% npm install
3.node_̲modules以下に
Gruntプラグインを構築
package.json  正しく書かれていれば  node_̲modules  ディレクトリ
以下にプラグインがインストールされます。
2013/9/24 (火)
Gruntデモ
ソース公開してます
https://github.com/ishikawam/grunt-‐‑‒sample-‐‑‒php
2013/9/24 (火)
Gruntのデモ
• Wordpressで試します
• 今回使⽤用するプラグイン
• gruntでミニファイ
• grunt-‐‑‒contrib-‐‑‒cssmin
• grunt-‐‑‒contrib-‐‑‒uglify
• gruntで構⽂文チェック
• grunt-‐‑‒contrib-‐‑‒csslint
• grunt-‐‑‒contrib-‐‑‒jshint
• gruntでPHP!
• grunt-‐‑‒phpunit
• grunt-‐‑‒phplint
• grunt-‐‑‒phpcs
2013/9/24 (火)
Gruntでミニファイ
• プラグイン例例
• grunt-‐‑‒contrib-‐‑‒cssmin cssのミニファイ
• grunt-‐‑‒contrib-‐‑‒uglify JSのミニファイ
• grunt-‐‑‒contrib-‐‑‒imagemin png,jpgのミニファイ
• ファイル構成例例
• htdocs/{css,js,img}/ DocmentRoot
• assets/{css,js,img}/ オリジナルファイル
※開発⽤用としてはメディアファイルをhtdocsではなく
assetsを参照するようにすれと捗ります。
2013/9/24 (火)
Gruntで構⽂文チェック
•本⽇日の例例
•grunt-‐‑‒contrib-‐‑‒csslint
•cssの構⽂文チェック
•grunt-‐‑‒contrib-‐‑‒jshint
•JSの構⽂文チェック
※チェッカの設定はGruntfile.js内
Optionsで細かく指定できます。
2013/9/24 (火)
GruntでPHP!
•本⽇日の例例
•grunt-‐‑‒phpunit
•PHPのユニットテスト
•grunt-‐‑‒phplint
•PHPの構⽂文チェック
•grunt-‐‑‒phpcs
•PHPのコーディング規約チェック
※他にもPHP関連Gruntプラグインはあります
2013/9/24 (火)
例例:PHPのソースを監視して
ユニットテストを⾛走らせる
2013/9/24 (火)
例例:PHPのソースを監視して
ユニットテストを⾛走らせる
grunt-‐‑‒watchでソースの変更更を監視して
phpunitをgrunt-‐‑‒phpunitを介して実⾏行行する
=
2013/9/24 (火)
Gruntプラグインを
作ってみよう
2013/9/24 (火)
•やりたいこと:grunt-‐‑‒watchでソースの変
更更を監視してphpunitをgrunt-‐‑‒phpunitを
介して実⾏行行する
•「こんなのあるかな?」と思ったプラグイ
ンはだいたい存在する (なければ作れば
いいよ)
Gruntプラグインを
作ってみよう
2013/9/24 (火)
Gruntプラグインのファイル構成例例
• Gruntfile.js
• package.json
• README.*
• LICENSE-‐‑‒*
• tasks/
• node_̲modules/
• .git
• .gitignore
• .npmignore
• .travis.yml
• test/
• tmp/
2013/9/24 (火)
Gruntプラグインの開発にも
Gruntを使います
2013/9/24 (火)
% npm init #package.jsonを生成
% npm publish #公開!
% npm info hoge #npmに登録されたのを確認
1.開発環境へGruntを導⼊入
たったこれだけ!
2013/9/24 (火)
Gruntで楽しい
コーディングライフを!!
2013/9/24 (火)
本⽇日のサンプルはGithubで
資料料はslideshareで
公開してます。
http://www.slideshare.net/mishikawa55/2013-‐‑‒phpcon
https://github.com/ishikawam/grunt-‐‑‒sample-‐‑‒php
2013/9/24 (火)
以上、ご清聴
ありがとうございました!
@M_̲Ishikawa
2013/9/24 (火)
以上、ご清聴
ありがとうございました!
@M_̲Ishikawa
2013/9/24 (火)

More Related Content

PDF
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
PPTX
Type scriptmemo
PDF
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
PDF
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
PDF
お気に入り拡張機能
PDF
タスクランナー導入 〜とあるWordPress制作環境〜
PDF
Cargo makeを使ってみた話
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
Type scriptmemo
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
お気に入り拡張機能
タスクランナー導入 〜とあるWordPress制作環境〜
Cargo makeを使ってみた話
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011

What's hot (20)

PDF
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
PDF
SwaggerとAPIのデザイン
PDF
VS Code新機能紹介 2020-2021
PDF
f3js - JS Board Shibuya #6 LT
PPTX
アプリ開発&チーム管理で 役立った拡張機能
PDF
Feature Store in DRIVE CHART
PPTX
RustによるGPUプログラミング環境
PDF
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
PDF
JavaScript TDD紹介 #agilesamurai
ODP
Yapf2013
PDF
Node.jsでサーバプログラマ デビューしよう
PDF
Customizing cargo for cross compiling
PDF
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PDF
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
PPTX
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
PPTX
Kivyでゲーム
PPTX
200208 osh-nishimoto-v2
PPTX
「Kivyによるアプリケーション開発のすすめ」の勧め
PDF
Hello, Node.js
PDF
VSCode Conference Japan 2021 kyusque
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
SwaggerとAPIのデザイン
VS Code新機能紹介 2020-2021
f3js - JS Board Shibuya #6 LT
アプリ開発&チーム管理で 役立った拡張機能
Feature Store in DRIVE CHART
RustによるGPUプログラミング環境
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
JavaScript TDD紹介 #agilesamurai
Yapf2013
Node.jsでサーバプログラマ デビューしよう
Customizing cargo for cross compiling
PyconJP2017 Kivyによるアプリケーション開発のすすめ
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Kivyでゲーム
200208 osh-nishimoto-v2
「Kivyによるアプリケーション開発のすすめ」の勧め
Hello, Node.js
VSCode Conference Japan 2021 kyusque
Ad

Similar to フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013 (20)

PDF
jsCafe v13 Grunt
PDF
Gruntを導入しよう!の話
PPTX
Grunt入門
ODP
今流行りのウェブアプリ開発環境Yeoman
PDF
Webサイト・フロントエンドの高速化とgrunt.jsについて
PDF
フロントエンドのツール Yeoman を勘違いしていた
PDF
Gruntでフロントの生産性up
PDF
説明資料
PDF
Hcmtg 1407
PPT
GruntでJavaScript 前作業の自動化!
PPTX
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1
PDF
Grunt.jsを使った Expressの開発環境構築
PDF
自動化ツール「Grunt.js」について
PDF
PhpStormとGrunt.jsで作るCakePHP快適開発環境
PDF
Gulp入門 - コーディングを10倍速くする
PDF
フロント開発をがんばるためにGulpとGruntに入門してみた
PDF
2015.09.26 gulp使ってみた
PDF
Yeoman RIAビルドツール超入門
PPTX
Gruntでjava script前作業の自動化!
PDF
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
jsCafe v13 Grunt
Gruntを導入しよう!の話
Grunt入門
今流行りのウェブアプリ開発環境Yeoman
Webサイト・フロントエンドの高速化とgrunt.jsについて
フロントエンドのツール Yeoman を勘違いしていた
Gruntでフロントの生産性up
説明資料
Hcmtg 1407
GruntでJavaScript 前作業の自動化!
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1
Grunt.jsを使った Expressの開発環境構築
自動化ツール「Grunt.js」について
PhpStormとGrunt.jsで作るCakePHP快適開発環境
Gulp入門 - コーディングを10倍速くする
フロント開発をがんばるためにGulpとGruntに入門してみた
2015.09.26 gulp使ってみた
Yeoman RIAビルドツール超入門
Gruntでjava script前作業の自動化!
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
Ad

フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013