Recommended
PDF
Backbone model collection (jscafe 8)
PDF
速くなければスマフォじゃない - インターンバージョン-
PPT
Algorithm 速いアルゴリズムを書くための基礎
PDF
asm.js x emscripten: The foundation of the next level Web games
PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
PDF
JavaScript/CSS 2015 Autumn
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
PDF
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
PDF
Spectacular Future with clojure.spec
PDF
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
PDF
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
PPTX
PDF
PDF
PDF
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
PDF
PDF
20150530 pgunconf-pgbench-semi-structured-benchmark
PDF
PDF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
PDF
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
PDF
PDF
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
PPTX
PDF
PFDS 10.2.1 lists with efficient catenation
PPTX
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
PDF
Media Art II 2013 第5回:openFrameworks Addonを使用する
PDF
PDF
ちゃんとWeb会議スライド『Coffee script』
PDF
PDF
More Related Content
PDF
Backbone model collection (jscafe 8)
PDF
速くなければスマフォじゃない - インターンバージョン-
PPT
Algorithm 速いアルゴリズムを書くための基礎
PDF
asm.js x emscripten: The foundation of the next level Web games
PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
PDF
JavaScript/CSS 2015 Autumn
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
PDF
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
What's hot
PDF
Spectacular Future with clojure.spec
PDF
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
PDF
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
PPTX
PDF
PDF
PDF
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
PDF
PDF
20150530 pgunconf-pgbench-semi-structured-benchmark
PDF
PDF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
PDF
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
PDF
PDF
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
PPTX
PDF
PFDS 10.2.1 lists with efficient catenation
PPTX
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
PDF
Media Art II 2013 第5回:openFrameworks Addonを使用する
Similar to 今さら始めるCoffeeScript
PDF
PDF
ちゃんとWeb会議スライド『Coffee script』
PDF
PDF
PPTX
PPTX
PPT
Lightning introduction to CoffeeScript 20131005
PDF
Siphone coffeemaker okayama-js-1
PDF
PPTX
PDF
KEY
PDF
PDF
非ガチ勢「よし、Coffee script使おう!」
PDF
PDF
PPTX
PDF
PDF
KEY
More from Ashitaba YOSHIOKA
PPTX
メタプログラミングRuby勉強会#7(fluentプラグイン)
PPTX
PPTX
PPTX
PPTX
PPT
PPT
PPT
PDF
KEY
KEY
KEY
KEY
KEY
KEY
KEY
Alfresco Java Foundation API
KEY
Alfresco and Web Script (English)
KEY
KEY
KEY
今さら始めるCoffeeScript 1. 2. 3. 自己紹介
■ 仕事
‣ Alfresco ... カスタマイズやサポート
‣ Liferay ... カスタマイズやサポート
■ それ以外
‣ Alfresco ... https://www.facebook.com/AlfrescoUserJP の管理
‣ Ruby,Python,Heroku,GAE,AWS等で遊ぶ
4. CoffeeScript
■ 概要
‣ JavaScriptのGood Partsを簡単に利用できるように実装された言語。コンパイルして最終的に
JavaScriptに変換される。最新バージョンは1.3.3(2012/9/5時点)
■ メリット
‣ JavaScriptの煩わしい部分を避けられる
➡ } や ) の不整合とか,
➡ (int i = 0; i < list.length; i++)という記述とか,
➡ (function() {})();のようなものとか..
■ http://coffeescript.org/を読んでください
■ 要するに何なの?
‣ The golden rule of CoffeeScript is: It’s just JavaScript .
5. 使えるの?
■ 例えばどこで使われている?
‣ Ruby on Rails ... バージョン3.1から正式にサポートされている
■ 覚えるの面倒くさいんだけど
‣ JavaScriptの方が遥かに面倒
■ コンパイルを噛ませるので手間が増えるのでは?
‣ 自動化する手段なら幾つでもある
‣ 開発チーム内でだけソースコードを触る場合には大丈夫
■ jQuery等と組合せられるの?
‣ できます。
■ 既存のコードを置換できるの?
‣ やめたほうがよいと思う。新規開発を対象とするのがよさげ。
6. インストール
■ Node.jsを入れる
‣ $ brew install nodejs
‣ $ curl http://npmjs.org/install.sh
‣ sh install.sh
■ CoffeeScriptを入れる
‣ $ npm install -g coffee-script
■ 入ったかな
‣ $ coffee
‣ coffee> # => プロンプトに変わればOK
■ コンパイル
‣ $ coffee -o <出力先ディレクトリ> -c <ソースディレクトリ>
7. sample.coffee
# assign
x=3
# array
a = [1, 2, 3, 4, "go"]
# function
ok = ->
alert "ok"
# function with arg
square = (v) ->
return v*v
# call function
alert square(6)
# object
o={
"name": "taro",
"age": 37,
"mail": "taro@aegif.jp"
}
8. sample.js(コンパイル結果)
// Generated by CoffeeScript 1.3.3
(function() {
var a, o, ok, square, x;
x = 3;
a = [1, 2, 3, 4, "go"];
ok = function() {
return alert("ok");
};
square = function(v) {
return v * v;
};
alert(square(6));
o={
"name": "taro",
"age": 37,
"mail": "taro@aegif.jp"
}; http://javascripter.github.com/jsrepl.html で動作確認済み
}).call(this);
9. 10. 代入
CoffeeScript JavaScript
x=3 var a, b, x, y;
a = b = 21 x = 3;
y = 2*x a = b = 21;
y = 2 * x;
11. 配列
CoffeeScript JavaScript
a = [1, 2, 3, 4, "go"] var a, aa, aaa;
aa = [1, "ni", ["in", "array"]] a = [1, 2, 3, 4, "go"];
aaa = [ aa = [1, "ni", ["in", "array"]];
1, 2, 3
4, 5, 6 aaa = [1, 2, 3, 4, 5, 6, "nana", "hachi",
"nana", "hachi", "ku" "ku"];
]
12. オブジェクト
CoffeeScript JavaScript
o={ var aegif, o;
"name": "taro", o={
"age": 37, "name": "taro",
"age": 37,
}
};
aegif = aegif = {
ac: ac: {
name: "accounting consulting" name: "accounting consulting",
bc: },
name: "bussiness consulting" bc: {
oc: name: "bussiness consulting",
name: "oss consulting" },
oc: {
name: "oss consulting",
}
};
13. 分岐
CoffeeScript JavaScript
if true var a;
alert "ok" if (true) {
alert("ok");
}
a=0
switch a a = 0;
when 0
switch (a) {
alert 0 case 0:
when 1 alert(0);
break;
alert 0 case 1:
when 2 alert(0);
break;
alert 2 case 2:
when 3 alert(2);
break;
alert 3
case 3:
else alert(3);
alert "else" break;
default:
alert("else");
}
14. Function
CoffeeScript JavaScript
ok = -> var ok, square, square2, cube;
alert "ok"
ok = function() {
return alert("ok");
# function with arg };
square = (v) ->
square = function(v) {
return v*v return v * v;
};
square2 = (v) -> return v*v
square2 = function(v) {
return v * v;
cube = (x) -> square(x)*x };
cube = function(x) {
return square(x) * x;
};
15. 16. 前準備
■ サンプルアプリケーションの用意
‣ $ rails new coffeetest && cd coffeetest
‣ $ rm public/index.html
‣ $ rails g controller top index
‣ $ bundle -V install
‣ $ rails g controller top index
‣ app/views/top/index.html.erbを変更
‣ app/assets/javascripts/top/js.coffeeを変更
■ デモ的なもの
17. CoffeeScriptとコンパイル結果
CoffeeScript JavaScript
$ -> (function() {
$("input[type=radio]").click ->
$("div#contents").css("background-color", $(function() {
$(@).val()) return $
("input[type=radio]").click(function() {
return $
("div#contents").css("background-color", $
(this).val());
});
});
}).call(this);
JavaScriptコードは次のパスに存在 => tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384
18. jQueryのみで書いた場合との比較
CoffeeScript jQuery
$ -> (function($) {
$("input[type=radio]").click -> $(document).ready(function() {
$("div#contents").css("background-color", $("input[type=radio]").click(function() {
$(@).val()) $("div#contents").css("background-
color", $(this).val())
});
});
})(jQuery);
19. 所感
■ 使いやすい
‣ 思ってたより簡単
‣ これまでjQuery使ってたりRuby触ってた人なら1日もあれば何とかなりそう
‣ 最終的にJavaScriptに変換されるため、これまで通りFirebugでのデバッグも簡単そう
■ 複雑な処理でも大丈夫か?
‣ 軽いロジックのみ必要な仕事で採用してその後徐々に利用対象の仕事を大きくするのが良さげ
■ その他
‣ とりあえずやってみるには敷居が低いのでお薦め
‣ .coffeeという拡張子の長さが欠点
‣ コーヒー好きでない
20. 参考情報
■ 参考URL
‣ http://coffeescript.org/
‣ http://javascripter.github.com/jsrepl.html
‣ http://www.oiax.jp/rails/coffee00.html
21.