プロトタイプ作成ツールとしてのKawa

以前、SchemeScriptとKawaの記事を書いていたが、あの後ずっと使わずにいた。

理由は単純で、仕事の内容が前任者から引き継いだ既存のコードのちょとした修正とそのテストばっかりというためだった。

今度の開発でスクラッチからアプリを作る事になり、まったく新しい仕様を作成する事になった。GUI関係を中心に外部仕様の決定を担当する事になった。

GUIの画面を記述するために、今までMS Visioで作成した画面を仕様書につけていたが、今回、Kawaで作成した画面をキャプチャしたものを仕様書につける事にした。

Visioも悪くないツールだが、実際の画面で文字切れをおこさないかの確認ができなかったり、レイアウトの変更が結構面倒だったりするのが不満だった。Javaで作るので、Javaのコードを書いて確認すれば確実に確認できるが、画面1つで簡単に数百からキロステップまで行ってしまいそうだし、レイアウト変更はさらに面倒そうなので、躊躇してしまう。

KawaならJavaのクラスをSchemeスクリプトから呼び出せるので、画面の例を手軽に作成できるような気がして試してみた。以前の記事のサンプルコードだって、Javaでまともに書いていたら、数倍のステップ数になる。

試してみた結果、悪く見積もっても1/4、もしかしたら1/10ぐらいのステップ数で画面の例を作成できた。

ステップ数が少ない理由は、

  1. ちまちま、型宣言をしていない。
  2. GUIのコードは、繰り返し同じコードを書くことが多い。しかもループや関数を使う程と逆にコード量が増えてしまう程度の繰り返しが多い。こんな程度の繰り返しでも、Schemeのmapやfor-eachの関数を使えば短くなる。
  3. ダックタイピングでプログラミングできるので、同じ名前のメソッドを持っていれば継承関係のまったくないクラスのインスタンスを同一の関数で扱う事ができる。
なのかなと思う。なぜ関数プログラミングは重要かにあるような理由で短くなったとは断言できないなあ。関数の貼り合わせなんかは、気づかないうちにやっているのかもしれないけれど。

代入がないから短いだけじゃないのと、突っ込みをいれられそうなコードになっているかも。orz

このプロトタイプを製品に組み込んだら、Schemeプログラマのレベルでレベル7になれる?