SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
JSの開発で最近やったこと
Agenda
1. 何をしたか
2. 使うことにしたツール
何をしたか
まとめ
JSをビルドするようにしました
機械語に変換するわけじゃない
⾃動的に処理したいことをまとめてやる
例︓
JSやCSSの結合、minify、ソースマップの作成
AltJSやSassのコンパイル
やれることが増えました
前提
現在のチーム事情
クライアントサイドはAngularJS
サーバサイドはJava EE
プロジェクトの分離
今まではサーバサイドとひとまとめだった
htmlやJSの修正確認には、javaのビルドも必要
分離することで、フロントエンド単独でビルドできる
でも結局は
デプロイはワンバイナリでやりたい
サーバサイドのビルドは必要
ビルドのためのディレクトリ構成
./tsubomi-site-frontend
├ src ... 開発者が触るディレクトリ
├ dist ... ビルドの成果物を格納
├ test ... テストコードを格納
└ package.json ... 各種ツールが読む設定ファイル
karma.conf.js
gulpfile.js
srcの下はこんな感じ
src
├ css
├ img
├ templates
├ js
│ ├ lib
│ ├ controller
│ ├ directive
│ ├ filter
│ └ service
└ index.html
JSのバンドル
テンプレートと同じ数だけJSファイルが存在していた
画⾯1枚(テンプレート1個) == JS1個で分かりやすい
同じディレクトリにlogin.jsとlogin.tplがある
ブラウザにとっては、いくつもファイルをダウンロード
しなくてはいけない
パフォーマンスの悪化を招く
増えたファイルはビルド時に1個にまとめる
これをバンドルという
ブラウザのリクエスト数が減ってハッピー
ユニットテスト
していなかった
ちょっとした修正もデプロイして動かすまで不安
これからはします
ファイルを監視しておくと、常時テストが⾛るよう
になる
簡単な失敗はすぐ分かる
キャッシュ
いままで
機能を追加しても、古いJSやテンプレートがキャッ
シュとして残っていて動かない
そもそもキャッシュ無効にするとパフォーマンス
悪い
ファイル名にファイルのハッシュ値を加える
ファイルに変更があればハッシュ値が変わる
ファイル名が変わるので、ブラウザはリクエスト
を投げる
いわゆるcache bust
変更がなければファイル名は変わらない
ブラウザはキャッシュしたものを使ってよい
使うことにしたもの
ビルドにつかうツール
node
エコシステムの中⼼
npm
nodeモジュールのパッケージ管理ツール
gulp
ビルドツール/タスクランナー
今年になってからネガティブな話題
Grunt/Gulpで憔悴したおっさんの話 - MOL
最近のビルドツールって何なの︖ - 檜⼭正幸のキ
マイラ飼育記
ビルドにつかうツール
karma
テストランナー
Jenkinsでも使える
GUIのない環境でもよい(PhantomJS)
テスト結果をxmlに出⼒(jenkins⽤)
ファイル監視してtestが⾛ると便利
jasmine
テスティングフレームワーク
ここは何でもいいと思った
rspecぽく書ける
おまけ︓使わないことにしたもの
grunt
後発のgulpの⽅が分かりやすい
browserify
AngularJSはrequireを使わない
bable, coffee script, typescript
素のJSを書けるようになりたいので
bower
なんとなく…
webpack
多機能なものを避けてた…

Contenu connexe

Tendances

20120826 ec cube-handson
20120826 ec cube-handson20120826 ec cube-handson
20120826 ec cube-handson
Masaki Takeda
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemo
ytanno
 

Tendances (19)

MVCフレームワーク Sails.jsについて機能紹介
MVCフレームワーク Sails.jsについて機能紹介MVCフレームワーク Sails.jsについて機能紹介
MVCフレームワーク Sails.jsについて機能紹介
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
Saitowotsukutsutemita
SaitowotsukutsutemitaSaitowotsukutsutemita
Saitowotsukutsutemita
 
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
 
Slide
SlideSlide
Slide
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
日頃のプログラミングについて
日頃のプログラミングについて日頃のプログラミングについて
日頃のプログラミングについて
 
20120826 ec cube-handson
20120826 ec cube-handson20120826 ec cube-handson
20120826 ec cube-handson
 
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)
 
TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
 
AngularJS2でつまづいたこと
AngularJS2でつまづいたことAngularJS2でつまづいたこと
AngularJS2でつまづいたこと
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemo
 
Ms build 触ってみよう
Ms build 触ってみようMs build 触ってみよう
Ms build 触ってみよう
 
Node.js Hands-On
Node.js Hands-OnNode.js Hands-On
Node.js Hands-On
 
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 

Similaire à Jsのビルド環境

中・大規模サイト作成業務フロー
中・大規模サイト作成業務フロー中・大規模サイト作成業務フロー
中・大規模サイト作成業務フロー
senakamura
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
Tadahiro Ishisaka
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
 
JSX Design Overview (日本語)
JSX Design Overview (日本語)JSX Design Overview (日本語)
JSX Design Overview (日本語)
Kazuho Oku
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
 

Similaire à Jsのビルド環境 (20)

2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
 
中・大規模サイト作成業務フロー
中・大規模サイト作成業務フロー中・大規模サイト作成業務フロー
中・大規模サイト作成業務フロー
 
Gradle handson
Gradle handsonGradle handson
Gradle handson
 
~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
 
Cedec2014モバイル初のNoSQLを使ってみよう
Cedec2014モバイル初のNoSQLを使ってみようCedec2014モバイル初のNoSQLを使ってみよう
Cedec2014モバイル初のNoSQLを使ってみよう
 
12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション
 
Web frontend performance tuning
Web frontend      performance tuningWeb frontend      performance tuning
Web frontend performance tuning
 
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
 
Synquery ja
Synquery jaSynquery ja
Synquery ja
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamental
 
JSX Design Overview (日本語)
JSX Design Overview (日本語)JSX Design Overview (日本語)
JSX Design Overview (日本語)
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
第12回rest勉強会 これまでの補足・展望編
第12回rest勉強会 これまでの補足・展望編第12回rest勉強会 これまでの補足・展望編
第12回rest勉強会 これまでの補足・展望編
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 

Jsのビルド環境