25
Javascriptを書きたくないヒ トのためのPythonScript Shizuoka.py #2 @kzfm

Javascriptを書きたくないヒ トのためのPythonScript

Embed Size (px)

DESCRIPTION

Javascriptを書きたくないヒ トのためのPythonScript

Citation preview

Page 1: Javascriptを書きたくないヒ トのためのPythonScript

Javascriptを書きたくないヒトのためのPythonScript

Shizuoka.py #2 @kzfm

Page 2: Javascriptを書きたくないヒ トのためのPythonScript

私について •  @kzfm – 製薬会社の研究員(最近インフラ周りばかり) – perl -> python (-> haskell)

•  最近pandas(Rみたいに使えるやつ)がお気に入り

•  PyconAPACも参加登録済み

Page 3: Javascriptを書きたくないヒ トのためのPythonScript

マリー・アントワネット曰く

Page 4: Javascriptを書きたくないヒ トのためのPythonScript

じJajavascriptがいやなら  pythonで書けばいいじゃない

Page 5: Javascriptを書きたくないヒ トのためのPythonScript

これによりPython革命勃発 (私の中で)

Page 6: Javascriptを書きたくないヒ トのためのPythonScript

ブラウザでのPython実行方法 1. javascriptでpythonを実装する 1.  <script type=“text/python”></

script>

2. pythonで書いてjavascriptにコンパイルする 1. 実行されるのはjavascript

1.  sass -> css 2.  jade -> html

Page 7: Javascriptを書きたくないヒ トのためのPythonScript

Brython

javascriptに汚染されて汚れまくった この世界をPythonで浄化してやる! (意訳)

h%p://www.brython.info/

Page 8: Javascriptを書きたくないヒ トのためのPythonScript

python inside !

Page 9: Javascriptを書きたくないヒ トのためのPythonScript

いいところ、わるいところ •  brython.jsを読みこめばpythonで開発できるのでお手軽にはじめられる

•  開発も活発

•  jQuery等のjavascript資産を気軽に流用できなさそう

•  最初の読み込みで若干モサッとする –  javascriptのパーサを通して構文解析して構文木をつくってjavascriptを出力してevalしている

Page 10: Javascriptを書きたくないヒ トのためのPythonScript

我々は 完全に浄化された言語世界では

生きられないのです!

Page 11: Javascriptを書きたくないヒ トのためのPythonScript

ブラウザでのPython実行方法 1. javascriptでpythonを実装する 1.  <script type=“text/python”></

script>

2. pythonで書いてjavascriptにコンパイルする 1. 実行されるのはjavascript

1.  scss -> css

Page 12: Javascriptを書きたくないヒ トのためのPythonScript

Javascriptと Pythonの 融合個体的アプローチ

Page 13: Javascriptを書きたくないヒ トのためのPythonScript

PythonScript •  Pythonサブセット •  javascriptライブラリを簡単に取り込める

h%p://apppyjs.appspot.com/

Page 14: Javascriptを書きたくないヒ トのためのPythonScript

はじめかた pip install pythonscripttranslator wget http://bit.ly/YSAbSS -O pythonscript.js echo 'print "Hello Shizuoka"' > app.py pythonscript < app.py > app.py.js

(app.py.js)  console.log("Hello  Shizuoka");

Page 15: Javascriptを書きたくないヒ トのためのPythonScript

<!DOCTYPE  html>  <html>      <body>          <h1>PythonScript  Example</h1>          <script  src="pythonscript.js"></script>          <script  src="app.py.js"></script>      </body>  </html>  

Page 16: Javascriptを書きたくないヒ トのためのPythonScript

補足 •  pythonscripttranslatorをインストールするとpythonscriptというコマンドが使えるようになります

•  これはpythonをjavasrcriptに変換します。

•  wgetでDLしたpythonscript.jsには上記javascriptが必要とする関数が定義されています。

Page 17: Javascriptを書きたくないヒ トのためのPythonScript

コンパイルの流れ 1. コードをPythonの

astモジュールでパースして抽象構文木に変換

2.  PythonToPythonJSにより抽象構文木がPythonJSに変換

3.  PythonJSの抽象構文木からJavascript生成

Page 18: Javascriptを書きたくないヒ トのためのPythonScript

jQueryの使い方 •  PythonScriptにjQueryバインディングがついてるのでそれを読み込んでおく

•  J関数でアクセスできる($といっしょ)

•  jQueryオブジェクトはj

bu%on  =  J("#newtask”)  bu%on.bind("click",  false,  self.create)

j  =  J("#taskinput").j  name  =    JS("j.val()")

Page 19: Javascriptを書きたくないヒ トのためのPythonScript

Javascriptを取り込む •  JS関数を使えばいい •  例)handlebarsをつかう

source  =  "<div  class='view'>{{name}}<a  href='#'  class='destroy'></a></div>"  +  “”  template  =    JS("Handlebars.compile(source)")  name  =  self.model.name  data  =  JS("template({name:name})")

注1)0.7.3だとJS関数の中で文字列をそのまま書くとコケる 注2)文字列も一度評価しないといけない感じ (+ “”)

Page 20: Javascriptを書きたくないヒ トのためのPythonScript

開発Tips •  livereloadを使えば、コードの更新を検知してコンパイル、ブラウザのリロードをしてくれる – http://blog.kzfmix.com/entry/1367924270

•  よく監視させてるもの – Jade – Sass/Compass – PythonScript

Page 21: Javascriptを書きたくないヒ トのためのPythonScript

いいところ、わるいところ •  Javascriptの資産を手軽に使えるので便利

•  楽しい、超楽しい、そして超ハマる

•  バージョン上がると「えー動かんやん、なんでやーーー!?」ってなる – 発展途上

Page 22: Javascriptを書きたくないヒ トのためのPythonScript

はまったところ •  jQueryバインディングにdelegateがなかった

– 自分で追加して解決 •  ブラウザのイベントが受け取れない

– どうすんの? •  クラスメソッドが使えない

– シングルトンの作り方が分からなかった •  *args,**kwargsはサポートされているが

– 関数で渡せなくてこまった •  “””が使えないのもテンプレート書くときにちょっとめんどくさかった

Page 23: Javascriptを書きたくないヒ トのためのPythonScript

デモ •  HakuinというSpine.jsインスパイアなフロントエンドMVCフレームワークを紹介します。

•  白隠正宗美味いので飲むといいよ

Page 24: Javascriptを書きたくないヒ トのためのPythonScript

あなたが使うべきなのは、 PythonScript?

それともJavaScript?

Page 25: Javascriptを書きたくないヒ トのためのPythonScript

CoffeeScriptでしたー \(^O^)/

javascript