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

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

プログラムやテストデータを自動生成する方法 その1 概要

2007-05-06 23:35:56 | 開発ネタ

 以前から書くといっていた、「プログラムやテストデータを自動生成する方法」についてのシリーズをはじめたいと思います。

 雛形ソースを作成し、Excelの仕様書を用意すると、プログラムのソースやテストデータを生成する方法なのですが、汎用的にこれを行う方法を示します。

 今回は概要です。




■概要-システム構成

 つまり、このシステムは、以下のような図で表せます。
             *――――――*
    雛形   ―――>|Excelマクロ | ―――>  自動生成されたソース
             *――――――*
               ↑
               |
               |
           仕様書(Excelのシート)




(1)雛形ファイルを用意しておきます。
   この、雛形は、仕様書の値が入るところに、タグみたいなのが入っています。

(2)仕様書を用意しておきます
   Excelで用意しておきます、
   べつにXMLやCSVでも、それをExcelで読み込めばいいんですけどね。。

(3)雛形ファイルと仕様書から、ソースファイルを書き出すExcelマクロプログラム
   を実行します。
   これは、あらかじめ作ってあって、そのプログラムを実行します。

(4)そーすると、ソースファイルが出来ます。

1つの雛形に対して、いくつかの仕様書があって、いくつかのソースファイルが出来るケース、
雛形がいくつもあって、仕様書がひとつで、ソースがいくつも。。
どちらのケースもありますが

ソースファイル1つに対してみると、雛形1こ、仕様書1個のほうが、作りやすいです。
複数の仕様書から1つのソースを作りたい場合もありますが、その場合は、作業用シートを作成し、作業用シートに、複数の仕様書のデータを書くようにして、その作業用シート1つにたいして、ソース1つとしたほうが(つまり、ソースファイル1つに対してみると、雛形1こ、仕様書1個のカタチのほうが)やりやすいです。




■例-BREWのソースを出す

 例として、BREWのソースを出すものを公開しています。
 ここ http://www.geocities.co.jp/xmldtp/bw_makebrew.htm
の下のほうに、

ダウンロード:
    makebrew.lzhのありかは、ここ


とあります。そこの「ここ」をクリックすると、ダウンロードできます

makebrew.lzhというファイルです。

このなかで、app_c.txtなどと書いてあるのが、雛形ファイル、
仕様書.xlsの中にある「第一画面」などのシートが仕様書のシートで、
ドキュメント作成のマクロがExcelマクロプログラムで、
それによって生成されるソースがソースファイルとなります

が、これは、BREW用になっているため、汎用のものにはなっていません。




ということで、次回は、まず、これを、汎用にする方法を示してみたいとおもいます。



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

ソフトハウスも、高速バス会社と同じ運命をたどるかも?

2007-05-06 20:48:58 | Weblog

ちょっとまえになるけど、NHKスペシャル
高速ツアーバス 格安競争の裏で
http://www.nhk.or.jp/special/onair/070430.html


というので、高速バス会社の悲哀をやっていた。
ある高速バス会社の話なのだが、以下のような構図になっているそうだ

旅 行 会 社
 |    | 
 |   下請け旅行会社
 |      |
バス会社  バス会社
(直系)   (孫うけ)




つまり、ある旅行会社の下に直系のバス会社と、孫うけのバス会社がある。
この旅行会社、格安で、おおあたり!
孫請けのバス会社も、大忙しなのだが。。。儲からない
理由は「格安」だから。。請ける値段も格安なのだ。

ドライバーの給料も、以前は年収600万が、
今歩合制で、32万くらい(12ヶ月でも400万いかないってことだよね)

で、その後。。。
直系バス会社は、韓国のバスを購入するなどして、更なるコストダウン
さらに安全性を考えて。。。
下請け会社を切った。。。

ってことは。。孫請け会社は(>_<!)
とーぜん、仕事は来ない。。。
ここで、注意しておきたいのは。。。ドライバーの給料は、歩合制ってことだ。
すごい忙しくて32万、それが、パタッと仕事が減ったら。。。




 これって、対岸の火事なんだろうか?

 ソフト業界も、いま複雑な構造を呈していて、
 かつ仕事があるから、そーいう形でも回っている。
 今後、金融関係の仕事が増えそうだという業界のうわさがあるが。。。

 プログラムの自動生成など、生産性が上がっている上に、オフシェアの話もある。
 さらに、WebAPIで実現するとなると、それに対する教育をすべての人にしていたら、
 たいへんだ。。(利益上がったりだ)。。

 ってなると。。直系をのこして。。

 孫請けソフトハウスがきられるという可能性はないだろうか?
 バブル崩壊したときのように、パタッとある日仕事がなくなると。。。

 あのときは、ちょうどオフコンCOBOL・PL/Iから、オープンシステムへの流れもあり、
 その後、COBOLはまだしも、PL/Iの人は、ぱったり。。
 RPGといえば(当時は帳票出力言語の1つだったが)、いまは、ゲームの話だ。

 そーいうことが。。。

 意外と身近に起こりつつあるのかもしれない。。
 。。。えっ、もう起こってる!?

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

Hello World程度のデータベース(その18:外部スキーマ(2)SQLその1)

2007-05-06 16:00:18 | 土日シリーズ

情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

 今までで、三層スキーマ構造(概念スキーマ、内部スキーマ、外部スキーマ)の概念スキーマ、内部スキーマをやってきました。

 前回から外部スキーマで、前回は全体的な話としてSQLとJDBC等について書きました。
 今回から数回にかけて、このSQLについて、やっていきます。




■DBの操作に必要なもの

SQLもふくめて、データベースに必要な操作というのは、

・データベースの操作(作成、削除など)
・テーブルの操作(作成、削除、更新など)
・インデックスの操作(作成、削除、更新など)
・ビューの操作(作成、削除、更新など)
・ユーザーの追加、削除、権限設定

といった、データベースそのものに関するものを作成したり削除したりするものの他、

・テーブルへのレコードの追加
・レコードの削除
・レコードの更新
・レコードの検索

といった、データベースの中身に対する操作があります。

で、今回、ここのSQLのシリーズで取り上げるのは、後者のDBの中身に対する操作です。




■操作に対するSQL言語

で、それらの操作に対するSQLは、
・レコードの追加   insert
・レコードの削除   delete
・レコードの更新   update
・レコードの検索   select

とあり、これから、これらについてみていくことになるわけです。
ちなみに、これらSQLについて書いてある本として、ウィリアムのいたずらが
実際に使っているのは、

改訂新版 はじめてのSQL
萌木尨 著 / B5変形判 / 144ページ ISBN4-7741-1272-0

で、だいたい、コレを覚えた程度で足りています。はい。

 データベーススペシャリスト試験を受けたとき(ええ、ちゃんと受かってますよ)に、SQLに関しては、これの改定する前の(赤い表紙の)はじめてのSQLくらいしか、やってませんでしたし。。ただし、全部、一通り、書いてある内容は、できないといけませんけどね。。
Having句や、内部結合、外部結合、自己結合、参照整合性とかもかいてあるので(あ、赤いほうはかいてありました。白い今の版は、今、会社においてあって、赤い本ほど、詳しく見てないので?)、そのわりには、ちょーわかりやすいので、いいと思います。




■SQLの基本的な書き方

 で、きょうはまず、基本的な書き方のお話。(中身は次回から見ていきます)

 たとえば、こんなふうにかきます。

 SELECT ID,SYOZOKU,NAME FROM ZYUGYOINTBL WHERE AGE=65;

内容は、

AGE(年齢)65歳以上の人をZYUGYOINTBL(従業員テーブル)からとってきて、
そのIDと所属(SYOZOKU)と氏名(NAME)を検索する

なんですけど、そんなことはドーデも良くて(今後詳しくやります)、
いいたいことは、

・語の区切りは原則スペースです。
・ただ、そうしてしまうと、 SELECT ID SYOZOKU とかやられてしまうと、SYOZOKUというのは、項目名が続いているのか、FROMを打ち間違えたのか(って、ちょっとありえないけど)わかんないです。そこで、

 項目名の区切りは,で区切ります。なので

SELECT ID,SYOZOKU,NAME FROM

 という具合に、項目名IDとSYOZOKUとNAMEの区切りは,できって、そうでない、FROMとの間はスペースで切ります。項目以外でも、テーブルの列挙(FROM TBLA,TBLB,TBLC のように書く場合がある)でも、,をつかいます。

・あと、テーブル名をつけて、項目を示す場合は、.で繋ぎます。
 たとえば、

SELECT ZYUTBL.ID,SYOTBL.NAME,ZYUTBL.NAME FROM (以下略)

 のばあい、ZYUTBLテーブルの項目IDと、
 SYOTBLテーブルの項目NAMEと、
 ZYUTBLテーブルの項目NAMEということになります。




■で、SQLを書いたら。。。

 で、SQLを書いたとして、どうやって実行するのかというと、
SQLを実行するツールというのがあります。
おらくるだと、SQL*PLUS,
Accssの場合は、「クエリ」をSQLビューにした状態
MySQLの場合はmysqlコマンド
PostgreSQLだと、psql
っていうものがあり、そこからSQLが打てます。




 で、今回はここまで。
 次回から、実際のSQLの中身について、説明したいと思います。



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