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

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

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

2007-05-24 15:55:33 | 開発ネタ

雛形ソースを作成し、Excelの仕様書を用意すると、プログラムのソースやテストデータを生成する方法について説明するシリーズ、「プログラムやテストデータを自動生成する方法」です。
インストールして、概要、DBの例を説明しました。
 過去のものに関しては
 ここ http://www.geocities.jp/xmldtp/index_zido.htm
 にリンクしてあります。

 今回から、動き方について説明してみたいと思います。
 動き方を説明してしまえば、今はExcelで動いてますけど、仕様書をXMLやCSVにおとして、Javaとかでもかけると思います。




■動きの概要

まず、自動生成を行うときは、「ドキュメント生成」ボタンを押します。
こうすると、「マクロ」の、「標準処理」にかかれているSub shiyoToFile()が呼び出されます。

 そのshiyoToFile()の内容はこんなかんじです。

Sub shiyoToFile()
    Dim gyo As Integer
    Dim hina_name As String
    Dim sh_name As String
    Dim out_name As String
    
            '//================================//
            '//  開始時の前処理(固有処理)    //
            '//================================//
    Call initAppData
    
            '//================================//
            '//作業一覧に基づき出力(共通処理)//
            '//================================//
    gyo = sagyo_str_gyo
    Do While Sheets(sagyo_shname).Range(sagyo_hina_keta & CStr(gyo)) <> ""
        
        hina_name = Sheets(sagyo_shname).Range(sagyo_hina_keta & CStr(gyo))
        sh_name = Sheets(sagyo_shname).Range(sagyo_sh_keta & CStr(gyo))
        out_name = Sheets(sagyo_shname).Range(sagyo_out_keta & CStr(gyo))
        Call makefile(hina_name, sh_name, out_name)
        
        gyo = gyo + 1
    Loop
    
            '//================================//
            '//  終了時の後処理(固有処理)    //
            '//================================//
    Call freeAppData
    
    MsgBox "終わりました"

End Sub

(上記< > ¥は、本当は半角)




■内容説明

1.はじめに、「initAppData」を呼び出し、前処理を行います。
     →この関数は自分で自由にかけます。

2.作業一覧シートの一覧開始行(sagyo_str_gyo)から、
  雛形が指定してある行が続く限り、
  以下の処理(自動生成処理)を行います。

 2-1.雛形と仕様書のシート名と出力ファイル名を取り出して
 2-2.実際に自動生成処理(makefile)を行います。
 2-3.次の行へ

3.自動生成が終わった後で「freeAppData」を呼び出し、後処理を行い
     →この関数は自分で自由にかけます。
  メッセージ「終わりました」を出して終了します




■というわけで

 この自動生成は、
・前処理
・自動生成
・後処理
というかたちで、前処理と後処理は関数名はきまっていますが、中身は自由に書くことが出来ます。




って、今回は、たいしたことはなかったのですが、次回から、核心の自動生成部分に少しずつ入っていきます。

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

業務分析が、SIS→BPR→ERP→EA→J-SOXと、テーマに踊らされるので。。

2007-05-24 13:44:29 | Weblog

前にも書いたけど(ここ)IT投資の問題。
 もう1つの話題として、自前主義の問題より、投資が積み重なっていかないで、時代によって踊らされてしまうことのほうが問題だと思う。

 1990年代から、現在まで、たとえば全社的な業務システムの構築という分野は、

SIS→BPR→ERP→EA→J-SOX

と、キーワードが流れ、さらに分析技法も構造化手法、DOA、オブジェクト指向、SOAと、はやり廃りがある。

 でも、やっていることの本質は業務分析なので、同じようなことなんだけど、資産がつみかさなっていかない。
 なので、同じようなことをやるのに、何回も投資が必要になってくる。
 たとえば、COBOLプログラムをJavaで書き換えるための投資とか。。

 投資したくなくても、たとえば上記の例だと、COBOLが動くプラットフォームをサポートしてもらえないなど、バージョンアップしないとどーしょーもなくなるので、仕方無しに投資する。
 でも、COBOLプログラムをJavaで書き換えても、ふつうは、投資効果はみこめません。COBOLと同じことしかしません(違うことしたら書き換えではありません)

 現在、コンピューター投資は、こー言う部分が多いし、今後、自前でなくなったとしても、パッケージのバージョンアップのために、そーいう投資が必要になるんでしょうな。。MS-Officeバージョン上げなきゃ、みたいな。。

P.S はやり廃りといえば、内部統制っていうのが話題になっても、
  システム監査人の話題にはならないのね(^^;)




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

ウイルス:OpenOfficeを狙う、Win、Mac、Linuxに感染

2007-05-24 09:24:10 | Weblog

ここのニュース
ウイルス:OpenOfficeを狙う、Win、Mac、Linuxに感染
http://news.goo.ne.jp/article/infostand/business/it/1473673.html

によると(以下斜体は上記サイトより引用)

英ソフォスは21日(現地時間)、「オープンオフィス.org」を狙ったウイルスで、ウィンドウズだけでなくマックでもLinux(リナックス)でも感染する新種が見つかったと発表した。複数のプログラミング言語を駆使し、いずれのOSでも動くように仕組んでいる。「SB/Badbunny-A」と名付けられた。


だそうな。で、どーいうウィルスかというと

いわゆる「マクロウイルス」と呼ばれるタイプで、オープンオフィスのマクロ機能を悪用。感染するとパソコンに、わいせつ画像が表示されたりする。


ただし。。。

ウイルスは、ソフォスに直接、送られてきた。発想を誇示するのが主目的の「コンセプト実証型」とみられ、感染が広がる恐れは低いという。

ってことらしい。

。。。で実は、そーいうことが書きたいのではなく、
このニュース


スクリプト言語の「JavaScript」「パール」「ルビー」も利用することで、マックやリナックス機でも活動する。


なぜ、「ジャバスクリプト」だけ、英語?
いっそのこと、「じゃばすくりぷと」、「ばーる」、「るびー」
ってひらがなでかいちゃったほうが、かわいい?

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

「民主くん」 のクオリティは、コンテンツ大国を目指す日本として許されるのか?

2007-05-23 17:51:11 | Weblog

たしか、日本は、コンテンツ大国になろうとしてたんですよねえ。。
なので、麻生外相が、まんがノーベル賞なんかを創設したわけで。。

で、そんな、コンテンツ大国になろうとしている、日本の
第一野党の民主党のキャラクターが、これ

【民主党】 新キャラ「民主くん」
http://blog.livedoor.jp/dqnplus/archives/978073.html


って、どよ。。どーなのどーなの
麻生外相とか、どーおもってるんだろう。
やっぱ、「勝った!」かなあ。。

きっと、共産党は「えー、なんで、真っ赤なの?」でしょうなあ。。
先にやられてしまった??

でもこれ、この前の著作権の問題とからめていうと、あきらかに元ねたより、はるかにクオリティが高い、

これ http://image.blog.livedoor.jp/dqnplus/imgs/a/d/ad62efb3.jpg

の場合は、どーなるんでしょー??




ちなみに、「若者層の支持拡大をねらう」っていうけど、

ここ
http://image.blog.livedoor.jp/dqnplus/imgs/7/f/7fd5075a.png


まで(実際にリアルで)しないと、支持は拡大しないというか、逆効果の気が。。




え、ここになんで書いてるんだ、
コンピューターねたじゃないだろうって。。

いや、Linux関係かなあ・・・と、・・・ピングー??
(それは失礼ですね。。”ピングーに!!”)



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

APIを標準化しても、効率は上がるとは限らないよ。。テストがあるから!

2007-05-23 16:22:30 | Weblog

ここのニュース
経済産業省、「日本のIT投資は自前主義が弊害」
http://slashdot.jp/articles/07/05/23/040210.shtml

によると(以下斜体は上記ニュースより引用)

日本企業のIT投資は自前のソフトウエア開発にこだわって体力を消耗しているとし、効率化を求める提言を経済産業省の研究会「IT化の進展と我が国産業の競争力強化に関する研究会」がまとめている。


んだそうな。。。?
で、その論拠が。。

日本のIT投資が生産性向上につながる効果は、非製造業で米国の約14分の1、IT化が進んだ製造業でも約半分にとどまるとされる。その原因を、提言は日本企業の強みだった「自前主義」の弊害と指摘。


ほお。。。で、


現状打破に向け、携帯電話やゲームソフトなどの分野ごとの主要企業に仕様の標準化や共同開発を促している。


ちょっとまった!
論理飛躍してない??

今言ってるのは、製造業と、非製造業の生産効率の話だよねえ。。
製造業って、工場とか、非製造業って、デパートとか、スーパーとか。。

そーいうところで、ゲームソフト使うのか?
ゲームソフトの標準化とこの結果とは関係ないような。。
同様に、ケータイも、まだその分野では本格的に使われていない。
ので、関係あるとはいいきれない。


ソリューションまで、確実にもっていけるフレームワークができるのであれば、
たとえば、東芝ソリューションのBREWフレームワークとか、
そー言うのができるというのなら、効率化できるっていう意味が分かるけど、

単純に標準化しても、生産性はあがらないよ。。




 なぜなら、標準化したAPIで呼び出しても、結果がばらばらになっちゃうから。。結果保障ったって、どこまで出来るかわからない。

 たとえば、GPS等の位置情報の機能、BREWでは、呼び出し方は決まっているけど、その呼び出し方で、どこまで取れるかは機種によりまちまち(緯度経度はOK、ただ、高度の精度やケータイをどの方向に傾けているかっていう情報がまちまち)なので、同じようにプログラムしても、結局テストしないといけないわけで、そのテストでうまくいかないと。。うーんって悩んでしまい、結局、このメーカーじゃだめじゃん(^^;)っていうことになると。。無駄な時間で生産性があがらない。

 むしろ、各社独自、端末独自でぜんぜんかまわないから、確実な情報があればいい。そうすれば

#IFDEF _マシン名(実際にはメーカー名)

でその端末(メーカー)独自のプログラムを組んでいくから。

 実際にはBREWの場合、メーカーごとに採用しているクセがあるから、そのメーカーごとのIFDEFになるけど(でも、バグっぽいところが直ってくることもあるので、完全にメーカーではないけど)




 それと、BREWにおいては、自前主義のほうがいいはず。

 自前主義の場合、自社でOKならアプリはOKになるので、その場合、窓口とか、契約が違う。

 それに対して、どんな端末でも動くアプリ開発になると、それようの窓口で、全端末相手にやんないといけないので、無駄な作業が増長する。
 インターフェースを共通にしても、テストはしなくちゃいけないし、テスト結果がみんな同じになるとは限らない。




 つまりまとめると、ケータイの開発と、いままでの開発では、勝手が違い、むしろ自前開発で、端末限定にしてしまったほうが、開発(とくにテスト工程)が激減する。
 複数メーカーで動かすとなると、同じAPIにしても、どーしても機種により結果に差が出るので、テストは必要で、そーなると、あんまり。。メリットはない。


P.S じつは、いままでのケータイ以外の開発でも同じなんだけどね。。


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

開発の初めから順番に書いていってみる その48:プログラミング(10)決定表1

2007-05-23 14:18:43 | 開発ネタ

シリーズ「開発の初めから順番に書いていってみる」の続きです。
 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 現在プログラミングです。
(プログラミング以前は、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm

 プログラミングでは決定表と自動生成のお話をします。
 前回は自動生成の概要で、自動生成は、プログラムやテストデータを自動生成する方法でやっているとおり、
・雛形ファイルと
・仕様書
があれば、そこで示した方法でできるということを書きました。

 今回から実際に考えていきます。まずは、決定表です。




■仕様

 決定表の仕様に関しては、ここに書いたとおりです。

こんなかんじ

の決定表を、プログラムにするのですが、そのとき、
 ・呼び出しクラス:Kettei.java
 ・決定表の部分 :KetteiCtrl.java
 ・実行部分   :KetteiModel.java
の3つにわけました。

自動生成する際でも、
呼び出し側のところは、値の取得方法で変わります。
実行部分も、同じことさせるわけではないので、当然かわります。
ということで、自動生成する部分は、「決定表の部分」となります。




■サンプルソースコード

 では、つぎに、サンプルをつくります。。っていうか、さっきのページにでているのですが、値が入るところを青く、繰り返しのところを下線で書きます。
import java.util.*;

/**
 * 
 * 決定表のコントロール部分
 */
public class KetteiCntl {

	/*
	 * 右側の上のYN
	 */
	public static final String[] zyoken_list={
			"YYN",		//	0
			"YNY",		//	1
			"NYY",		//	2
			"NNN"};		//	3
	/*
	 * 右側の下の実行内容
	 */
	public static final String[] todo_list={
			"--X-",		//	YYN
			"X---",		//	YNY
			"---X",		//	NYY
			"-X--"};	//	NNN

	/*
	 * 	決定表の実行処理
	 */	
	public int execute(HashMap map) 
	{
		//======================//
		//	データ取得     //
		//======================//

		//	年齢
		int	age	=	0;
		try
		{
			String buf =	(String)map.get("age");
			age	=	Integer.parseInt(buf);
		}
		catch(Exception e)
		{
			e.printStackTrace();
			return	-1;
		}		

		//	性別
		String	seibetsu	=	(String)map.get("seibetsu");
		if ( seibetsu	==	null )
		{
			return	-1;
		}

		//	既婚者・未婚者
		String	kikon	=	(String)map.get("kikon");
		if ( kikon	==	null )
		{
			return	-1;
		}

		//======================//
		//	条件判定	      //
		//======================//
		//	条件文をここに設定
		String	zyoken = "";


		//	30歳未満
		if ( age	<	30 )
		{
			zyoken = zyoken+"Y";
		}
		else
		{
			zyoken = zyoken+"N";
		}
		
		//	男性
		if(seibetsu.equals("男性") == true )	
		{
			zyoken = zyoken+"Y";
		}
		else
		{
			zyoken = zyoken+"N";
		}

		//	既婚者
		if(kikon.equals("既婚者") == true )
		{
			zyoken = zyoken+"Y";
		}
		else
		{
			zyoken = zyoken+"N";
		}
		logout(zyoken);

		//======================//
		//	実行条件の選択 //
		//======================//
		String todo = "----";
		for(int i = 0 ; i < zyoken_list.length ; i ++ )
		{
			if ( zyoken_list[i].equals(zyoken)==	true )
			{
				todo	=	todo_list[i];
			}	
		}
		logout(todo);
		
		//======================//
		//	実行 	      //
		//======================//
		KetteiModel ketteiModel = new KetteiModel();

		//	1段目の実行条件
		if ( todo.charAt(0)	==	'X' )
		{
			ketteiModel.zikko_1();
		}

		//	2段目の実行条件
		if ( todo.charAt(1)	==	'X' )
		{
			ketteiModel.zikko_2();
		}

		//	3段目の実行条件
		if ( todo.charAt(2)	==	'X' )
		{
			ketteiModel.zikko_3();
		}

		//	4段目の実行条件
		if ( todo.charAt(3)	==	'X' )
		{
			ketteiModel.zikko_4();
		}

		return	0;
	}

	/*
	 * 	ログ出力
	 */	
	 public void logout(String msg)
	 {
//		System.out.println(msg);
	 }

}





■可変、繰り返し項目をまとめる

いまのをまとめるとこんなかんじです。

(1)項目名がはいるところ=可変項目
(2)zyoken_list=YNの条件の繰り返し、可変項目
(3)todo_list=下の処理内容の繰り返し、可変項目
(4)条件に使う変数名と型=(未定義)繰り返し、可変項目
(5)条件式=条件式の繰り返し、可変項目
(6)実行内容=実行内容と番号の繰り返し、可変項目

ここで、今回のはじめに示したExcelシートの決定表に、
(1)はあります
(2)は、90度、回転させないといけません
(3)も、90度、回転させないといけません
(4)は、あらたに定義してもらうことになります
(5)は、現在の条件式と違い、自動生成用に書いてもらうことになります
(6)も、現在のものと違い、自動生成用に書いてもらうことになります
ということになります。




次回は、これを踏まえて、自動生成用の仕様書シートを示したいと思います。


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

ソフトバンク、携帯用共通APIプラットフォーム「POP-i」開発、ベースのOpenKODEは。。

2007-05-23 02:26:13 | ケータイ

ここのニュース
ソフトバンク、携帯用共通APIプラットフォーム「POP-i」
http://k-tai.impress.co.jp/cda/article/news_toppage/34631.html

(ソフトバンクからのプレスリリースはここ)によると
(以下斜体は上記ケータイWatchのニュースからの引用)


ソフトバンクモバイルは、携帯電話用共通API指向型プラットフォーム「POP-i(Portable Open Platform Initiative)」(ポパイ)の開発に着手すると発表した。共通プラットフォームを採用したモデルは、来年以降登場する見込み。

 「POP-i」は、異なるOSやチップセットの違いを吸収し、メーカー間でアプリケーションやミドルウェアの共通化が図れるプラットフォーム。メーカーは携帯電話開発において、アプリケーション開発期間の短縮や開発コストの低減を期待できるほか、ハードウェアの進化に対して、開発したソフトを引き継げるような仕組みになるという。


だそうな。。
ちなみに開発は

プラットフォームは、ソフトバンクがアプリックスやACCESSとともに共同開発する。

とのこと。

で、その「POP-i」(スラッシュドットによると、ポパイとよむみたい)は、

携帯電話向けAPI仕様の「OpenKODE」を採用し、オープンプラットフォームとして展開する。動画や3Dなどのマルチメディアソースを包括的に扱うことが可能で、従来よりもリッチなコンテンツの提供が可能になるとしている

とのことなんだけど、そのOpenKODEのページは、
こちら http://www.khronos.org/openkode/

仕様書は
ここ http://www.khronos.org/registry/kode/

で、これらをインプリメントしたものとかが
ここ http://www.khronos.org/developers/resources/
にあるようだ。。。

って、全部英語ジャン(>_<!)
日本語のクロノスのページ行っても、結局、英語のページにいっちゃうのよねー。。

英語のにがてなウィリアムのいたずらは。。。(>_<!)



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

1TBのデータを転送するなら、ネットワークよりフットワーク

2007-05-22 22:06:46 | Weblog

ここのGIGAZINEの記事
大容量のデータを効率よく転送する方法
http://gigazine.net/index.php?/news/comments/20070521_tb_data_transport/

によると(以下斜体は上記サイトより引用)

もし1TBのデータを100Mbpsの通信回線で転送した場合、100Mbpsの回線は1時間ごとに45GB程度のデータを転送することができるそうです。もちろんこれは100Mbpsフルの速度が出た時の話。そして1TBのデータすべてを転送し終えるには、およそ丸一日かかるとのこと。

そしてこれを言い換えると、1TBを超えるデータを転送する場合、FedExなどの宅配サービスを利用した方が早く転送できるそうです。つまりデータが入ったHDDなどのストレージを宅配業者に預けて、相手に直接渡してもらった方が早いということ。


検算:
100MBPS=1秒間に12.5Mバイト
       =1時間に3600秒*12.5Mバイト=45000M=45Gバイト
ほんとーだー(^^)
1Tバイトだいたい1000ギガバイトなので1000/45=22時間以上
ほんとーだー(^^)!!

むかし、DTPの人たちが言ってた、
ネットワークよりフットワークっていうやつですね(^^;)

似たような世界の話で、
Excelでマクロ組むより、
電卓たたいたほうが早いっていうときもあります(^^;)

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

YouTubeを一日中見ている「検索Gメン」とか出来るのかな(^^)

2007-05-22 18:16:56 | Weblog

ここの痛いニュース
「著作権法の非親告罪化」で“同人作家”等に深刻なダメージか
http://blog.livedoor.jp/dqnplus/archives/977113.html

が話題のような。。。

これの元ネタ、
たけくまメモ
【著作権】とんでもない法案が審議されている
http://takekuma.cocolog-nifty.com/blog/2007/05/post_b72f.html

をみると、

知的創造サイクルに関する今後の課題(保護分野)
http://www.kantei.go.jp/jp/singi/titeki2/tyousakai/cycle/dai8/8siryou2.pdf

(PDFです)の15~17ページが問題となっているらしい。。

一瞬、
えー、著作権って言ったら、ニュースも著作権あるよねえ。。
ニュースをコピーするのとかもダメなの(>_<!)
うーん、そしたら、政府に都合が悪いニュースを引用してブログ書いたら、
つかまったり、消されちゃうのかなあ。。
って思ったけど、そこを読んでいくと

(以下斜体は、上記PDFからの引用)

(2)具体的方策
  著作権等侵害のうち、一定の場合について、非親告罪化する。

 「一定の場合」として、例えば、海賊行為の典型的パターンである営利目的又
は商業的規模の著作権等侵害行為が考えられる。

 営利目的の侵害行為は、その様態から侵害の認定が比較的容易であるとともに、他人に損害を与えてまで金銭を獲得するという動機は悪質である。また、営利目的ではなくても、例えば愉快犯が商業的規模で侵害を行った場合には、権利者の収益機会を奪い、文化的創造活動のインセンティブを削ぐなど、経済的・社会的な悪影響が大きい。


っていうことだから、ブログに引用するって言う程度では、営利目的ではないのでOK。。。かなあ。。たぶん(^^;)




 でも、後者の「商業的規模の著作権等侵害行為」っていうのは微妙ですよねー
 これって、YouTubeにアップするのとかも入りそうな気がする。。

 もし、そーなったら、YouTubeを一日中見て、
 「はいこれ、著作権侵害!」っていうことで、逮捕に向かう
 検索Gメンとか、できるのかしら。。。

 なんか、そのGメン、楽しそうだな。。
 一般公募かなあ。。(^^;)

 。。。そーいう問題じゃないだろって、おこられそうなので、
 このへんで。。


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

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

2007-05-22 17:16:53 | 開発ネタ

雛形ソースを作成し、Excelの仕様書を用意すると、プログラムのソースやテストデータを生成する方法について説明するシリーズ、「プログラムやテストデータを自動生成する方法」です。

 第二回目でインストールをしました。
 それから5回目までで、概要を説明しました
 そして前回までで、DBの例を説明しました
 過去のものに関しては
 ここ http://www.geocities.jp/xmldtp/index_zido.htm
 にリンクしてあります。

 今回は説明していない部分っていうか、TIPSです。




■タグ開始、終了記号$#$を出力するには

 たとえば、雛形ソースから雛形ソースを出力するなどというケースでありえるのですが、タグ開始、終了記号である$#$を出力するには、どうしたらいいかというと(雛形にこう書いてあると、すべて、タグの開始または終了とみなすのでかけない)

1.仕様書のどこかのセルに$#$と書きます
 (たとえば、セルN1に$#$って書いたとしましょう)

2.CELLタグでそこを指定します
 ($#$CELL N1$#$とかきます)

そうすると、 $#$と出力できます。以上




■作業一覧をみせたくない

 作業一覧を見せたくない場合、
  書式→シート→表示しない
 にすれば、シートが見えない。。。って、そーいう問題じゃない(^^;)

 もし、作業一覧に書く内容が自動化できるのであれば、

 前処理(initAppData)で「作業一覧」シートを作成し、
 後処理(freeAppData)で「作業一覧」シートを削除してもかまいません。




■複数のシートの情報を利用したい

 前処理で、複数のシートを元に、作業用シートを作成し、
 作業用シートを「作業一覧」に指定してください
 (後処理で作業用シートを削除する人もいると思います)




■雛形ファイルを、仕様書の内容によって書き換えたい

 前処理で、好きなように書き換えてください。




■出来上がったファイルを1つにまとめたい

 後処理で、出来上がったファイルを読み込み、1つにまとめてください。
 その場合、読み込んだファイルは削除するのかな(^^)




こんなかんじです。
次回から、実際に中で、何をやっているのかについて説明します。



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

天才を多く作っても、現場は救われなさそう(-_-;)

2007-05-22 11:58:53 | Weblog

ここのニュース
IPA、未踏ソフト事業で「スーパークリエータ」15名認定
Web APIのパッチ合成やWeb上の“けもの道”マッピングなど
http://internet.watch.impress.co.jp/cda/news/2007/05/15/15705.html


IPAの施策は、天才といわれる人を多く作って、世界に売り出そうって言うみたいだけど。。。どーのかなあ。。現場のニーズの感覚と離れすぎちゃったりしないかなあ。。

 むしろ、天才じゃなくってもつくれるフレームワークをじゃんじゃん公開しちゃったほうが、産業的にも発展するし、多くの人々が救われるし、層が厚くなれば、世界的なソフトも出てくるだろうと思う。




具体論でいこう。

そこに
PatchService http://www.patchservice.net/
というのが紹介されてるけど、現場的にほしいのは、SOAP、RESTだけじゃなくって、普通のプログラムでも何でも、関数なりメソッドなりが登録できて、それを、フローチャートみたいな分かりやすい図で可視化して表示する方法だと思う。

 これを実現するには、

(1)SOAP、RESTだけじゃなくって、普通のプログラムでも何でも、
 統一的に表現し、登録できる方法(仕様書と変換方法、共通形式)

(2)フローチャートみたいなものを作るプログラムの考え方、
   フレームワーク

(3)それらをプログラムに落とし込むための方法

だと思う。




(1)に関して言えば、
(あ)クラスをXMLで表現し、入力も出力もXMLで表現すれば、DOMで扱える。
 この形式をXMLフォーマットをまず決めて、

(い)REST,SOAP,普通の関数をこの変換方法に展開する方法を考える

(う)(い)は、XMLを出力する雛形フォーマット
 。。とくれば、このブログをお読みの賢明な読者ならおわかりのとおり。。
 あとは、それぞれの仕様書のフォーマットをきめれば、
 自動生成に落とし込め、
 既存の仕様書を今回決めた仕様書にマクロとかで変換できれば。。
 って言う話になってくる。




(2)に関して言えば、
 こういった、DTPやドローイングソフトなんかのつくりかたは大体決まっていて、

(あ)それぞれの構成要素のクラスをつくり

(い)それを、リンクさせていく(連結リストの応用なのだ)

(う)表示時は、それぞれの構成要素が座標を持っているので、それを表示させ
 (というか、構成要素のクラスでdrawメソッドがあり、そいつを使う)

(え)構成要素の追加削除があったら、
    リンク関係を変えて、
    位置の再評価をして、
    再度draw
  (変更の場合は、構成要素の内容を変えて、再度drawでOK)

(お)あとは、画面上でリンクされたオブジェクトをチェックする方法
  →メモリ保持方法はカオル姫方式にしておけば、ばっちし

 なんだけど、なに言ってるかわかんないと思う。
 これについては、土日シリーズのDTPの構造を考えるの、あと数回先から書くと思います(DTPソフトの基本構造のところで。。次回はカラーマネジメントの予定なんで関係ないけど)




(3)に関しては、
・それぞれの図で表現されたもののプログラム対応
 →これも雛形があればOKなのだ。。

・REST,SOAP,普通の関数を統一的に扱うラッパー

っていうことになる。




 むしろ、こーいう部分に関して、どんどん紹介していって、雛形を作って、ワーカーさんでもつくれるように、いや、一般企業の情報システム部の人でも作れるようにすることのほうが、現場と直結して、ビジネスも大きくなると思う。

 天才が、ワーカーさんから離れて、完成品を出すよりも。。。



 え、そーいう紹介は、お前がやるからいいだろうって。。



 確かにそのとおりですね(^^;)


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

女性の無罪確定 ヤフオク詐欺。

2007-05-21 20:46:11 | Weblog

ここのニュース

女性の無罪確定 ヤフオク詐欺
http://www.kobe-np.co.jp/kobenews/sg/0000343296.shtml

によると(以下斜体は上記サイトより引用)

二〇〇一年ごろ、サイト上でデジタルカメラなどの電化製品販売を開始。資金繰りに行き詰まり、〇四年ごろから商品が手元に入荷していないのに出品を続けた。

 〇五年一月、神戸地裁に破産を申し立て、四月に債務免責を許可する決定を受けた。


という女性に対して


インターネットの競売サイト「ヤフー・オークション」に出品し、落札者約七十人に商品を発送せず代金計約六百万円をだまし取ったとして詐欺罪に問われた無職女性(37)=神戸市=を無罪(求刑懲役五年)とした神戸地裁判決に対し、神戸地検は十九日までに控訴を断念、無罪が確定した。

 「発送するつもりだった」と主張した女性の弁護側は「破産し、神戸地裁から債務免責を許可されており、今後も被害弁償の予定はない」と話している。

 神戸地検の大野宗次席検事は「判決を覆すのは証拠上、困難であると判断した」と説明。


だそうな。。ちなみに


公判で検察側は、被害者は全国で九百人以上、被害総額は計五千万円を超えると指摘していた。


だって。

・・・オークション詐欺で訴えるのはむずかしいってこと?



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

開発の初めから順番に書いていってみる その47:プログラミング(9)自動生成1:概要

2007-05-21 18:09:09 | 開発ネタ

シリーズ「開発の初めから順番に書いていってみる」の続きです。
 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 現在プログラミングです。
(プログラミング以前は、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm

 プログラミングでは決定表と自動生成のお話をします。
 ということで、今回から自動生成についてなのですが、何を自動生成するかについてです。




■全体像から自動生成を考える

プログラムの全体像は、こんなかんじとかきました。
<<プログラム>>
 ・次の文を実行する
    ・プロセス内のデータを処理する=一般的な処理
    ・外部にあるデータを処理する=入出力
       ・ファイル
       ・DB
       ・画面
       ・帳票
       ・HTTP間の通信(REST型)
           :
           :(入出力デバイス分ある)
           :
 ・どこかにジャンプする
 ・そこで終了する
 ・条件によって分かれる
    ・条件(IF文)が1個
    ・複数の条件がある
       ・条件が1つしか成立しない(select case)
       ・条件が複数成立してしまう
           ・条件が成立したら、実行(マルチアンサー)
           ・条件から状態を決めて実行(シングルアンサー)


 このうち、やり方がきまっているものが、自動生成しやすいです。

 そーやって考えると、「外部にあるデータを処理する=入出力」は、その入出力ごとにドキュメントができるので、ここを自動生成にしやすいです。

 また、決定表も仕様書の形式が決まっているので、これは(ちょっと仕様書の書き手に手を入れてもらう必要があるのですが)自動生成しやすいです。

 一方、条件文一般や、処理に関しては、フローチャートをプログラムに落とすとかいった、可視化はできるのですが、仕様書の書き方が結構自由なので、自動生成はしにくいです(書き方を決めてしまえば、そんなことはないんだけど)




■あと、テストでも。。

 あと、テストデータを作成したり、自動生成で作ったところのテスト仕様書も自動生成できるんですけど、それは、今回の範囲外とします(テストのところで書きます)





■自動生成の場合、なにが必要か

 これについては、ちょうど、今日、

プログラムやテストデータを自動生成する方法 その9 DBの例 その4-仕様書
http://blog.goo.ne.jp/xmldtp/e/75a7baa84365b230b6841d445ee3138c

で書いたのですが


・雛形ファイルと
・仕様書


ということになります。




ということで、次回から、
・決定表について
・入出力1 DB・ファイル
・入出力2 画面
というかたちで、自動生成について、具体的には、対象と雛形ファイル、仕様書について、考えてみたいと思います。



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

いらなくなったBREW端末を恵まれない国の子に送るっていうのは、どーなの?

2007-05-21 16:22:33 | Weblog

さっき、書いたけど消しちゃったみたいなので書き直し。
無責任な意見で、思いつきなんだけど。。

昨日NHKスペシャル見てたら、イエメンだったかなの話をやっていて、子供がいっぱいいてまずしくて、教育できないっていうのをやっていて思ったんだけど。。。

 最近、パソコンをおくるとかいうプロジェクトがあるけど、解約になっていらなくなったBREW端末って、10年前くらいのパソコンの性能?は有りそうなので、仮に電話+ネットの機能は使えなくても、10年前くらいのパソコン(アプリで)+デジカメくらいの機能はあるんじゃないか。。

 そーすると、いらなくなったケータイに、CAIのアプリをダウンロードして、そーいう恵まれない国に送れば(通話とネットは出来ないようにする)、それでお勉強できて、いいんじゃないかあ?
 キャリアとしても、その国とつながりが出来れば。。(^^)v




 解約するときに、そのCAIソフトをダウンロードすると同時に、中に入っているデータもクリアされるようにして、さらに、解約したら、通話できないようにする(って、そーなると思うけど)。
 で、そのケータイを海外に寄付する。

 アプリのCAIソフトは、

1.起動すると、指定されたHTMLファイルをSDカードに見に行き、
2.そのHTMLファイルを表示、
3.押されたボタンによって、次に表示するHTMLファイルをSDカードに見に行く

というかんじで、コンテンツ自体はSDカードにいれるようにする。
こうすれば、SDカードの内容(HTMLで記述)を書き換えるだけで、あたらしい教材が作れるのでOK
 HTMLファイルの読み込みはIHTMLVIEWERを駆使し、画面制御に関しては、まあ、書く必要はないだろう。(さんざんかいてきたので)




 ケータイをリサイクルすれば貴金属が取れるので、それはそれで大事だけど、もったいない気もするし、キャリアとしても、こーやって、通話できないケータイを配っておけば、いつかは、通話できるケータイが欲しくなる(^^;)。。

 っていう戦略も組めて、いいと思うけどなあ。。

 っておもった。

 はい、よくかんがえてない、無責任な意見です(^^;)
 (たぶん、送る費用がたいへんなのと、通話できなくてアプリが動くのかっていう問題がある気がする。。)

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

プログラムやテストデータを自動生成する方法 その9 DBの例 その4-仕様書

2007-05-21 15:09:18 | Weblog

 雛形ソースを作成し、Excelの仕様書を用意すると、プログラムのソースやテストデータを生成する方法について説明するシリーズ、「プログラムやテストデータを自動生成する方法」です。

 第二回目でインストールをしました。
 それから5回目までで、概要を説明しました
 過去のものに関しては
 ここ http://www.geocities.jp/xmldtp/index_zido.htm
 にリンクしてあります。

 で、いま、それを使った例としてDBについてやってます。
 手順は、こんなかんじ。
0.出来ているものを確認する
   ・仕様書の可変部分、固定部分などなど
1.出力ファイルをきめ、そのサンプルを作成する
2.1のファイルから抽象的に書くところを見極め、そこにタグを入れていく
    →これが、雛形ファイル
3.2のタグから、出来ているExcel仕様書に関して、なにか修正が必要なら
  付け足す。

前回までで、2の雛形ファイルまできたので、今回は3のExcel仕様書です。




■仕様書で記入されてない部分

 前回、雛形で、仕様書のデータを利用するところ(つまり、CELLタグ、KETAタグ、IFCELLタグとIFKETAタグのところ)は、こんなかんじでした。
$#$CELL B3$#$   テーブル名
$#$CELL B4$#$      主キー  

=== 8行目から ===
$#$KETA A$#$    項目名
$#$KETA B$#$    項目の型
$#$IFKETA K,○$#   NOTNULL指定(○ならNOTNULL)



で、実際の仕様書は、こんなかんじ。。


問題なのは、主キーです。
これは、実際にはJ桁に○を付けてもらうだけなのに、
プログラム上では、key1,key2,key3のように、カンマで区切ってならべないといけません。で、そーやってかいたものをセルB4にいれることになっています。

どうしましょう




■対応策=自分で作成する

 もちろんこの場合、セルB4に、主キーを手作業で記入してもいいです。
 ただ、マクロを知っているのであれば、マクロでつくってしまってもいいです。

 今回の例で言うと、シート名が、B2のテーブル名になっているとすると、

 セルB4に、
=getMainKey(B2)
のように、自分で作った関数getMainKeyの結果を入れるようにして(引数はシート名なのでセルB2)、関数getMainKeyのマクロを以下のように作成します。

'//=========================//
'//    主キー用関数     //
'//=========================//
Function getMainKey(shname As String) As String
    Dim gyo As Integer
    Dim kekka As String
    Dim i As Integer
    
    For i = 1 To Sheets.Count
        If (Sheets(i).Name = shname) Then
            Exit For
        End If
    Next
    If (i > Sheets.Count) Then
        getMainKey = ""
        Exit Function
    End If
        
    
        
    
    gyo = 8     '  開始行は8行目から
    kekka = ""
    Do While Sheets(i).Cells(gyo, 1) <> ""
        If (Sheets(i).Cells(gyo, 10) = "○") Then
            If (kekka <> "") Then
                kekka = kekka & ","
            End If
            kekka = kekka & Sheets(i).Cells(gyo, 1)
        End If
        gyo = gyo + 1
    Loop
    getMainKey = kekka
End Function

(上記 < > は本当は半角)

このようにすれば、手作業で入れなくても、主キーのところに○をつけてば、自動的に判別してくれます。




■同様に。。。

 同様に、型についても、今回はVARCHAR(50)などのように入れるようにしましたが、型をchar 桁数を50と別々の桁に指定する場合でも、それらを合わせて、SQLの型に合うように変換する関数をマクロでつくって、それをどこかの桁に書き出すようにしておけばOKです。

 このように関数で出力するものを求めた場合、今回の例のようにシート上にみせてしまってもいいのですが、そーすると汚くなってしまう場合は、そこを非表示にしておきます。




■あとは

 で、仕様書もできたら、あとは、作業一覧シートに記入して、実行します。




■ということは。。。

 っていうことは、結局
・雛形ファイルと
・仕様書

の組み合わせが出来れば、あとは自動生成って、できるっていうことです。
(それを適当なところにおいて、作業一覧で指定すればいいわけですから)



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