むずかしくない

JavaScriptのやさしい話
jQueryからの次のステップ
NDS in Niigata #8 @civic
おまえ、誰よ?
Twitter: @civic
NDS主催
Python, Java
TODO:ここに輝かしい実績を入れる1
TODO:ここに輝かしい実績を入れる2
今日話す内容
旧来のJavaScript開発から

一段ステップアップする
初心者向けの内容です
JavaScript

スキルチェック
いくつチェック?
jQueryを使ったことがある
Chrome Developer Toolを使ったことがある
nodejs, npmを使っている
ES6やAltJS系を使っている(ことがある)
browserify, webpackなどのモジュールシステムを使って
いる
grunt, gulpなどのタスクランナーを使っている
✓ 1∼3個ぐらいの人を対象
jQueryなんかでJavaScriptを使っている
ブラウザをリロードして確認
目次
JavaScript開発は覚えることが多い
ステップアップのためのツール
パッケージマネージャー
モジュールシステム
覚えることが多い
JavaScript関連技術は新しい
ネタがどんどん出てくる
Xはもう古い
これからはYの時代
https://flic.kr/p/6DvWAj
プクスー/
オッサンには時間がない
いきなり全部ではなく、はじめの一歩
まずはこれらを使ってみてはどうか
困ってから新しいことを覚えていくスタイル
ステップアップのためのツール
https://flic.kr/p/5YWuWk
ステップアップのツール
○ パッケージマネージャー
○ モジュールシステム
ー タスクランナー
ー 各種フレームワーク
(今回 対象外)
とりあえず

この2つを覚える
パッケージマネージャー
モジュールシステム
デモの内容
デモの内容はチュートリアル記事としてまとめ
ました

http://goo.gl/KapBRp
デモの手順を手を動かして確認する場合に

どうぞ
パッケージマネージャー
npm
npm
JavaScriptライブラリの管理
Java(maven), Ruby(gem), Python(pip)....
「ライブラリを取ってきてくれるツール」
旧来のWebページ作成
の流れ(例)
HTML作成
「jQuery使うか」
jQueryのサイトを開いてjsのダウンロード
<script>タグの挿入
demo
旧来の問題点
ライブラリのダウンロードの一貫性
<script>タグだらけ
依存関係の問題→順序大事
ライブラリAの使用にはBが必要
npmの場合
npm initで初期設定
npm installでライブラリをダウンロード
node_modulesに配備
--save でpackage.jsonという設定ファイルに
モジュール名とバージョンを記録
npmを使った結果www
npmでインストール
統一されたダウンロード方法
package.jsonに記録
環境の再現ができる
demo
<script>の問題は?
<script>タグのsrcはnode_modules?
<script>タグだらけの問題は変わらない?
ライブラリの依存関係は?
次に説明するモジュールシステムで解決!
モジュールシステム
WebPack
モジュールシステム
ライブラリの依存関係を解決
1つのJavaScriptソースファイルに結合
(モジュールバンドラー)
WebPack
モジュールシステムの1つ
npmで入れたライブラリ(モジュール)を使う時

var $ = require("jquery");
ビルドという作業を行う

→ JavaScriptの依存関係解決、連結
ビルドのやり方
$ webpack (ソースjs) (出力するJS)
$ webpack main.js bundle.js
demo
ね、簡単でしょ?
どんな利点があるのか?
ライブラリを気軽に利用可能
自身が作成するコードも小さいモジュールに分割
再利用可能に
さらに便利に
ファイルの連結時に

圧縮したい
ファイルの連結時に

圧縮したい
--optimize-minimize
ビルドされたら

デバッグしにくい!
ビルドされたら

デバッグしにくい!
デバッグするときにソースが読めないじゃん
source-mapを使う
元のJSと、ビルド後のJSの行とを対応づける
--devtool source-map
そんなにオプション引数

覚えきれない!
オプション引数

覚えきれない!
webpack.config.jsに記述
オプション引数なしで起動可能に
また設定ファイルの書き方を覚えなければ...
webpack.config.js
module.exports = {
entry: './main.js',
output: {filename: 'bundle.js'},
devtool: 'source-map',
};
ファイル編集のたびにコマ
ンドを実行するのが面倒!
ファイル編集のたびにコマ
ンドを実行するのが面倒!
ファイルの変更を監視
webpack --watch
Webサーバーとして動作・自動リロード
webpack-dev-server --inline
demo
なんかES6とかいう新しい
JavaScriptがあるようだけど!
(ちょっと難しい話)
なんかES6とかいう新しい
JavaScriptがあるようだけど
ES6(ES2015)をES5に変換する
最新のJavaScriptで書いて、現行のJavaScriptに
変換して使う
npm install babel-loader
webpack.config.js
...
module: {
loaders: [{
test: /.jsx?$/,
exclude: /node_modules/,
loader: 'babel'
}]
}
(※babel6では babel?presets[]=es2015)
ファイルのコピーとか他に
も色々やりたいことがある!
ファイルのコピーとか他に
も色々やりたいことがある!
そろそろ、タスクランナーも使おうな...
gulp
grunt
まとめ
今日学んだこと
ライブラリモジュールの管理
npmでやろう
JSのビルド(依存関係解決)
webpackでやろう
今日学んだこと
ライブラリ

管理
ビルド
コマンド npm webpack
設定ファイル package.json webpack.config.js
まずはこの2つを
使うことから始めてみよう
ご静聴ありがとうございました

むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8