JavaScripthon - Pythonで書いてES6のコードを生成
今のところ、Webブラウザで適切に動作が保証されているプログラミング言語はJavaScriptしかありません。そのため、Webアプリケーションを開発する上でJavaScriptの習得は必須なのですが、なるべくなら書きたくないという方も多いです。
もしあなたがPythonプログラマーであれば使ってみたいのがJavaScripthonです。PythonコードからECMAScript2016︵ES6︶へ変換してくれるソフトウェアです。
ソースマップに対応しているので、Pythonのコード上でデバッグができます。
ブレークポイントも使えます。
ES6に対応しているとあって、生成されるコードもモダンなJavaScriptとなっています。可読性も高く、いざという時にのJavaScriptコードもデバッグしやすいのではないでしょうか。
JavaScripthonはPython製、GPL v3のオープンソース・ソフトウェアです。
azazel75/metapensiero.pj: Javascript for refined palates: a Python 3 to ES6 Javascript translator
JavaScripthonの使い方
コード例です。普通にPythonのコードに見えます。# -*- coding: utf-8 -*-
# :Project: metapensiero.pj
# :Author: Andrew Schaaf <andrew @andrewschaaf.com>
# :License: See LICENSE file
#
from mylib.color import Color
from mylib.tweening import Tween, easeInOut
from mylib.random import randint
CHANGE_EVERY = 1000
TRANSITION_DURATION = 250
class Controller:
def __init__(self):
self._newColor = self._oldColor = Color(255, 255, 255)
self._changeColor()
def _changeColor(self):
self._oldColor = self._newColor
self._newColor = Color(
randint(0, 255),
randint(0, 255),
randint(0, 255))
def callback(t):
transient_color = self._oldColor._interpolatedToward(self._newColor, t)
document.body.style.background = transient_color ._webString()
def onComplete(t):
document.title = self._newColor._webString()
Tween({
'_duration': TRANSITION_DURATION,
'_callback': callback,
'_easing': easeInOut,
'_onComplete': onComplete,
})
setTimeout(self._changeColor.bind(self), CHANGE_EVERY)
def main():
print("Hello World")
Controller()
window.colorflash = {
'main': main,
}
これを実行したのが次のコードです。
![http://images.moongift.jp/2016/05/open-source-javascripthon-3.740f132be39f9f3d3f51f2d33b70629e.gif](http://images.moongift.jp/2016/05/open-source-javascripthon-3.740f132be39f9f3d3f51f2d33b70629e.gif)
![http://images.moongift.jp/2016/05/open-source-javascripthon-2.ae30935c6366a8ffae6442bf5b2c75d2.png](http://images.moongift.jp/2016/05/open-source-javascripthon-2_thumb.ae30935c6366a8ffae6442bf5b2c75d2.png)
![http://images.moongift.jp/2016/05/open-source-javascripthon-1.f65d3cfce1681285784267f4bc5e9ffb.png](http://images.moongift.jp/2016/05/open-source-javascripthon-1_thumb.f65d3cfce1681285784267f4bc5e9ffb.png)