jFD開発したりしなかったり日誌
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だけで手一杯(さらにこの後書かないといけないのが二つ控えている)なので
現実的に難しいです。
どこかの会社で僕を雇って書かせてみませんか?
(ないだろうなあ、そんな会社・・・)
- http://secure.ddo.jp/~kaku/tdiary/ ×174
- http://secure.ddo.jp/~kaku/tdiary/200410.html ×110
- http://secure.ddo.jp/~kaku/tdiary/20041004.html ×20
- http://d.hatena.ne.jp/thata/ ×7
- http://d.hatena.ne.jp/thata/20041004 ×5
- http://www.csus4.net/WR/d/ ×4
- http://a.hatena.ne.jp/include?http://www.starseed.... ×3
- http://d.hatena.ne.jp/YourHouse/20041003 ×3
- http://a.hatena.ne.jp/taedium/ ×2
- http://d.hatena.ne.jp/dot/ ×2
- https://www.google.co.jp/ ×2
- http://wiki.cs.uiuc.edu/CampSmalltalk/VERSION/33/G... ×2
- http://d.hatena.ne.jp/zz_sexy/ ×1
- http://d.hatena.ne.jp/thata/searchdiary?word=java&... ×1
- http://emergent.brynmawr.edu/emergent/ACM_20SIGCSE... ×1
- http://r.hatena.ne.jp/feed/http://www.starseed.ne.... ×1
- http://a.hatena.ne.jp/zz_sexy/ ×1
- http://counter.hatena.ne.jp/thata/log?cid=1 ×1
- http://i-know.jp/SongForYou/ ×1
- http://mixi.jp/show_friend.pl?id=19358 ×1
- http://www.starseed.ne.jp/ ×1
- http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?q... ×1
- http://d.hatena.ne.jp/YourHouse/ ×1
- http://unyou.members.ne.jp/tdiary/update.rb ×1
- http://press.eek.jp/result/log/log エクセル ×1
- http://a.hatena.ne.jp/nekop/ ×1
- http://b.hatena.ne.jp/t/groovy?sort=eid ×1
- http://www.bloglines.com/myblogs_display?folder=62... ×1
- http://74.125.153.132/search?q=cache:VmzD9cPhGgUJ:... ×1
- http://d.hatena.ne.jp/thata/edit?date=20050715 ×1
- http://websearch.rakuten.co.jp/?tool_id=1&rid=2000... ×1
- http://a.hatena.ne.jp/ka2hiro/simple ×1
- 初期ノ−ド ×93 / 開発したりしなかったり ×39 / winny初期ノ−ド ×25 / winny初期ノ−ド ×24 / winny 初期ノ−ド ×21 / Winny 初期ノ−ド ×20 / winny 初期ノ−ド ×17 / winny初期ノ-ド ×16 / jfd ×16 / キーワード不明 ×13 / winny 初期ノ-ド ×9 / jFD ×7 / 初期ノ-ド ×7 / Winny初期ノ−ド ×6 / 秋月巌 ×6 / JFD ×6 / 金蹴り動画 ×5 / 初期ノ ×4 / Winny ?????m?[?h ×4 / jFD2 JAVA ×4 / アクティビティ図とフローチャート ×3 / 金蹴り ×3 / winny biglobe ×3 / uml java 趣味 J2SE5. ×3 / xml webアプリ 実用例 ×3 / jfd開発 ×3 / WINNY初期ノ-ド ×3 / winny ノ-ド ×3 / groovy java ×3 / winny ?m?[?h ×3 / jfd 開発 日誌 ×2 / winny初期ノ ド ×2 / a.hatena.ne.jp pnuts ×2 / java Groovy swing xml ×2 / winny ノ−ド ×2 / groovy Java Webアプリ ×2 / jfdファイル ×2 / jfd開発日誌 ×2 / jfd ファイル ×2 / winny ?????m?[?h ×2 / jfd java ×2 / jFD java ×2 / Groovy Java ×2 / 金蹴り 漫画 ×1 / Swing 画面構成 XML ×1 / java jfd ×1 / groovy 速度 java ×1 / /http\:\/\//i 記述 ×1 / Winny ?m?[?h???? ×1 / groovyでswing ×1 / JAVAで出来ること 画面設計 ×1 / java クライアントアプリ 2006 ×1 / 秋月 巌 ×1 / イケメン 裸 ×1 / groovy Java ×1 / 設定ファイル Groovy ×1 / groovy swing java ×1 / hl=ja java ×1 / リッチクライアント ruby ×1 / 初期ノ−ド設定 ×1 / Winny初期ノ-ド ×1 / 初期ノ−ド winny ×1 / UML設計 webアプリ ×1 / pnuts java ×1 / nakednews "動画" ×1 / "secure.ddo.jp/" ×1 / "1画面1クラス" ×1 / JavaからGroovy ×1 / jFD Java ×1 / エクセル ファイルに署名 ×1 / WINNY 初期 ノ−ド ×1 / jFD2 スクリプト ×1 / JFD java ×1 / Winny初期ノ−ド ×1 / java jFD ×1 / ギルガメッシュナイト ×1 / JFD JAVA ×1 / winny 初期ノ‐ド ×1 / アクティビティー図とフローチャート ×1 / winny?_?E?????[?h ×1 / swing リッチクライアント フレームワーク ×1 / "Webアプリ" フレームワーク 比較 ×1 / UML jfd ×1 / アクティビティ図 エクセル ×1 / WINNY 初期ノ-ド ×1 / イケメン ヌード ×1 / Winny ?m?[?h ×1 / groovy 問題点 ×1 / JFC Swing フレームワーク ×1 / 繝「繝・↑縺・lr=lang_ja ×1 / java swing エクセル 起動 ×1 / Biglobe Winny 速度 ×1 / pnuts blog ×1 / J2se5 JFrame ×1 / Winny ノード ×1 / google btng java ×1 / 画面 xml swing ×1 / pnuts ×1 / pnuts xml ×1 / yourhouseの日記 ×1
身近なプロジェクトでは実用例をまだ見たことはありませんが、1.4から標準APIでSWINGアプリケーションの画面構成をXMLテキストで表現することが可能です。
see: http://java.sun.com/products/jfc/tsc/articles/persistence/
いわおさん、はじめまして。雑誌でお見かけする秋月巌さんでしょうか?
その技術はすっかり存在を忘れていました。
活用しているプロジェクトを見てみたいです。
どちらかと言うとシリアライゼーションに近く、記述の手間がソースを書くのとあまり変らないため、人の手で記述するならもっと大胆な要約が必要な気がします。
静的型付けの言語がコンパイラでチェックしていることは xUnitで肩代わりできちゃいます
299行までならorz
こんにちは。日記いつも楽しく読ませてもらってます。
私は秋月さんとは別の人で、たぶん世間ではほとんど知られていないです。仕事/趣味の参考にしたくてjavaアプリ探していてこのページの存在を知りました。
thataさん、それもそうですね。
ただ、規模が大きくなる程テストケースも大きくなり、そのテスト作成、実行にかかる労力が静的型付け言語と変らなくなる、もしくは上回るのではないか、というイメージがあります。
あくまで僕のイメージなので間違ってたらごめんなさい、なんですが。
あと、Groovyに関して言えばエラーメッセージの不親切さがずば抜けてるので、長くなればなるほど手におえなくなる、というのは実感しています。
I氏、黙殺してもえーですか?ちゅーか299行書いてみやがってください。
いわおさん、極々プライベートな知人しか見てないと思って好き放題書いてたんでドキドキもんです。
こんなヘッポコなページですが、今後もよろしくお願いします。