Personal tools

PythonのコードをJavaScriptにコンバートするpy2js

 PythonのコードをJavaScriptにコンバートできるモジュールを発見したのでちょっと使ってみた。Pythonのバイトコードコンパイラが出力するASTツリーからJavaScriptを生成している。これまでも,簡単な文字列置換を使ってPythonのコードをJavaScriptにコンバートする試みはいつくかあった(CrackAJAXとか)けど,こちらの方が汎用性が高いし,将来性がある気がする。はまらなそう,という意味で。

こういう仕組みを使うと,Webブラウザ上で実行するような簡単なコードを含めて,ロジックをPythonだけで書けるようになりそう。JavsScriptは良い言語だと思うけど,ずっとPythonを使っている方が気分がいいし,言語の切り替えが少ない方が開発効率も高くなるはずだ。テンプレートエンジンやサーバ側で自動的に変換してくれようにすると素敵だ:-)。

簡単なサンプルを作ってみた。cgi-binというディレクトリを作って,py2js というファイルを設置して,以下のソースを実行権限つきでjstest.pyとして設置。その後,一つ上のディレクトリに移ってPythonのインタラクティブモードから「import CGIHTTPServer;  CGIHTTPServer.test()」としたあと,「http://127.0.0.1:8000/cgi-bin/jstest.py」をブラウザで開く。フォームにPythonのコードを打ち込んでPostすると,JavaScriptに変換して実行してくれる。

#!/usr/local/bin/python

import cgi
from py2js import compilefile

html_body = """
<html>
  <body>
  <script type="text/javascript">
<!--
  %s
-->
  </script>
  <form method="POST" action="/cgi-bin/jstest.py">
    <textarea name="jscode" cols="40" rows="10">%s</textarea><br />
    <input type="submit" />
  </form>
  </body>
</html>"""

form=cgi.FieldStorage()
f=open('./tmp.js', 'w')
f.write(form.getvalue('jscode', ''))
f.close()
compilefile('./tmp.js', './tmpout.js')
jscode=open('./tmpout.js').read()

print "Content-type: text/html;charset=utf-8\n"
print html_body % (jscode, form.getvalue('jscode', ''))

Pythonのプログラムでは,range()のような組み込み関数をよく使うわけだけど,現状のpy2jsではdictとintしか実装されていない。JavaScript側でPythonの組み込み関数が使えるようになると,この手のモジュールはずっと便利になる。mochikitがPythonのグローパル関数を実装していたはずなので,持ってきたりすると幸せになれると思う。

Category(s)
python
The URL to Trackback this entry is:
http://coreblog.org/ats/converting-python-code-to-javascipt-code/tbping

Re:PythonのコードをJavaScriptにコンバートするpy2js

Posted by takano32 at 2008-03-12 13:39

お。おもしろいですねぇ。
Wikiみたいにみなが書き換え可能なプログラミングのスペースなんかが作れそうな気がしますね。
プレビューで実行結果を見て、サブミットするとWiki自体の挙動が変化したりw

Re:PythonのコードをJavaScriptにコンバートするpy2js

Posted by ats at 2008-03-14 19:59

>takano32
そういうインターフェースを公開するといろいろと困るかもしれませんが,開発用にそういう環境があると便利でしょうね:-)

Pylonsのインタラクティブデバッグみたいに,Pythonでコードを書くとJSに変換されて非同期で画面が書き換わったりすると,開発がしやすくなるかもしれません

http://wiki.pylonshq.com/pages/viewpage.action?pageId=11174193

Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
コメントスパム避けのための認証文字列です

Captcha Image

Pythonな求人
r = urlopen("http://www.webcore.co.jp/recruit")
About this blog
■Author
atsこと柴田淳です。Atsushiはガイジンにうまく発音して頂けないので,これからはJunというペンネームで行こうと思っていましたがあんまり使ってません。
Webcore株式会社 代表取締役
■TRIVIAL TECHNOLOGIES 2.0
トリビアル・テクノロジー 2.0,「トリテク 2.0」と呼んでください。
Blog(ブログ)サイトです。Plone上で動く,オープンソースのBlog Product - COREBlog2を使っています。
 
最近書いた本,Mook
みんなのPython Webアプリ編
Pythonの基礎から,Webアプリやフレームワークの仕組みまで,つまることなく一気に学べる書籍です。「みんなのPython」と一緒に読んでください:-)。
みんなのPython
Pythonの入門書です。基本的なことから分かりやすく解説するよう勤めました。Pythonをはじめたいと思っている人,JavaやC++,PerlやRubyを学ぼうと思って躓いてしまった人はぜひ読んで下さい。
 

Powered by Plone, the Open Source Content Management System