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

17,941 views

Published on

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

1 Comment
30 Likes
Statistics
Notes
No Downloads
Views
Total views
17,941
On SlideShare
0
From Embeds
0
Number of Embeds
4,374
Actions
Shares
0
Downloads
37
Comments
1
Likes
30
Embeds 0
No embeds

No notes for slide

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

  1. 1. Javascriptを書きたくないヒ トのためのPythonScript Shizuoka.py #2 @kzfm
  2. 2. 私について •  @kzfm – 製薬会社の研究員(最近インフラ周りばかり) – perl -> python (-> haskell) •  最近pandas(Rみたいに使えるやつ)が お気に入り •  PyconAPACも参加登録済み
  3. 3. マリー・アントワネット曰く
  4. 4. じJajavascriptがいやなら   pythonで書けばいいじゃない
  5. 5. これによりPython革命勃発 (私の中で)
  6. 6. ブラウザでのPython実行方法 1. javascriptでpythonを実装する 1.  <script type= text/python ></ script> 2. pythonで書いてjavascriptにコンパ イルする 1.  実行されるのはjavascript 1.  sass -> css 2.  jade -> html
  7. 7. Brython javascriptに汚染されて汚れまくった この世界をPythonで浄化してやる! (意訳) h%p://www.brython.info/
  8. 8. python inside !
  9. 9. いいところ、わるいところ •  brython.jsを読みこめばpythonで開発で きるのでお手軽にはじめられる •  開発も活発 •  jQuery等のjavascript資産を気軽に流用 できなさそう •  最初の読み込みで若干モサッとする –  javascriptのパーサを通して構文解析して構文 木をつくってjavascriptを出力してevalしてい る
  10. 10. 我々は 完全に浄化された言語世界では 生きられないのです!
  11. 11. ブラウザでのPython実行方法 1. javascriptでpythonを実装する 1.  <script type= text/python ></ script> 2. pythonで書いてjavascriptにコンパ イルする 1.  実行されるのはjavascript 1.  scss -> css
  12. 12. Javascriptと Pythonの 融合個体的アプローチ
  13. 13. PythonScript •  Pythonサブセット •  javascriptライブラリ を簡単に取り込める h%p://apppyjs.appspot.com/
  14. 14. はじめかた 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");
  15. 15. <!DOCTYPE  html>   <html>      <body>          <h1>PythonScript  Example</h1>          <script  src="pythonscript.js"></script>          <script  src="app.py.js"></script>      </body>   </html>  
  16. 16. 補足 •  pythonscripttranslatorをインス トールするとpythonscriptというコマ ンドが使えるようになります •  これはpythonをjavasrcriptに変換し ます。 •  wgetでDLしたpythonscript.jsには 上記javascriptが必要とする関数が定義 されています。
  17. 17. コンパイルの流れ 1.  コードをPythonの astモジュールで パースして抽象構文 木に変換 2.  PythonToPytho nJSにより抽象構文 木がPythonJSに変 換 3.  PythonJSの抽象構 文木から Javascript生成
  18. 18. 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()")
  19. 19. 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)文字列も一度評価しないといけない感じ (+ )
  20. 20. 開発Tips •  livereloadを使えば、コードの更新を検知 してコンパイル、ブラウザのリロードをして くれる –  http://blog.kzfmix.com/entry/ 1367924270 •  よく監視させてるもの –  Jade –  Sass/Compass –  PythonScript
  21. 21. いいところ、わるいところ •  Javascriptの資産を手軽に使えるので 便利 •  楽しい、超楽しい、そして超ハマる •  バージョン上がると「えー動かんやん、な んでやーーー!?」ってなる – 発展途上
  22. 22. はまったところ •  jQueryバインディングにdelegateがなかった –  自分で追加して解決 •  ブラウザのイベントが受け取れない –  どうすんの? •  クラスメソッドが使えない –  シングルトンの作り方が分からなかった •  *args,**kwargsはサポートされているが –  関数で渡せなくてこまった •  が使えないのもテンプレート書くときに ちょっとめんどくさかった
  23. 23. デモ •  HakuinというSpine.jsインスパイアな フロントエンドMVCフレームワークを紹 介します。 •  白隠正宗美味いので飲むといいよ
  24. 24. あなたが使うべきなのは、 PythonScript? それともJavaScript?
  25. 25. CoffeeScriptでしたー (^O^)/ javascript

×