ProcessingでPythonを使ったライブコーディングを実現する

年末の休みで気持ちに大分ゆとりが出てきましたので、今日は大技です。

ProcessingPython環境を整備していたら出来上がった副産物を紹介したいと思います。

Python Modeについて

ProcessingのIDEには、Pythonを使ってスケッチを書けるPython Modeがあります。導入方法は以前の記事を参考にしていただくとして、このPython Modeを本格的に使おうとすると以下のような問題に直面します。

  • Processing IDEPythonコードが書きにくい
  • コードを編集するたびに再実行するのが手間

せっかくのPythonですので、その柔軟さを生かして解決してみます。

Pythonコードを外部のエディタから編集する

一つ目の問題点は、Processing IDEだとPythonのコードが書きにくいことです。

外部のエディタからコード(pydeファイル)を編集したいところなのですが、拡張子.pydeをPythonとして認識してくれなかったり、Processing IDE側がファイル更新に同期してくれなかったりと使い勝手が今ひとつです。

そこで、pydeファイルへの記述は以下の2行だけにして、メインの処理は同じフォルダのmain.pyに記述するようにします。

pydeファイル:main.pyを実行するだけ)

def setup(): pass
execfile('main.py')

main.py:(一例。任意のPythonスケッチを記述)

def setup():
    size(400, 300)

def draw():
    background(0)
    ellipse(200, 150, 100, 100)

こうすることで、外部のエディタでmain.pyを直接編集してスケッチを作成できます。

ちなみに、processing.pyというコマンドラインからPythonスケッチを直接実行するツールもあるのですが、こちらはこちらで使い勝手が悪かったり毎回起動に時間がかかったりと今一歩なため、あまりおすすめ出来ません。

Pythonコード編集時にスケッチを自動更新する

二つ目の問題点は、コードを編集した際に毎回Processing IDEでスケッチを再実行する必要があることです。

そこで、pydeファイルで同じフォルダのすべてのファイルを監視して、更新時にPythonコードを自動で再実行するようにします。

pydeファイル:(同じフォルダのファイルを監視してスケッチを自動更新する)

(右下のview rawを押すとコードがpydeファイルにコピーしやすくなります)

スケッチ本体は前の例と同様にmain.pyに記述します。なお、sizeframeCount等、自動更新時にうまくリセットされない要素が一部ありますのでご注意ください。

終わりに

これでProcessingのPython Modeで気軽にライブコーディングが出来るようになりました。勉強会の発表などで活用してもらえるとうれしいです。