Upload
nishimoto-keisuke
View
927
Download
2
Embed Size (px)
DESCRIPTION
Siphone Coffee Maker is CoffeeScript compiler for Java. Lightning Talk's presentation document.
Citation preview
Siphone Coffee MakerSiphone Coffee Maker
西本圭佑 (NISHIMOTO Keisuke)[email protected]
第一回 okayama-js勉強会
2011.10.29 第一回okayama-js 2
自己紹介自己紹介
➔ 緒言➔ 西本 圭佑➔ Twitter: keisuke_n➔ mailto: [email protected]
➔ 仕事➔ Webアプリ開発と支援(主なもの)
➔ 趣味➔ 宇宙・航空開発・鉄道情報ウォッチ➔ 電子工作
2011.10.29 第一回okayama-js 3
CoffeeScriptCoffeeScriptとはとは
➔ http://jashkenas.github.com/coffee-script/➔ JavaScriptに1対1に変換される➔ 便利な構文を持つ記述性のいい言語➔ 本来コンパイラはnode.jsで実行される➔ REPL(対話環境)装備
2011.10.29 第一回okayama-js 4
CoffeeScriptCoffeeScriptサンプルコードサンプルコード
# Assignment:number = 42opposite = true
# Conditions:number = -42 if opposite
# Functions:square = (x) -> x * x
# Arrays:list = [1, 2, 3, 4, 5]
# Objects:math = root: Math.sqrt cube: (x) -> x * square x
# Splats:race = (winner, runners...) -> print winner, runners
# Array comprehensions:cubes = (math.cube num for num in list)
2011.10.29 第一回okayama-js 5
Siphone Coffee MakerSiphone Coffee Makerとはとは
➔ http://cappuccino.jp/keisuken/scala/SiphoneCoffee/➔ Scalaで書かれたCoffeeScriptコンパイラのラッパ➔ Java環境で動く➔ Rhino(JavaScriptエンジン)を使っている➔ REPL(対話環境)も装備
2011.10.29 第一回okayama-js 6
デモ
2011.10.29 第一回okayama-js 7
JavaScriptJavaScriptへコンパイルへコンパイル
➔ jQueryでDOMを扱うコードサンプル
sum = (event) -> result = 0 for i in [1..3] result += parseInt( $('#value' + i).val()) $('#result').text(result)$('#calcButton').click(sum)
2011.10.29 第一回okayama-js 8
JavaScriptJavaScriptへコンパイルへコンパイル
➔ コンパイラでコンパイル
bash-3.2$ scoffee -c sum.coffeeCompiling... sum.coffeedone.
2011.10.29 第一回okayama-js 9
REPL(REPL(対話環境対話環境))
➔ 「モノリス」のアスペクト比は?: コードサンプル
aspect = (i * i for i in [1..3])alert "Monolith's aspect: #{aspect}"
2011.10.29 第一回okayama-js 10
REPL(REPL(対話環境対話環境))
➔ REPL(対話環境)で実行
bash-3.2$ scoffee> aspect = (i * i for i in [1..3])1,4,9> alert "Monolith's aspect: #{aspect}"Alert: Monolith's aspect: 1,4,9
2011.10.29 第一回okayama-js 11
GUIGUI作成、実行作成、実行
➔ GUIを表示するサンプルコード
importPackage javax.swingframe = JFrame("Hello, world!")frame.setDefaultClosing(JFrame.EXIT_ON_CLOSE)frame.add(JLabel("Hello, world!"))frame.pack()frame.setVisible true
2011.10.29 第一回okayama-js 12
GUIGUI作成、実行作成、実行
➔ REPLで実行
bash-3.2$ scoffee> importPackage javax.swing...> frame.setVisible true
2011.10.29 第一回okayama-js 13
おわりおわり
ご清聴ありがとうございました
2011.10.29 第一回okayama-js 14
質疑応答質疑応答
Any Questions?