SlideShare a Scribd company logo
1 of 29
俺的フロントエンド開発
2015/02/26
• HTML/CSSプリプロセッサ
• 静的サイトジェネレータ
• JSフレームワーク
• エディタ
アジェンダ
HTML/CSSプリプロセッサ
• HTMLとかCSSとか生で書くのが面倒くさい
• 少しでもタイプ数を減らして書きたい
• あわよくば変数とかループとか使いたい
HTMLプリプロセッサ
• HAML
• インデントベース
• %body といったように、<>の代わりに%を使う
• 行頭に-やら=やらを置くことで、制御構文や変数が使える
• SLIM
• インデントベース
• HAMLに酷似
• 行頭文字列をタグとして扱う
• テキストは行頭に|を置く
• Jade
• 使ったこと無いので分からない
HAML
%html
%head
%body
%div#main
%ul.list
%li
This is text
%li
That is text
/ comment tag
SLIM
html
head
body
#main
ul.list
li
|This is text
li
|That is text
/ comment tag
CSSプリプロセッサ
• SASS
• インデントベース
• 記法が厳格
• {};が不要
• SCSS
• インデント無視
• CSSを入れ子と変数に対応させ
た感じ
• CSSをそのままSCSSプリプロ
セッサに わせてもエラーでな
い
• LESS
• SCSSの記法違い、みたいな
感じ
• 使ったこと無いので分から
ない
• Stylus
• なんかもう自由にかけるや
つっぽい
• 使ったこと無いので分から
ない
SASS
@import “compass”
body
margin: 0
padding: 0
#main
border: 1px solid #000
+border-radius( 4px )
ul
&.list
li
display: inline-block
body{
margin: 0px;
padding: 0px;
}
#main{
border: 1px solid #000;
-ms-border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
#main ul.list li{
display: inlne-block;
}
SCSS
@import “compass”
body{
margin: 0;
padding: 0;
}
#main{
border: 1px solid #000;
@include border-radius( 4px );
ul{
&.list{
li{
display: inline-block;
}
}
}
}
body{
margin: 0px;
padding: 0px;
}
#main{
border: 1px solid #000;
-ms-border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
#main ul.list li{
display: inlne-block;
}
使い方
• HAMLなりSLIMなりSASSなりをインストール
• 黒い画面で、srcディレクトリ、destディレクトリを指定
して実行
• 監視モードで起動すれば、ファイルの更新を感知して
自動的にコンパイルしてくれる
静的サイトジェネレータ
• SLIMとSASSと、2つを同時に起動するのが煩雑
• これにJSコンパイラ入れたら3つも起動しなきゃいけな
いダルい
• 1つのアプリケーション起動で、それぞれ勝手に監視、
コンパイルしてほしい
静的サイトジェネレータ
• Grunt
• Node.js製
• コンパイルタスクを自分で記述する
• JSON形式でタスクの設定を記述す
る
• 書きだされたファイルを参照する
• Gulp
• Node.js製
• コンパイルタスクを自分で記述する
• JavaScriptのように、手続き的に記述
する
• 書きだされたファイルを参照する
• Middleman
• Ruby製
• 設定より規約
• 書きだされるのはキャッシュ
• rackサーバーがキャッシュを内部
的に静的ファイル化してブラウ
ザに送る
• TypeScript等Node.js系ライブラリ
が使用できない
• 俺はこれが好き
JSフレームワーク
• WebAPIからのレスポンスに対する表示処理を1から書
くの面倒
• APIのレスポンス(JSON)の対応関係を記述するだけ
で、HTMLに反映して欲しい
• 絞り込みやらソートやらも条件書くだけで済ませたい
JSフレームワーク
• Angular.js
• Backbone.js + Marionette.js
• Vue.js
• Knockout.js (使ったこと無いので分からない)
• Ember.js(使ったこと無いので分からない)
• React.js(使ったこと無いので分からない)
ANGULAR.JS
• 多分日本で一番使われてるJSフレームワーク
• HTML側にモデルと表示位置との対応関係を書くだけで
表示できる
• 多機能らしい
• あまりJS書かない人向け
• 実装するシステムが複雑化すると使い勝手が悪い
BACKBONE.JS
• 本当に共通化すべき最小限の機能だけを持つJSフレーム
ワーク
• バリバリJS書ける人が煩雑なところだけ省略したいと
きに使うイメージ
• モデルとの対応関係はJS側で記述する
MARIONETTE.JS
• Backbone.jsの拡張フレームワーク
• もうちょっと共通化出来そうなところを共通化したり、
機能追加したりしてる
• Backbone.jsつかうなら、Marionette.jsも併用すべき
VUE.JS
• Angular.jsっぽい、軽量JSフレームワーク
• Angular.jsほど多機能ではないが、気軽に使うには充分
なほどの性能を持っている
HTMLエディタ
• vim
• emacs
• eclipse (Aptana)
• sublime text2
• ATOM
• Brackets
• DreamWeaver
• Adobe Edge Code
• Adobe Edge Reflow
• Adobe Muse
VIM / EMACS
• 言わずと知れたテキストエディタ
• emacsは統合開発環境といったほうがいいかも
• HTML書くのに特化しているわけじゃない
• HTML的に便利というわけでもない
• 使っている人がいたらそっとしておいてあげよう
ECLIPSE / APTANA
• 言わずと知れたIDE
• 高性能で品質はいいが、重い
• HTMLに限ったIDEではないので、重いのに耐えられる
なら使ってもいい
SUBLIMETEXT2
• Ruby界隈で大人気のテキストエディタ
• トリッキーながら便利な機能がたくさん
• エディタからプラグインがダウンロードできる
• テキストエディタなので、HTMLに特化しているわけで
はない
ATOM
• GITHUB製のYet Another SublimeText的なテキストエディ
タ
• 便利らしい
BRACKETS
• Adobe製のオープンソースHTMLエディタ
• HTMLコーディングに特化
• まだかゆいところには手が届かない模様
DREAM WEAVER
• 旧Macromedia製HTMLエディタ
• HTMLコーディングに超特化
• HTMLに関することならなんでもできる
• ライブビュー機能により、実装しながら結果を確認で
きる
• 重い
ADOBE EDGE CODE
• BracketsにAdobe特有の機能を追加したもの
• Bracketsにある機能がなかったり、Bracketsにない機能
(主に他Adobe製品との連携)があったり
ADOBE EDGE REFLOW
• どちらかというとWYSIWYG的なエディタ
• レスポンシブページを実装するのに特化
• 様々なウインドウサイズをグリグリ変えながら実装が
できる
ADOBE MUSE
• WYSIWYG的エディタ
• サイトの構成を作ってから、各ページのデザインを作り
こんでいく
• ページテンプレートのような機能がある
• モックアップを作るのには向いてる
• 書きだされたソースコードが汚い(ホームページビルダー
を彷彿とさせる
• まだかゆいところには手が届かない / 重い
結局どれを使うのがベターか
• 適材適所
• 慣れ
• 周りに知っている人、質問に答えられる人がいるかど
うか
• 俺の基本構成
• Vim / Middleman / Slim / Sass(Compass) /

Backbone.js + Marionette.js orVue.js / jQuery / Sugar.js

More Related Content

Viewers also liked

5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめKohei Kadowaki
 
ウェブ標準デバイス系 API 総集編 2014
ウェブ標準デバイス系 API 総集編 2014ウェブ標準デバイス系 API 総集編 2014
ウェブ標準デバイス系 API 総集編 2014Futomi Hatano
 
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門Kohei Kadowaki
 
モバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンスモバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンスyoshikawa_t
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてToshio Ehara
 
Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号Masahito Zembutsu
 
英語の組み立て方と学び方―高校英語へのステップアップ,その先へ
英語の組み立て方と学び方―高校英語へのステップアップ,その先へ英語の組み立て方と学び方―高校英語へのステップアップ,その先へ
英語の組み立て方と学び方―高校英語へのステップアップ,その先へThun der
 
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.jsHiroki Toyokawa
 
Dockerのネットワークについて
DockerのネットワークについてDockerのネットワークについて
DockerのネットワークについてNobuyuki Matsui
 
pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話Masashi Shibata
 
SekainoKAO by TeamKAO
SekainoKAO by TeamKAOSekainoKAO by TeamKAO
SekainoKAO by TeamKAOHideki
 
Go, memcached, microservices
Go, memcached, microservicesGo, memcached, microservices
Go, memcached, microservicesmosa siru
 
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Yusuke Miyazaki
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティAtsuo Ishimoto
 
ssh_configのススメ
ssh_configのススメssh_configのススメ
ssh_configのススメHisaharu Ishii
 
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側Katayanagi Nobuko
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組みTakayuki Shimizukawa
 
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaokeRy pyconjp2015 karaoke
Ry pyconjp2015 karaokeRenyuan Lyu
 

Viewers also liked (20)

5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ
 
ウェブ標準デバイス系 API 総集編 2014
ウェブ標準デバイス系 API 総集編 2014ウェブ標準デバイス系 API 総集編 2014
ウェブ標準デバイス系 API 総集編 2014
 
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
 
モバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンスモバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンス
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
 
Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号
 
英語の組み立て方と学び方―高校英語へのステップアップ,その先へ
英語の組み立て方と学び方―高校英語へのステップアップ,その先へ英語の組み立て方と学び方―高校英語へのステップアップ,その先へ
英語の組み立て方と学び方―高校英語へのステップアップ,その先へ
 
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
 
Dockerのネットワークについて
DockerのネットワークについてDockerのネットワークについて
Dockerのネットワークについて
 
sqldf for pandas
sqldf for pandassqldf for pandas
sqldf for pandas
 
pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話
 
ログ勉 Vol.1
ログ勉 Vol.1ログ勉 Vol.1
ログ勉 Vol.1
 
SekainoKAO by TeamKAO
SekainoKAO by TeamKAOSekainoKAO by TeamKAO
SekainoKAO by TeamKAO
 
Go, memcached, microservices
Go, memcached, microservicesGo, memcached, microservices
Go, memcached, microservices
 
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
ssh_configのススメ
ssh_configのススメssh_configのススメ
ssh_configのススメ
 
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
 
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaokeRy pyconjp2015 karaoke
Ry pyconjp2015 karaoke
 

Similar to 俺的フロントエンド開発

HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5George Harada
 
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1Nishida Kansuke
 
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
情報編集(Web)  HTML5とは何か? HTML5、はじめの一歩情報編集(Web)  HTML5とは何か? HTML5、はじめの一歩
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩Atsushi Tadokoro
 
Web programming introduction
Web programming introductionWeb programming introduction
Web programming introductioncolun
 
20080823-TransformingPlainTextToHtml
20080823-TransformingPlainTextToHtml20080823-TransformingPlainTextToHtml
20080823-TransformingPlainTextToHtmlKoji SHIMADA
 
To write a better HTML
To write a better HTMLTo write a better HTML
To write a better HTMLaotak
 
CloudFormation Getting Started with YAML
CloudFormation Getting Started with YAMLCloudFormation Getting Started with YAML
CloudFormation Getting Started with YAMLYukitaka Ohmura
 
趣味でやるSmalltalk Webアプリ開発
趣味でやるSmalltalk Webアプリ開発趣味でやるSmalltalk Webアプリ開発
趣味でやるSmalltalk Webアプリ開発Kazuki Minamitani
 
141115 making web site
141115 making web site141115 making web site
141115 making web siteHimi Sato
 
WebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorWebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorSho Okada
 
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf SlideYapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf SlideSeiji Ohira
 

Similar to 俺的フロントエンド開発 (11)

HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
 
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
 
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
情報編集(Web)  HTML5とは何か? HTML5、はじめの一歩情報編集(Web)  HTML5とは何か? HTML5、はじめの一歩
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
 
Web programming introduction
Web programming introductionWeb programming introduction
Web programming introduction
 
20080823-TransformingPlainTextToHtml
20080823-TransformingPlainTextToHtml20080823-TransformingPlainTextToHtml
20080823-TransformingPlainTextToHtml
 
To write a better HTML
To write a better HTMLTo write a better HTML
To write a better HTML
 
CloudFormation Getting Started with YAML
CloudFormation Getting Started with YAMLCloudFormation Getting Started with YAML
CloudFormation Getting Started with YAML
 
趣味でやるSmalltalk Webアプリ開発
趣味でやるSmalltalk Webアプリ開発趣味でやるSmalltalk Webアプリ開発
趣味でやるSmalltalk Webアプリ開発
 
141115 making web site
141115 making web site141115 making web site
141115 making web site
 
WebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorWebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazor
 
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf SlideYapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
 

More from Kotaro Kawashima

THE BEM: Better Css Naming Conventions
THE BEM: Better Css Naming ConventionsTHE BEM: Better Css Naming Conventions
THE BEM: Better Css Naming ConventionsKotaro Kawashima
 
jQuery.Deferredってシンプルなんだぜ
jQuery.DeferredってシンプルなんだぜjQuery.Deferredってシンプルなんだぜ
jQuery.DeferredってシンプルなんだぜKotaro Kawashima
 
hachioji.pm #40 : asynchronous in JS
hachioji.pm #40 : asynchronous in JShachioji.pm #40 : asynchronous in JS
hachioji.pm #40 : asynchronous in JSKotaro Kawashima
 
Middleman Usecase / TokyouMiddlemanMeetup#1
Middleman Usecase / TokyouMiddlemanMeetup#1Middleman Usecase / TokyouMiddlemanMeetup#1
Middleman Usecase / TokyouMiddlemanMeetup#1Kotaro Kawashima
 

More from Kotaro Kawashima (6)

THE BEM: Better Css Naming Conventions
THE BEM: Better Css Naming ConventionsTHE BEM: Better Css Naming Conventions
THE BEM: Better Css Naming Conventions
 
jQuery.Deferredってシンプルなんだぜ
jQuery.DeferredってシンプルなんだぜjQuery.Deferredってシンプルなんだぜ
jQuery.Deferredってシンプルなんだぜ
 
hachioji.pm #40 : asynchronous in JS
hachioji.pm #40 : asynchronous in JShachioji.pm #40 : asynchronous in JS
hachioji.pm #40 : asynchronous in JS
 
Middleman Usecase / TokyouMiddlemanMeetup#1
Middleman Usecase / TokyouMiddlemanMeetup#1Middleman Usecase / TokyouMiddlemanMeetup#1
Middleman Usecase / TokyouMiddlemanMeetup#1
 
Hachiojipm #28
Hachiojipm #28Hachiojipm #28
Hachiojipm #28
 
Hachioji.pm No21
Hachioji.pm No21Hachioji.pm No21
Hachioji.pm No21
 

俺的フロントエンド開発