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

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

ExcelやWordをPERLで操作する方法のメモ

2005-05-23 16:45:15 | JavaとWeb
 前に、ExcelをJavaから操作できるということで、プログラムサンプルを示しました。
 で、ここまで出来るんなら、部隊に流して大丈夫かなと思い、部隊のプロジェクトマネージャーやってる人に、紹介しました(意味通じなかったら、「えらい人に紹介した」とおもっていただければ、間違いない)

 そしたら、そのマネージャーの人が、「あ、やっぱJAVAでも、あるんだ!いままで、Perlでは、あるらしいって聞いてたけど。。。」
 といってました。

 Perlから、Excelが、操作できる。。。

 そっちも、興味しんしん。

 ということで、今回は、PerlからExcelの操作方法を調べたメモ。




PerlからExcelを操作するには、ちょっと調べたら、2通りの方法がありました。

1.Win32::OLEを使う
方法については、これらのサイトに説明がありました。
http://prettycat.s13.xrea.com/excel/excel.html
http://www.mars.dti.ne.jp/~jun-krb/OfficeWithPerl/index-excel.html

2.Spreadsheet::WriteExcel、Spreadsheet::ParseExcelを使う
方法については、これらのサイトに説明がありました。
http://www.drk7.jp/MT/archives/000565.html




PerlからWordについては、ここに使用例があります。
Microsoft Wordの文書を印刷するにはどうすればよいのでしょうか?
http://www.att.or.jp/perl/faq/perlwin32faq/perlwin32faq12j.html#print_word


ただし、「APACHE上でうまくいかなくなった」と、はてなに質問を出している人もいる




とはいえ、Javaで操作できるなら、結局、Javaでやると思うけど

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

コントローラーとモデルのテスト・プログラムの自動生成の可否とドキュメントの関係

2005-05-23 16:07:53 | 開発ネタ

(みかままさんのところから来た人へ、たぶん、ここの記事でなく、ここのことだと思います)。

 「テストとプログラム、どこが自動生成できるかどうかについて説明する」と、以前のブログで書いた気がします。でも、書いてませんよね。
 ってことで、それを書いておきます。

まず、今までの話から、MVCモデルで、CのコントローラーとMのモデルがあるように、資源アクセス(RDBとか)でも、コントローラー(CBS,セッションBeanなど)とモデル部分(CBM,エンティティBeanなど)があるということは、説明したということにします。

 なので、以下、コントローラーとモデル、それぞれ別々に、テストやプログラムの自動化とその方法について、ウィリアムのいたずらの独断と偏見を書きます。




■■ モデル部分について

・プログラムの自動化・・できない
 ここの部分の内容は、Excelの仕様書でくる場合、フリーフォーマットで、書いてきます。そんなもんは、自動的に作れません。

・プログラムの中身を空っぽにして、自動化・・可能ではある
 では、プログラムの中身は空っぽにして、クラスファイルを自動生成し、その中に、メソッド名、メソッドの引数、JavaDoc用コメントを(自動的に)作成することはできるかというと、それは可能。

 Excelの仕様書のドキュメントのどこかに、たいてい、クラス名と、そのクラスに属するメソッドと引数が書いてある。それをみて、作ればいい。

 ただし、それをやるかどうかは別(やってもらっても、あんまり、うれしくないかも)

・ドライバの自動生成-支援ツールなら自動化可能
 まず、上記のExcelの仕様書のドキュメント「だけ」では、自動的にドライバ作成はできない。理由は、呼び出すときの引数に、何の値を設定していいか、わからないから。

 ただし、逆に言えば、テスト実行時の引数一覧みたいのをExcelで作れば、それと、Excelのプログラム仕様書をもとに、ドライバの自動生成(JunitのTest部分の自動生成とかも含む)は可能。

 そして、このテスト実行時の引数一覧に相当するものが、「コントローラー」のところに出てくる、表でもある。なので、その表を作れば、自動生成可能の可能性も高い。

・モジュール呼び出しテスト仕様書の自動生成-支援ツールなら自動化可能
 上記の、「テスト実行時の引数一覧みたいの」があれば、仕様書は、作成可能。
 一般に、ドライバが自動生成可能な場合、呼び出しテスト仕様書も作成可能。
 なぜなら、
 ドライバが、自動生成可能=呼び出す引数&呼び出す関数を自動生成できる
 →テスト内容:(呼び出す引数)によって、(呼び出す関数)を呼び出し、
         適正な値が帰ってくるか確認する。
  エビデンス:ログ
 というふうに、テスト仕様書がつくれるので


・モジュール内部の単体テスト仕様書の自動生成-支援ツールなら自動化可能

 Excelファイルに、

 チェック大項目、条件、ログのチェック変数

と書き、チェック大項目は、フリーフォーマットで書いた、プログラム仕様書の大項目(1,2,3、・・・)、条件に、チェックするときの条件(引数の値など)、ログのチェック変数に、チェックしたい変数を記述する(2つ以上の変数でも可)とすると、そこから、自動的に単体テスト仕様っぽいものを作るのは可能。




■■ コントロール部分について

・プログラムの自動化・・場合によって可能
 ここの部分の内容は、Excelの仕様書でくる場合、フリーフォーマットなのだが、ふつう、表で書く。
ステータス1ステータス2ステータス3起動メソッド
A1YESメソッド1
A1NOメソッド2
A2YESメソッド21
A2NOメソッド22
B1YESメソッド211
B1NOメソッド212
B2YESメソッド221
B2NOメソッド222


みたいな表の場合。

 もちろん、このステータス1のところに条件(A=1だったらとか)が来て、値がYES,NOだけでも、かまわない。そうすれば、ディシジョンテーブルになる。
 また、ステータス1のみ、つまり、あるステータスなら、何を動かすというのでもかまわない。

 この場合、このテーブルと、雛形コントローラーから、自動化が可能。
 どのように自動化するかについては、いくつかのパターンがあり、長くなるので、今回は省略。別な機会に書きます。

・プログラムの中身を空っぽにして、自動化・・可能ではある
 プログラムの中身は空っぽにして、クラスファイルを自動生成し、その中に、メソッド名、メソッドの引数、JavaDoc用コメントを(自動的に)作成することもできるけど、中身が自動化できる場合、普通一緒にやりますよね。

・ドライバの自動生成-可能なことが多いが。。
 Excelの仕様書のドキュメントで、呼び出し方法がわかることが多い。コントローラーの引数は、フレームワークのドキュメントに書いてあることも多い。
 なので、そこから自動化できることも多い。

 ある値をセットした場合、なにを起動しているかを見る場合は、上記の表を元に作成する。

・モジュール呼び出しテスト仕様書の自動生成-可能なことが多い
 モジュールのところで説明したとおり。
 ドライバが出来るなら、できる。


・モジュール内部の単体テスト仕様書の自動生成-自動化可能な可能性大

 上記の表から、ステータス1が何、ステータス2が何、ステータス3が何のとき、何々が起動されることを確認する。エビデンス=ログとして、生成する。




 こんな感じだと思います。ちなみに、VIEWについて

・プログラムの内部の作成に関しては、
  HTMLのエディタを使うとか、ツールが出来ている。

・テスト仕様の支援ツールに関しては
  今、考え中。近々ブログで発表予定

です。


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