2013年08月27日

Node.jsのためのDSL

Rubyのscaffoldみたいなものを、node.js用に作っています。と言ってもまだscaffoldを使いこなしていないので、どの程度までできるものなのかわかっていないのですが。

僕が作った「nodoca」はクラス図みたいなものからnodejs+mongodbアプリケーションを生成する物です。
クラス図みたいな物と言っているのは、こちらのツールはまだ開発途中で、クラス図にあるような「関連」すらないからです。
クラス図(みたいなの)からソースコードを生成します、毎回生成する必要のない共通の部分もあるので、それらはgithubにあげております。こちらを見ると、どんなソースコードが生成できるのか、見ることが出来ると思います。

nodocaはclooca上で提供しています。こちら
cloocaとは、図からソースコードを生成できる「ツール」を簡単に作ることができ、さらに共有することが出来る、プログラマのためのツールプラットフォームです。

scaffoldとの違いは、モデルをグラフィティカルに描けることです。ただまだクラス間の関連がないので、あんまりグラフィティカルである嬉しみがないのですが。。

実際にどのような図かといいますと、下のようなものです。
スクリーンショット 2013-08-27 15.36.54.png

この図から、下のような、ソースコードを生成できます。

スクリーンショット 2013-08-27 15.37.43.png


動かす手順

@githubから共通部分のソースコードをダウンロードします。
Acloocaのnodocaツールでプロジェクトを作り、クラス図を書きます。
Bsrcget.shのCLOOCAUSERPASSとCLOOCAPROJECTIDを設定します。
C$sh srcgen.sh を実行すると、クラス図から生成されたソースコードが、githubからダウンロードしたnodejsプロジェクトに上書きされます。
D$node app.js でアプリを実行します。

nodeやmongodb等はあらかじめインストールしていてください。

スクリーンショット 2013-08-28 8.41.24.png
スクリーンショット 2013-08-28 8.41.46.png
posted by Syuhei Hiya at 15:51| Comment(0) | TrackBack(0) | 日記

2013年08月16日

プログラミングの未来

プログラミング言語は抽象化していく。アセンブリ言語で、物を作るのがなぜ大変か、それはアイデアを実現するのに選択肢がありすぎ、道のりが長いからだ。高級言語でその選択肢は大幅に減る、だから作るのもはやくなる。プログラミングという抽象化作業が減るからだ。高級言語で汎用性を保った抽象化の道は限界になり、言語は多様化と特化の道を辿る。特化された言語はアイデアをそのまま表現できる。つまり直感的だ。
一つのソフトウェアを作るのに、複数の言語を使うかもしれない。ややこしく感じるかもしれないが、直感的だから大丈夫。
そうなれば、それらの連携の仕組みも必要だ。新しい言語と呼べるかもわからない、それらのための周辺ツールが必要だ。

cloocaはそれを目指す。
必ず未来のソフトウェア開発の基盤になる。
posted by Syuhei Hiya at 00:46| Comment(0) | TrackBack(0) | 日記

2013年08月15日

これが私には1番

この間、タワーデフェンスという種類のゲームを、作っていました。
迫ってくる、敵を倒すために、ユニットを配置するという戦略ゲームです。
僕が作っていたのは、敵の侵入経路は固定のものです。以下画像。
スクリーンショット 2013-08-15 20.04.45.png

その際に、ステージを作るのがめんどくさかったです。
最終的に15ステージ作ったのですが、ステージごとに設定ファイルみたいな物を作るようにしていて、ステージの構造とかを書くのですが、コードで書くとすごく大変でした。
かといって設定ファイルが独自だし、汎用マップエディタも使えないし。

そこで、cloocaを使ってみました。

スクリーンショット 2013-08-15 20.00.13.png

cloocaのシンプルなクラス図を改造して、ステージ情報を生成するようにしました。クラスの位置情報から、ステージの構造を生成しています。

すると以下のようなステージが生成されます。

スクリーンショット 2013-08-15 19.50.03.png

クラスの位置の微妙なずれは、ソースコード生成時に補正しています。
これで15ステージ作りました。

半分冗談ではありますが、コードで書くよりもだいぶ時間を短縮できました。
きっと他にもっといい方法があるのでしょう、でもいいのです、これが私には1番なのです。

追加

この例になっているアプリを公開しました。

Fruit Defense
posted by Syuhei Hiya at 20:06| Comment(0) | TrackBack(0) | 日記
Powered by さくらのブログ