ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

CSVに落としてしまえば、Javaでも自動生成プログラムを作れることはあまり知られていない。

2005-10-25 17:02:29 | 開発ネタ

 さっきの話のつづき。
 しかし、タブ区切りで、仕様書を書き出し(CSVと書いたのは、タイトル50字の制約のため、タブ区切りのほうがいい)ちゃえば、あと自動生成プログラム自体は、JavaでもC++でもOKです。
 ということで、

・仕様書をタブ区切りに落とす
・雛形を作成する。

 ということができれば、あとはORマッピングだろうが、テストデータ作成だろうが、スタブ作成、ドライバ作成だろうが(雛形さえかければ)自由にプログラムを自動生成できます。
(CSVでなくても、XMLでもできるが、そうしないのは、最後に理由を書く)





 で、Javaでそれをつくるとすると、昨日のブログで

■■ 1.まず雛形を書きます
 これは、おなじ。ただし、タグについては、CELLタグ、GYOタグなど、Excelの場合と同じようにする。

■■ 2.データを作成します。
Excelに書いた場合、それをタブ区切りファイルに書き出します。
 XMLの場合、XSLTを使ったりして、タブ区切りファイルに書き出します。

■■ 3.プログラムを作成する
 これは、Excel VBAでなくても、JavaでもOKです。
 はじめに、データを読んでしまいます。
 これは、ファイル全体を読んできたら、
 まず、改行(\n)でsplitします。
  そのsplitされた1行1行を、タブ(\t)でsplitすると、セルがでてきます。
  解釈の方法などは、昨日と同じです。




 つーことで、タブ区切りファイルにしてしまえば、Javaで、全部の世界を構築できます(C++でも)

 ただし、前の例で、extendsのところ、H2のセルで、文字連結していたように、仕様書の言葉そのままを、入れるのでなければ、その例のようにワークエリアを作って、そこで文字列操作(例の場合はextendsという言葉を足してしている)を行い、その内容を、CSVファイルに書き出します。
 こうしないと、Javaでこの部分を操作しなくてはならなくなり、汎用性にかけます。




 で、XMLにしなかった理由は、XMLだと、DOMの操作部分で(\nの文字が1つのノードになってしまったりして)急に難易度が上がるためです。

 XMLを使わない、今回の内容なら、新人研修でもできるでしょ!




 昨日のブログ、見てる人が、それほど多くなかったので(212ip741位)、とりあえず、Accessでアジャイルの前に、自動生成ネタを披露してみました。Accessでアジャイルは、気が向いたら書くかも。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

状態遷移図がある場合、アクティビティ図を見る前に、みたほうがわかりやすそうよ。

2005-10-25 14:58:28 | 開発ネタ

 今、あるドキュメントをアクティビティ図に起こしていて、気づいたこと。
 状態遷移があったら、なにはなくても、状態遷移をみよう!

 アクティビティが、そりゃー、20、30くらいなら、おえるけど、

 それ以上、50以上ある場合、
・まず、遷移を先に見て、
・その遷移の、あるステータスにおける、
     アクティビティは何?
     それは誰がやるの?

ってみたほうが、わかりやすい。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Excel仕様書だと、O/Rマッピングもテストデータも同じ自動生成プログラムで作成可は知られてるが

2005-10-25 13:57:20 | 開発ネタ

 昨日の自動生成プログラムの話の続きで、Excelで仕様書を作成した場合、雛形さえ変えれば、O/Rマッピングだろうがテストデータだろうが、ドライバだろうが、同じ自動生成プログラム(VBA)で作成可能ってことは、よく知られていると思います。

 このため、自動生成するときは、Excelの仕様書にしてね!という形になってますが。。。

 今日は、その話。




 昨日の自動生成プログラムの話で、
 「雛形を作成する」と書きましたが、その雛形のタグを、こんな風にしちゃいます
 (昨日のブログと見比べると、差がわかります。基本的に同じソース)

<cell pos=B3 /> class <cell pos = D2 /> <cell pos = H2 /> <cell pos = H3 />
<cell pos = H4 />
{
<for>
/*
* <gyo strpos=A10><p>
* <gyo strpos=D10>
* @param val 処理に関する引数のすべてがセットされている
* @return <gyo strpos=E10>
*
*/
<gyo strpos=C10 /> <gyo strpos=B10>(HashMap val)
{
/*
    ここに、プログラムをかいてね!
*/
return NULL;
}
</for>
}

このとき、データは、こんなかんじ


 このようにすると、
 cellタグは、 POSで指定されたセルの値を読み込み
 gyoタグは、strposではじめられたところを1行目として、データ終わりまで、1行づつ書き出す

とすれば、昨日示した自動生成プログラム1本だけで、

あとは雛形だけ作れば、ソースも仕様書も、てきとーに変えると、いろんなものがつくれる

テーブルの仕様書から、DBアクセスメソッド(SQL生成部分)を書き出すとか
→このときは、SQL生成部分のアクセスするクラスの雛形を書く

テーブルの仕様書から、テストデータ生成のSQLを書き出すとか
→このときは、テストデータのSQLの雛形を書く

ドライバやメソッドの自動生成、値の置き換えその他いろいろできる。
 もし、ソースを変えたければ、雛形を変えればいい、
 仕様書が変わったときも、雛形のタグの値を修正するだけ。





 実際には、2段に1つのことが書いてある場合の、行飛ばしとか、行方向でなく、列方向に伸びている場合とか、条件によって、書き出す内容を変えるとか、値でなく、ファイル名が書かれてあって、ファイルの中身を読み込んで書き出すとか、いろいろあるものの、基本的なプログラムは、これっす。

 で、実際に使う場合は、このエンジン部分は、コピーして、使いやすいように(いろんなことを考えなくても自動生成できるように)プロジェクトごとにカスタマイズする形になる。




 なので、Excelの仕様書だと、あとは雛形を入れ替えるだけで便利、O/Rマッピングだの、テストツールだのといって、いろんなツールの使い方を覚えたり、修正できないくらい読めないソースを書くこともない。



 と、いうのは、よく知られているが。。。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする