ざる魂

真似ぶ魂、学ぶの本質。知られざる我が魂

ubuntuでxmonadして、emacsでProcessingしてます

最近Processingをいじり始めました。

/img/processing/xmonad.png
Ubuntu上のXmonadでemacs使ってProcessingしてるところ

上の画像は、Ubuntu上のXmonadでemacs使ってProcessingしてるところです。非常に快適です。

ちょろっと作った「テストプログラム」。

Javascriptモードで出力しました。こんなのが簡単に作れます。

日経LinuxでProcessingの連載をしていたので興味があったのですが、きちんと読んでいませんでした(今読みかえしているところです)。 最大のきっかけとなったのは下記の本を手にしたからです。

この本はゲームプログラミングはおろかプログラミングそのものが初めてという人のための本です。 事実、本の帯には「猫でも13歳でもわかる」みたいなことが書いてあります(笑)。 実際本の内容は懇切丁寧に書かれており、猫は無理でも中学生ならゲームが作れそうです。

初心者向けの本とはいえその内容は広範囲で、基本の2Dプログラミング、アイデアの出しかた、 データの作成、Andoroidアプリの公開方法、3Dプログラミング、そしてなんとキネクトプログラミングまでやってます。 自分はプログラミング初心者ではないですが、Processingをざっと勉強したいという経験者にもうってつけだと思います。

特にいいなと思ったのは、プログラマの最大の敵であるゲーム素材のつくり方まで解説してある点です。 プログラマは大抵絵心がなかったりするので、絵や音の素材を用意するのが苦手だと思うのですが、 この本はデータ作成にも多くのページを割いて解説しています。 また、本は分厚いですがそれぞれの章の独立生が割と高いので興味のあるところから読むってのもありです。

processing のおすすめポイント

processingは実はjavaである。

文法はほとんどJavaなので実はしっかりした言語体系です。自分は最初、Processingという独自のスクリプト言語があるものと勘ちがいしていました。 でも実は、Processingという独自の言語があるわけではなく、Java言語をProcessingというIDEを通して簡単に始められるというものでした。 実際Processingでは普通にArrayListが使えますしジェネリクスも使えます。

Processingをイメージで簡単に説明すると、「Processingという巨大なクラスがあって、 このメソッドがグローバルな関数に見立てたAPIとなっていて、PDEという独自IDEによってあたかもグローバル関数や変数を簡単に定義できるようになっている。 PDEのおかげで、javaのパスとかメインクラスの作成とか面倒なことを考えずすぐに再生ボタンで実行できる環境」ってことになります (間違ってたらすみません)。 なのでJavaを実際に始める前にProcessingから入るというのは非常に有効な手段かと思います。

インストールが超簡単。

ダウンロードして展開するだけです。Java実行環境は同梱されてるので別途インストールする必要がありません。

複数のプラットホームに対応している。

作ったプログラムは、Linux, Mac, Windows向けにエクスポートできます。 出力されたものにJava実行環境も含まれているので配布先に別途Javaをインストールしてもらう必要もありません。

HTMLモード、androidモードがある。

昔のver1.5のころは、エクスポート方法としてアプレットがあったのですが、これはjavascriptに置きかわりました。 JavaAppletはいろいろ問題があるのでこの変更は嬉しいですね。 AndroidのエクスポートもSDKを別途ダウンロードする必要はあるものの非常に簡単にAndroidでプログラムを動かせます。

結局、サポートプラットホームは、Linux、Mac、Windwos、Android、そしてJavascriptになります (ただし最近のゲームライブラリはどれもこの辺サポートしてるのでアピールポイントにはなりにくくなってますね)。 問題は各モードでどこまで差異なく実行できるかですが、この辺はまだ検証できてません。 でも活動が活発なので期待です。

emacsでprocessing

emacsからもProcessingを使えます。下記を参考にしました。

MELPAに登録されているのでインスールも簡単です。 C-c C-p C-r で実行できますし、 エラーがあれば M-g M-n で簡単ジャンプできます。あとは javascript モードも対応してくれるといいな。

xmonadでprocessing

最後にXmonadでProcessingする方法を書いておきます。

Xmonad上では、JavaのSwingがまともに動かないみたいなので、 Processingするにはxmonadの設定ファイルを修正する必要があります。

~/.xmonad/xmonad.hs ファイルのlogHookを下記のように XMonad.Hooks.ICCCMFocus をインポートして、 logHook の右辺を takeTopFocus に置き換えます。

import XMonad.Hooks.ICCCMFocus
 :
main = do
 :
xmonad $ defaultConfig 
 :
  , logHook = takeTopFocus
 :

意味はわかってません。。。下記のURLを参考にしました。