トップ «前の日記(2004-09-30) 最新 次の日記(2004-10-04)» 編集

jFD開発したりしなかったり日誌

2004|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|
2004年
10月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

2004-10-03 [長年日記]

_ ぼやき

UMLを作った設計作業がもうすぐ終わるのだが、一言いいたい。

オブジェクト指向じゃないソースからUMLは作れません。

アクティビティ図とフローチャートは似てるけど別物。

ベタベタWebアプリ(1画面1クラスみたいなの)のクラス図って

意味あるのかなあ。

_ jFD2

クライアントから送られてきた二つのエクセルファイルが同じっぽいけど

確信が持てないので、ファイルを比較するスクリプトを書いてみた。

20行。

お手軽。

実行してみたらやっぱり同じファイルだった。

_ Groovyを使ってやりたいこと

dotさんのblogでGroovyの利用方法について書かれていたので

ちょっと僕も書き込んだのだけれど、スペースが十分じゃなく

説明しきれそうになかったんでこちらに。

_ 以前某社で画面のモデルとビューを全てXMLで定義できる

Swingフレームワークというのを書いた。

これを設計していたときに気がついたのだが、プレーンテキストの

設定ファイルのみで画面が作れるということは、

ランタイム部分をクライアントに持たせれば設定ファイルは

Webサーバーにでも置いて、クライアントには設定ファイルの

URLでも渡してやればよく、つまりWebアプリ的に使える

クライアントアプリが書けるのではないだろうか。

実際にはストップがかかり(事例が無いので実行時のXML使用を禁止された。怒)

実現不可能になったが、

その後も構想だけは進めていた。

当時の実装では振る舞いだけはJavaコードだったので、全面的にWebサーバーに

置くのは難しかった。

振る舞いもXMLで記述する、というのも考えたのだが、

過去にもXMLで記述するプログラミング言語は見たことがあるが、

はっきり言っちゃうがあれは読みづらいし書きたい代物でもない。

XSLTなんかがそうだけど、記述が冗長で、無理矢理感が強い。

そこで振る舞いをGroovyにしてしまえばそれらが問題にならなくなり、

リッチクライアントを全てテキストファイルで記述できるんじゃないかと

考えている。

_ 僕の感覚だが、そのフレームワークを使って画面の振る舞い以外を作成するのに

必要な労力は、通常のJavaコードで書くのと比べて3分の1くらいだった。

Swingの知識が不要だったし、良い意味で自由度が抑えられていて、

「こういう画面が作りたい」という要求に対する回答が一つしかあり得ず、

実装者が無駄に悩むことも無い。

これで振る舞いの記述にGroovyを使えばGroovy自体の記述性の高さも加わって、

さらに効率の高いフレームワークになるのではないだろうか。

_ ただし、Groovyには問題点が幾つか。

_ ※のろい。

これはそんなには問題にならないと思う。

スクリプトから生成されたクラスをキャッシュする等の工夫が

確実に必要になるが、それはフレームワークの機能にすればよいし、

どうしても速度が必要な場合はJavaクラスで記述するって手もある。

あと現状で全く最適化されてないので後で高速化されるということに期待。

_ ※セキュリティ

今jFD2が同じ問題を抱えているのだが、GroovyはJavaで出来ることが

全て出来るので、改変したスクリプトで不正な操作が出来てしまう。

スクリプトファイルに署名するなどの仕組みが必要な気がする。

_ ※適用出来る部分を見誤ると、ものすごいスパゲッティが出来上がる。

Groovyを使って300行以上のコードを書くべきじゃない思う(個人的には100行)。

文法的にJavaと比べてGroovyが優れているのは、Javaが大規模ソフトウェアに

対応するために組み込んだ面倒な手続をいい加減に省いて小規模コードを

書くのを簡単にしてくれていることだ。

ある程度以上のソースになると、IDEの手助けは期待できないし、

Javaだとコンパイラが弾いてくれるバグが実行するまでわからなくなるんで

かえって開発効率が落ちる。

Groovyはあくまでグルー(糊)であって、基盤はJavaで記述するべきだろう。

そのためにもフレームワークがきちんと作りこまれていないと、

素のJavaで書くよりも悲惨なことになる。

_ ちなみに、このフレームワークはすごく書きたいんですが、

今はjFD2だけで手一杯(さらにこの後書かないといけないのが二つ控えている)なので

現実的に難しいです。

どこかの会社で僕を雇って書かせてみませんか?

(ないだろうなあ、そんな会社・・・)

本日のツッコミ(全8件) [ツッコミを入れる]
_ いわお (2004-10-04 06:34)

身近なプロジェクトでは実用例をまだ見たことはありませんが、1.4から標準APIでSWINGアプリケーションの画面構成をXMLテキストで表現することが可能です。
see: http://java.sun.com/products/jfc/tsc/articles/persistence/

_ Shunji (2004-10-04 15:37)

いわおさん、はじめまして。雑誌でお見かけする秋月巌さんでしょうか?
その技術はすっかり存在を忘れていました。
活用しているプロジェクトを見てみたいです。
どちらかと言うとシリアライゼーションに近く、記述の手間がソースを書くのとあまり変らないため、人の手で記述するならもっと大胆な要約が必要な気がします。

_ thata (2004-10-04 15:37)

静的型付けの言語がコンパイラでチェックしていることは xUnitで肩代わりできちゃいます

_ I氏 (2004-10-04 17:11)

299行までならorz

_ いわお (2004-10-04 19:45)

こんにちは。日記いつも楽しく読ませてもらってます。
私は秋月さんとは別の人で、たぶん世間ではほとんど知られていないです。仕事/趣味の参考にしたくてjavaアプリ探していてこのページの存在を知りました。

_ Shunji (2004-10-04 20:18)

thataさん、それもそうですね。
ただ、規模が大きくなる程テストケースも大きくなり、そのテスト作成、実行にかかる労力が静的型付け言語と変らなくなる、もしくは上回るのではないか、というイメージがあります。
あくまで僕のイメージなので間違ってたらごめんなさい、なんですが。
あと、Groovyに関して言えばエラーメッセージの不親切さがずば抜けてるので、長くなればなるほど手におえなくなる、というのは実感しています。

_ Shunji (2004-10-04 20:19)

I氏、黙殺してもえーですか?ちゅーか299行書いてみやがってください。

_ Shunji (2004-10-04 21:02)

いわおさん、極々プライベートな知人しか見てないと思って好き放題書いてたんでドキドキもんです。
こんなヘッポコなページですが、今後もよろしくお願いします。

本日のリンク元
その他のリンク元
検索