SlideShare uma empresa Scribd logo
1 de 51
Gulp勉強会@IVP
Gulpとは
gulpはNode.jsをベースとしたビルドシステムヘルパーです
切り口変えよう
gulpでできること
フロントエンドにまつわる作業を
まとめて自動化できる
 Sass,Compassなどのコンパイル
 HTMLからmarkdown,プレーンテキストに変換
 CSS中に点在したメディアクエリーをまとめる
 CSSベンダープリフィックスの管理
 CSSプロパティ並び順整理
 コードの連結
 コードの圧縮
 コードの整形
 CSSスプライト生成
 画像圧縮
 markdownをPDFに変換
 Webページのスクリーンショット撮影
 画像サイズ変換
 コード構文チェック Lint
 ファイル書き出し
 圧縮/解凍
 FTPアップロード
 文字コード変換
 実体参照変換
 JSON,YAML,XML,PLIST,CSV の相互変換
 HTMLテーブルをCSVに変換
 サイトマップ作成
 sitemap.xml生成
 通知センターに通知
これらの作業をまとめて自動化できる!
gulpで自動化できること(一部)
gulpを使う前に
Gulpとは
gulpはNode.jsをベースとしたビルドシステムヘルパーです
Node.jsとは
サーバー側で動作する
Javascriptアプリケーションプラットホーム
Node.jsとは(間違いがち)
 プログラミング言語ではない
 サーバーソフトではない
 プログラミング言語のフレームワークではない
※ IISやapacheとは違うが、同じ役割をすることはできる
Node.jsとは(できること)
 Javascriptで動く
 Windowsでも動く
 サーバーで動く
 ファイルの読み書きもjavascriptでできちゃう
 DBとの連携もjavascriptでできちゃう
Node.jsとは(技術的特徴)
 非同期 (I/Oの処理結果を待たず処理を進める)
 シングルスレッド (メモリ消費が少ないので速い)
 C/C++プラグインで拡張可能
 イベントドリブン
 ノンブロッキングI/O(コールバック関数処理)
Node.jsとは(技術的特徴)
 非同期 (I/Oの処理結果を待たず処理を進める)
 シングルスレッド (メモリ消費が少ないので速い)
 C/C++プラグインで拡張可能
 イベントドリブン
 ノンブロッキングI/O(コールバック関数処理)
npmについて
 node.jsのモジュール管理システム
 install/uninstallをすべてnpmで行う
 各モジュールの依存関係を管理してくれる
 自分で開発したモジュールも公開できる
 インストールにはlocalとglobalの2つがある
そういえば
今日の勉強会の名前、
「タスクランナーgulp」
って言ってなかったっけ?
ビルドシステムヘルパー
じゃなくない?
ミスです
タスクランナーとは
様々なタスクを自動的に実行し、
作業を効率化するツール
それ同じじゃん
タスクランナーといえば
Gruntについて
 フロントエンドのタスクを自動化するツール
 プラグインが多数あり、組み合わせることで自動化
 gulpより古い
 処理の1つの単位を「タスク」と呼ぶため「タスク
ランナー」と呼ばれる
Gruntとgulpの違い
Grunt gulp
 単一のプラグインを組み合わせる
 JSONでタスク定義を書く
 学習コストが高い
 プラグインを組み合わせてタスクを作る
 javascriptで処理をつないでいく
 学習コストが低い
Gruntとgulpの違い
Grunt gulp
 単一のプラグインを組み合わせる
 JSONでタスク定義を書く
 学習コストが高い
 プラグインを組み合わせてタスクを作る
 javascriptで処理をつないでいく
 学習コストが低い
→オブジェクト指向っぽい →スクリプト言語っぽい
記述方法の比較
gulpの始め方(事前準備)
事前準備(node.jsインストール)
Windowsはインストーラを実行するだけ
node.jsとnpmの確認
事前準備(gulpインストール)
//global install
> npm install gulp -g
//local install
//local installは対象のディレクトリで行う
> npm install --save-dev gulp
gulpの始め方(タスク作成)
gulpfile.jsの作成
var gulp = require('gulp');
gulp.task('hello', function() {
console.log('Hello gulp!');
});
gulp.task('default', ['hello']);
デモ
実践その1
作成プログラム概要
1)cssフォルダ内にある拡張子がCSSのファイルを全て結合
2)1で結合したファイルをall.cssという名前で保存
3)all.cssをminify(圧縮)する
4)3で作成したファイルをall.min.cssという名前で保存
5)4で作成したファイルを出力
使用プラグイン
 gulp-concat
 gulp-minify-css
 gulp-rename
npm install --save-dev
使用プラグインのインストール
npm install –save –dev gulp-concat
npm install –save –dev gulp-minify-css
npm install –save –dev gulp-rename
npm install --save-dev
デモ
作成プログラムに処理追加
1)cssフォルダ内にある拡張子がCSSのファイルを全て結合
2)1で結合したファイルをall.cssという名前で保存
3)all.cssをminify(圧縮)する
4)3で作成したファイルをall.min.cssという名前で保存
5)4で作成したファイルを出力
→上記の処理をファイルの更新があった場合に自動的に実行させる
デモ
実践その2
作成プログラムに処理追加
1)cssフォルダ内にある拡張子がCSSのファイルを全て結合
2)1で結合したファイルをall.cssという名前で保存
3)all.cssをminify(圧縮)する
4)3で作成したファイルをall.min.cssという名前で保存
5)4で作成したファイルを出力
→1~2と3~5を別のタスクとして記述する
ここで問題
Node.jsの問題
node.jsの処理は非同期で実行される
Node.jsの問題
処理1
処理3
処理2
並行処理される
=どれが最初に終わるか分からない
問題の解決
run-sequenceというプラグインを使う
問題の解決
npm install --save-dev run-sequence
処理実行順を管理できるプラグインを使う
※gulp4.0では実行順序を指定できるAPIが提供される
デモ
様々なプラグイン
http://gulpjs.com/plugins/
gulp pluginページ
 Sass,Compassなどのコンパイル
 HTMLからmarkdown,プレーンテキストに変換
 CSS中に点在したメディアクエリーをまとめる
 CSSベンダープリフィックスの管理
 CSSプロパティ並び順整理
 コードの連結
 コードの圧縮
 コードの整形
 CSSスプライト生成
 画像圧縮
 markdownをPDFに変換
 Webページのスクリーンショット撮影
 画像サイズ変換
 コード構文チェック Lint
 ファイル書き出し
 圧縮/解凍
 FTPアップロード
 文字コード変換
 実体参照変換
 JSON,YAML,XML,PLIST,CSV の相互変換
 HTMLテーブルをCSVに変換
 サイトマップ作成
 sitemap.xml生成
 通知センターに通知
これらの作業をまとめて自動化できる!
gulpで自動化できること(一部)
おまけ
StyleDoccoについて
 Node.jsで作られてるスタイルガイドジェネレーター
 CSSにMarkDown(Qiitaで使ってる奴)で書いたらHTML出力される
 gulpのプラグインで自動的に生成させたりできるらしい
 SassとかLessと組み合わせて使うといいかもね
StyleDoccoについての感想
 CSSファイルが肥大化しそう
 納期に追われてる時にそんなん書く余裕なさそう
 記述ルール決めないと意味不明になりそう
 モジュールを可視化できるのはいい
 すでにあるボタンなどを再作成することがなさそう
ありがとうございました

Mais conteúdo relacionado

Mais procurados

PostgreSQL on Amazon EC2の可能性
PostgreSQL on Amazon EC2の可能性PostgreSQL on Amazon EC2の可能性
PostgreSQL on Amazon EC2の可能性
Serverworks Co.,Ltd.
 

Mais procurados (20)

gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そうgulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
 
Gulp ことはじめ
Gulp ことはじめGulp ことはじめ
Gulp ことはじめ
 
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見たFirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareer
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
130207 kyotorb
130207 kyotorb130207 kyotorb
130207 kyotorb
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 
Chef
ChefChef
Chef
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
Jjug 20140430 gradle_advanced
Jjug 20140430 gradle_advancedJjug 20140430 gradle_advanced
Jjug 20140430 gradle_advanced
 
PostgreSQL on Amazon EC2の可能性
PostgreSQL on Amazon EC2の可能性PostgreSQL on Amazon EC2の可能性
PostgreSQL on Amazon EC2の可能性
 
Server specのご紹介
Server specのご紹介Server specのご紹介
Server specのご紹介
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門
 
Chef
ChefChef
Chef
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 

Destaque

Sassを使った共同作業について
Sassを使った共同作業についてSassを使った共同作業について
Sassを使った共同作業について
Kanako Urabe
 

Destaque (15)

2016初夏のJavaScript祭り20160514
2016初夏のJavaScript祭り201605142016初夏のJavaScript祭り20160514
2016初夏のJavaScript祭り20160514
 
ES2015の今とこれから
ES2015の今とこれからES2015の今とこれから
ES2015の今とこれから
 
【もくもく会】Windows環境でSassを使う!Gulp導入のキモ
【もくもく会】Windows環境でSassを使う!Gulp導入のキモ【もくもく会】Windows環境でSassを使う!Gulp導入のキモ
【もくもく会】Windows環境でSassを使う!Gulp導入のキモ
 
Sassを使った共同作業について
Sassを使った共同作業についてSassを使った共同作業について
Sassを使った共同作業について
 
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディングRiot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
 
Sass勉強会 - メジャーなCSS設計紹介とDocBaseのCSS
Sass勉強会 - メジャーなCSS設計紹介とDocBaseのCSSSass勉強会 - メジャーなCSS設計紹介とDocBaseのCSS
Sass勉強会 - メジャーなCSS設計紹介とDocBaseのCSS
 
Sass/Compass よくあるトラブルと 解決方法・回避方法
Sass/Compass よくあるトラブルと 解決方法・回避方法Sass/Compass よくあるトラブルと 解決方法・回避方法
Sass/Compass よくあるトラブルと 解決方法・回避方法
 
リクルートの利用事例から考える AWSの各サービスとセキュリティ
リクルートの利用事例から考える AWSの各サービスとセキュリティリクルートの利用事例から考える AWSの各サービスとセキュリティ
リクルートの利用事例から考える AWSの各サービスとセキュリティ
 
今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会
 
AWSでのセキュリティ運用 ~ IAM,VPCその他
AWSでのセキュリティ運用 ~IAM,VPCその他AWSでのセキュリティ運用 ~IAM,VPCその他
AWSでのセキュリティ運用 ~ IAM,VPCその他
 
AWSでセキュリティを高める!
AWSでセキュリティを高める!AWSでセキュリティを高める!
AWSでセキュリティを高める!
 
Riot.jsに触れてみた話
Riot.jsに触れてみた話Riot.jsに触れてみた話
Riot.jsに触れてみた話
 
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発   takusuta tech conf #1Riot.jsを用いたweb開発   takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
 
Angular1&2
Angular1&2Angular1&2
Angular1&2
 
AWS Black Belt Techシリーズ Amazon CloudFront
AWS Black Belt Techシリーズ Amazon CloudFrontAWS Black Belt Techシリーズ Amazon CloudFront
AWS Black Belt Techシリーズ Amazon CloudFront
 

Semelhante a gulp勉強会@IVP

CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズCSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
rie05
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
Hiroyasu Suzuki
 
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
都元ダイスケ Miyamoto
 
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSSフレームワークを使った 簡単なレスポンシブデザインの作成CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
Kazuki Akiyama
 
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
Chieko Aihara
 
自分達のサイボウズ office-を開発しよう
自分達のサイボウズ office-を開発しよう自分達のサイボウズ office-を開発しよう
自分達のサイボウズ office-を開発しよう
Cybozucommunity
 

Semelhante a gulp勉強会@IVP (20)

Gulp De wordpress in WordBench
Gulp De wordpress in WordBenchGulp De wordpress in WordBench
Gulp De wordpress in WordBench
 
Gruntを導入しよう!の話
Gruntを導入しよう!の話Gruntを導入しよう!の話
Gruntを導入しよう!の話
 
12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション
 
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
 
Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
 
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズCSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
Front end develop environment
Front end develop environmentFront end develop environment
Front end develop environment
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSSフレームワークを使った 簡単なレスポンシブデザインの作成CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
 
WordBenchTokyo-20111126
WordBenchTokyo-20111126WordBenchTokyo-20111126
WordBenchTokyo-20111126
 
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
 
Wordpress buddypress3
Wordpress buddypress3Wordpress buddypress3
Wordpress buddypress3
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
About rails 3
About rails 3About rails 3
About rails 3
 
自分達のサイボウズ office-を開発しよう
自分達のサイボウズ office-を開発しよう自分達のサイボウズ office-を開発しよう
自分達のサイボウズ office-を開発しよう
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 

Último

Último (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

gulp勉強会@IVP