SlideShare une entreprise Scribd logo
1  sur  37
GruntでJavaScript前作業
の自動化!
2014.01.16
CTO室 田中裕一
自己紹介
● 金融系 -> 組み込み系 -> SNS系 -> ゲーム系 -> 広告系を経てDMMへ
● 得意分野はインフラからフロントエンドまで、本業はServerSideエンジニ
ア。デザインは無理
● 大規模システムのアーキテクト、大規模データ基盤の構築周り
● DMMでは検索・リコメンド・行動解析まわりの研究開発やってます。
● 最近はjava,hdfs,hive,python,nodejs,scala,erlang,spark,aerospike周りを良
く触ってます。
本日のお品書き
1.どうして自動化するのか(10分)
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践(30分)
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
どうして自動化するのか?
1.どうして自動化するのか
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
DMMで困ってた事は何か?
● jsファイルのminifyを忘れてリリース失敗する
● テストを作ったけど、忙しくなって誰も流さなくなる
● チェックスタイル作ったけど形骸化する
● リリース手順とかリリースする頃には忘れる
● リリース手順書が古くリリース手順通りにやったらリリース失敗する
● バグの修正5分で終わるのにリリースに1時間かかる
リリースがリスキーで面倒!
1.どうして自動化するのか
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
どこに時間を使うべきか?
● リリース・コンパイル等、繰り返し作業に人手を使わない
● ドキュメントの生成・コードチェック・テストは自動化し、
形骸化させない
● 特定の人しか出来ない作業を作らない
● 仕様書・手順書は最低限作り、設定ファイルをベースにす
る
気をつける(た)所
どこに時間を使うべきか?
● 1日数回のリリースも可能、しかも品質は一定
● 自動なのでdocs,コードチェック,テストを意識しなくても良い
● ボタン押すだけなら誰(エンジニア以外)でも出来る
● 仕様書・手順書のメンテコストが無い
得られたメリットは何か?
機能開発・研究開発というエンジニアの本来の業務時間を作る
1.どうして自動化するのか
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
自動化レイヤの確認
● 今回の取り組み全体感
自動化レイヤの確認
● いろんなレイヤで自動化
● 今日の取り扱い
1.どうして自動化するのか
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
Gruntのおさらい
● jsのminify等の繰り返し作業の自動化
● Pluginを追加して機能を拡張
● Gruntを中心としたエコシステム
uglify
copy
concat
add
add
いきなり実践
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
Gruntの環境構築
npm install -g grunt-cli
mkdir hikarabo && cd hikarabo
npm init
npm install grunt --save
1. grunt-cliをインストール
2. プロジェクトディレクトリを作って
3. npm initコマンドでpackage.jsonを作成し
ています。
4. npmコマンドでgruntをインストール
※Node.jsのインストールは割愛します。
● 出来上がったpackage.json
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
最初のGruntfile.jsの作成
今回扱うディレクトリ構造
1. build : minifyしたjs等、output先
2. out : Docsの吐き出し先
3. public : リリースdir外部から参照される
4. source : 大本になるjsファイル置き場
最初のGruntfile.jsの作成
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
});
grunt.registerTask('default','show logs',function(){
grunt.log.write('console log?').ok();
});
};
1. Gruntfile.jsの名前で保存
2. gruntコマンドで実行
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
複数のjsファイルをconcatして結合する
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat:{
hikajs: {
src: [
'source/main.sample.js',
'source/main2.sample.js',
],
dest: 'build/concat.hikarabo.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default',['concat:hikajs']);
grunt.registerTask('default:concat', ['concat:hikajs']);
1. npmコマンドでpluginをインストール
2. Gruntfile.jsを編集
3. grunt又はgrunt concatで実行
npm install grunt-contrib-concat --save
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
jsファイルをminifyしてファイルサイズを小さくする
module.exports = function(grunt) {
grunt.initConfig({
(略)
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%=
grunt.template.today("yyyy-mm-dd") %> */¥n'
},
build: {
src: 'build/concat.hikarabo.js',
dest: 'build/<%= pkg.name %>.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default',['concat:hikajs','uglify']);
grunt.registerTask('default:concat', ['concat:hikajs']);
1. npmコマンドでpluginをインストール
2. Gruntfile.jsを編集
3. gruntで実行
npm install grunt-contrib-uglify --save
省略無しバージョン
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
jsファイルをcopyして公開準備をする
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
(略)
copy:{
main: {
src:'build/*.min.js',
dest: 'public/js/'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default',['concat:hikajs','uglify','copy']);
grunt.registerTask('default:concat', ['concat:hikajs']);
};
1. npmコマンドでpluginをインストール
2. Gruntfile.jsを編集
3. gruntで実行
npm install grunt-contrib-copy --save
省略無しバージョン
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
yuidocを使ってリリース時にDocumentを自動生成する
(略)
yuidoc: {
compile: {
name: '<% pkg.name %>',
description: '<%= pkg.description %>',
version: '<%= pkg.version %>',
url: '<%= pkg.homepage %>',
options: {
paths: [
'source/'
],
outdir: 'out/'
}
(略)
grunt.loadNpmTasks('grunt-contrib-yuidoc');
(略)
grunt.registerTask('build', ['yuidoc']);
};
1. npmコマンドでyuidocをインストール
2. npmコマンドでpluginをインストール
3. Gruntfile.jsを編集
4. grunt buildで実行
npm install yuidocjs -g
npm install grunt-contrib-yuidoc --save
省略無しバージョン
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
gjslingを使ってCodeCheckを自動で行う
(略)
gjslint: {
options: {
flags: [
'--flagfile .gjslintrc'
],
reporter: {
name: 'console'
}
},
lib: {
src: [
'source/*.js'
]
}
}
(略)
grunt.loadNpmTasks('grunt-gjslint');
grunt.registerTask('default',['gjslint','concat:hikajs','uglify','copy']);
};
1. npmコマンドでpluginをインストール
2. Gruntfile.jsを編集
3. .gjslintrcを作成
4. gruntで実行
npm install grunt-gjslint --save
省略無しバージョン
失敗時
成功時
.gjslintrc
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
jsファイルの変更時に自動で処理するようにする
(略)
watch: {
files: [
'source/*.js',
],
tasks: [
'gjslint',
'concat:hikajs',
'uglify',
'copy',
]
},
(略)
grunt.loadNpmTasks('grunt-contrib-watch');
};
1. npmコマンドでpluginをインストール
2. Gruntfile.jsを編集
3. grunt watchを実行
npm install grunt-contrib-watch --save
省略無しバージョン
本日のお品書き
1.どうして自動化するのか
● DMMで困っていた事は何か?
● どこに時間を使うべきか?
● 自動化のレイヤの確認
● Gruntのおさらい
2.いきなり実践
● Gruntの環境構築
● 最初のGruntfile.jsの作成
● 複数のjsファイルをconcatで結合する
● jsファイルをminifyしてファイルサイズを小さくする
● jsファイルをコピーして公開準備をする
● yuidocを使ってリリース時にDocumentを自動生成する
● gjslintを使ってCodeCheckを自動で行う
● jsファイルの変更時に自動で処理するようにする
● bower、bower-installer、Gruntを使って外部のjsを管理する
bower,bower-installer,gruntを使って外部のjsを管理する
● webAppは様々なframework,libraryで構成されている
● bowerはそれらpackageの管理をする
● Bower+gruntで外部packageの管理も自動化
Bowerの準備とjQueryのインストール
1. npmコマンドでBowerをインストール
2. bower initを実行
3. bowerでjqueryをインストール
npm install bower -g
bower init
bower install jqeury --save
{
"name": "hikarabo",
"version": "0.0.0",
"authors": [
"tanaka-yuichi <tanaka-yuichi@dmm.com>"
],
(略)
出来上がったbower.json
Bower-installerの準備と公開ディレクトリへのデプロイ
1. npmコマンドでBower-installerをインストール
2. bower.jsonにinstallセクションを追加
3. bower-installerを実行
npm install bower-installer -g
(略)
"dependencies": {
"jquery": "~2.1.3"
},
"install":{
"path":{
"js":"public/js"
},
"sources":{
"jquery":"bower_components/jquery/dist/jquery.min.js"
}
}
}
jqueryのデプロイを追加したbower.json
以上。

Contenu connexe

Tendances

採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」Takayuki Fukumoto
 
gcpug_okinawa_#2_hiroshi_kawakami
gcpug_okinawa_#2_hiroshi_kawakamigcpug_okinawa_#2_hiroshi_kawakami
gcpug_okinawa_#2_hiroshi_kawakamiHiroshi Kawakami
 
Monitoring Intelligence
Monitoring IntelligenceMonitoring Intelligence
Monitoring Intelligencenetopscoding
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較真治 米田
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らないKuniyoshi Tone
 
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話Tokoroten Nakayama
 
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化gree_tech
 
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー)  #jpugAmazon RDS for PostgreSQL ( JPUG 2014夏セミナー)  #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpugYasuhiro Matsuo
 
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話真治 米田
 
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility20201102 postgresql unconference_debility
20201102 postgresql unconference_debilitySatoshi Hirata
 
qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所Takeshi HASEGAWA
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるShuhei Iitsuka
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計maebashi
 
GCP vs 他社クラウド
GCP vs 他社クラウドGCP vs 他社クラウド
GCP vs 他社クラウドHasegawa Yusuke
 
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことMasahiko Sawada
 
Jubatus 新機能ハイライト
Jubatus 新機能ハイライトJubatus 新機能ハイライト
Jubatus 新機能ハイライトJubatusOfficial
 

Tendances (20)

採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
 
Jjug ccc
Jjug cccJjug ccc
Jjug ccc
 
MongoDB3.2の紹介
MongoDB3.2の紹介MongoDB3.2の紹介
MongoDB3.2の紹介
 
gcpug_okinawa_#2_hiroshi_kawakami
gcpug_okinawa_#2_hiroshi_kawakamigcpug_okinawa_#2_hiroshi_kawakami
gcpug_okinawa_#2_hiroshi_kawakami
 
Monitoring Intelligence
Monitoring IntelligenceMonitoring Intelligence
Monitoring Intelligence
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 
Drupal補完計画
Drupal補完計画Drupal補完計画
Drupal補完計画
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らない
 
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
 
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
 
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー)  #jpugAmazon RDS for PostgreSQL ( JPUG 2014夏セミナー)  #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
 
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
 
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
 
qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
GCP vs 他社クラウド
GCP vs 他社クラウドGCP vs 他社クラウド
GCP vs 他社クラウド
 
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
 
Jubatus 新機能ハイライト
Jubatus 新機能ハイライトJubatus 新機能ハイライト
Jubatus 新機能ハイライト
 

Similaire à Gruntでjava script前作業の自動化!

GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!leverages_event
 
jsCafe v13 Grunt
jsCafe v13 GruntjsCafe v13 Grunt
jsCafe v13 GruntShinya Sugo
 
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築kamiyam .
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~normalian
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用真治 米田
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeomantomo_masakura
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころJunya Hayashi
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstepsmokey monkey
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目saiwaki
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCPMichaelFindlater
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』Naoya Hashimoto
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 

Similaire à Gruntでjava script前作業の自動化! (20)

GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
 
jsCafe v13 Grunt
jsCafe v13 GruntjsCafe v13 Grunt
jsCafe v13 Grunt
 
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
0621 ndk game
0621 ndk game0621 ndk game
0621 ndk game
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 

Plus de Tanaka Yuichi

Product managershouldask mvp
Product managershouldask mvpProduct managershouldask mvp
Product managershouldask mvpTanaka Yuichi
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Tanaka Yuichi
 
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめBigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめTanaka Yuichi
 
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイントApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイントTanaka Yuichi
 
PythonでDeepLearningを始めるよ
PythonでDeepLearningを始めるよPythonでDeepLearningを始めるよ
PythonでDeepLearningを始めるよTanaka Yuichi
 
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Tanaka Yuichi
 
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]Tanaka Yuichi
 
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Tanaka Yuichi
 
Watson summit 2016_j2_5
Watson summit 2016_j2_5Watson summit 2016_j2_5
Watson summit 2016_j2_5Tanaka Yuichi
 
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Tanaka Yuichi
 
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜Tanaka Yuichi
 

Plus de Tanaka Yuichi (12)

Product managershouldask mvp
Product managershouldask mvpProduct managershouldask mvp
Product managershouldask mvp
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
 
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめBigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
 
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイントApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
 
PythonでDeepLearningを始めるよ
PythonでDeepLearningを始めるよPythonでDeepLearningを始めるよ
PythonでDeepLearningを始めるよ
 
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析
 
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
 
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析
 
Watson summit 2016_j2_5
Watson summit 2016_j2_5Watson summit 2016_j2_5
Watson summit 2016_j2_5
 
Big datauniversity
Big datauniversityBig datauniversity
Big datauniversity
 
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
 
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
 

Gruntでjava script前作業の自動化!