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

More Related Content

What's hot

WindowsでPython
WindowsでPythonWindowsでPython
WindowsでPythondrillan
 
Stapy#17LT
Stapy#17LTStapy#17LT
Stapy#17LTdrillan
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Katsuhiro Morishita
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル敦志 金谷
 
チームで活用するAnaconda入門
チームで活用するAnaconda入門チームで活用するAnaconda入門
チームで活用するAnaconda入門Takeshi Akutsu
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406Shinya Okano
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Reportgree_tech
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発shoma h
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?Aki Ariga
 
Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTdrillan
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツールaoshiman
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyoShuyo Nakatani
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3Atsushi Odagiri
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplibShinya Okano
 

What's hot (20)

WindowsでPython
WindowsでPythonWindowsでPython
WindowsでPython
 
Stapy#17LT
Stapy#17LTStapy#17LT
Stapy#17LT
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
 
S18 t0 introduction
S18 t0 introductionS18 t0 introduction
S18 t0 introduction
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
 
チームで活用するAnaconda入門
チームで活用するAnaconda入門チームで活用するAnaconda入門
チームで活用するAnaconda入門
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
 
Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LT
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
 
Stapy#22 LT
Stapy#22 LTStapy#22 LT
Stapy#22 LT
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 
S14 t0 introduction
S14 t0 introductionS14 t0 introduction
S14 t0 introduction
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
プログラミング入門 Python超入門編
プログラミング入門 Python超入門編プログラミング入門 Python超入門編
プログラミング入門 Python超入門編
 

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

今日から始めるPython
今日から始めるPython今日から始めるPython
今日から始めるPythonKeisuke Imura
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17Shinya Okano
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementationsmasahitojp
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介shoma h
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門kashew_nuts
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたYosuke Onoue
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺Shogo Kawahara
 
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdftaisa831
 
20190920 hannaripython20
20190920 hannaripython2020190920 hannaripython20
20190920 hannaripython20Otazo Man
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出marsee101
 
Homebrewによるソフトウェアの実装 (3)
Homebrewによるソフトウェアの実装 (3)Homebrewによるソフトウェアの実装 (3)
Homebrewによるソフトウェアの実装 (3)Yoshihiro Mizoguchi
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトTetsuya Morimoto
 
Zappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるZappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるIosif Takakura
 
Python charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionPython charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionssuserc75dc7
 
第2回関西ソーシャルゲーム勉強会
第2回関西ソーシャルゲーム勉強会第2回関西ソーシャルゲーム勉強会
第2回関西ソーシャルゲーム勉強会ha1t
 
OSS 資料管理システム kassis orange のご紹介
OSS 資料管理システム kassis orange のご紹介OSS 資料管理システム kassis orange のご紹介
OSS 資料管理システム kassis orange のご紹介Akifumi Nakamura
 

Similar to Javascriptを書きたくないヒ トのためのPythonScript (20)

今日から始めるPython
今日から始めるPython今日から始めるPython
今日から始めるPython
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
Fpgax20170924
Fpgax20170924Fpgax20170924
Fpgax20170924
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみた
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
 
20190920 hannaripython20
20190920 hannaripython2020190920 hannaripython20
20190920 hannaripython20
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
 
Homebrewによるソフトウェアの実装 (3)
Homebrewによるソフトウェアの実装 (3)Homebrewによるソフトウェアの実装 (3)
Homebrewによるソフトウェアの実装 (3)
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
 
Zappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるZappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみる
 
Introduction pp.js
Introduction pp.jsIntroduction pp.js
Introduction pp.js
 
Pykonjp2014
Pykonjp2014Pykonjp2014
Pykonjp2014
 
Python charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionPython charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introduction
 
第2回関西ソーシャルゲーム勉強会
第2回関西ソーシャルゲーム勉強会第2回関西ソーシャルゲーム勉強会
第2回関西ソーシャルゲーム勉強会
 
OSS 資料管理システム kassis orange のご紹介
OSS 資料管理システム kassis orange のご紹介OSS 資料管理システム kassis orange のご紹介
OSS 資料管理システム kassis orange のご紹介
 

More from Kazufumi Ohkawa

ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67Kazufumi Ohkawa
 
ClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅKazufumi Ohkawa
 
SAR精度70% その先へ
SAR精度70% その先へSAR精度70% その先へ
SAR精度70% その先へKazufumi Ohkawa
 
視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけることKazufumi Ohkawa
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMOKazufumi Ohkawa
 
あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史Kazufumi Ohkawa
 
IPython notebookを使おう
IPython notebookを使おうIPython notebookを使おう
IPython notebookを使おうKazufumi Ohkawa
 
実践コンピュータビジョン8章
実践コンピュータビジョン8章実践コンピュータビジョン8章
実践コンピュータビジョン8章Kazufumi Ohkawa
 
エンジョイ☆スクレイピング
エンジョイ☆スクレイピングエンジョイ☆スクレイピング
エンジョイ☆スクレイピングKazufumi Ohkawa
 
Redmineでもめない会議☆
Redmineでもめない会議☆Redmineでもめない会議☆
Redmineでもめない会議☆Kazufumi Ohkawa
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 
入門機械学習読書会9章
入門機械学習読書会9章入門機械学習読書会9章
入門機械学習読書会9章Kazufumi Ohkawa
 
入門機械学習読書会二回目
入門機械学習読書会二回目入門機械学習読書会二回目
入門機械学習読書会二回目Kazufumi Ohkawa
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章Kazufumi Ohkawa
 

More from Kazufumi Ohkawa (20)

圏論walker
圏論walker圏論walker
圏論walker
 
ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67
 
ClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅ
 
SAR精度70% その先へ
SAR精度70% その先へSAR精度70% その先へ
SAR精度70% その先へ
 
視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO
 
あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史
 
IPython notebookを使おう
IPython notebookを使おうIPython notebookを使おう
IPython notebookを使おう
 
Mishimasyk141025
Mishimasyk141025Mishimasyk141025
Mishimasyk141025
 
実践コンピュータビジョン8章
実践コンピュータビジョン8章実践コンピュータビジョン8章
実践コンピュータビジョン8章
 
R -> Python
R -> PythonR -> Python
R -> Python
 
ChEMBLを使おう
ChEMBLを使おうChEMBLを使おう
ChEMBLを使おう
 
Unigram mixtures
Unigram mixturesUnigram mixtures
Unigram mixtures
 
エンジョイ☆スクレイピング
エンジョイ☆スクレイピングエンジョイ☆スクレイピング
エンジョイ☆スクレイピング
 
Redmineでもめない会議☆
Redmineでもめない会議☆Redmineでもめない会議☆
Redmineでもめない会議☆
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 
入門機械学習読書会9章
入門機械学習読書会9章入門機械学習読書会9章
入門機械学習読書会9章
 
入門機械学習6章
入門機械学習6章入門機械学習6章
入門機械学習6章
 
入門機械学習読書会二回目
入門機械学習読書会二回目入門機械学習読書会二回目
入門機械学習読書会二回目
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章
 

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