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

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

Javascriptで、ラジオボタンを使い、選択されてる項目を取得。

2007-07-31 19:44:38 | JavaとWeb

ちょっと聞かれて、調べて答えたこと。メモメモ

 Javascriptで、Domっていうか、createElementつかって、ラジオボタン作って、選択された人を、取得する方法。

 要素を押されているかどうか、全部チェックして、チェックされていたら、そいつの値を取得する。
 こんなかんじ。

<html>
<head>
<SCRIPT Language="JavaScript">
<!--
var data;
function load()
{
	//==============================//
	//	データ設定	     //
	//==============================//
	data	=	new Array();
	data[0]	=	"安倍さん";
	data[1]	=	"麻生ローゼン閣下";
	data[2]	=	"小沢だ!!";

	//==============================//
	//	データセット	     //
	//==============================//
	tb	=	document.getElementById("sori");
	for(i = 0 ; i < data.length ; i ++ )
	{
		newTr = document.createElement('tr');

		newTd = document.createElement('td');
		newbt = document.createElement('input');
		newbt.type = "radio";
		newbt.name   = "rd";
		newbt.id   = "rd";
		newbt.value  = data[i];
		newbt.attachEvent("onclick",setpos);
		newTd.appendChild(newbt);
		newTr.appendChild(newTd);

		newTd = document.createElement('td');
		moji = document.createTextNode(data[i]);
		newTd.appendChild(moji);
		newTr.appendChild(newTd);

		tb.appendChild(newTr);
	}

}

function setpos(e)
{
	rt	=	e.srcElement;
	for(i = 0 ; i < data.length ; i ++ )
	{
		f1.rd[i].checked	=	false;
	}	
	rt.checked = true;
}

function sentaku()
{
	for(i = 0 ; i < data.length ; i ++ )
	{
		if (f1.rd[i].checked == true)
		{
			alert(f1.rd[i].value);
		}
	}
}


// -->
</SCRIPT>
</head>
<body onLoad="load()">
<form id=f1 name=f1>
次の総理大臣は?<bt>
<table border=1><tbody id="sori"></tbody></table>
<input type=button id=btx onClick="sentaku()" value="政権選択!">
</form>
</body>
</html>

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

setposは、チェックマークがつかなかったので、チェックマークをつけるための関数。

その、値をとってくるのは、「sentaku」という関数。
安倍さん、麻生さん、小沢さんをチェックして、チェックしてあったら、valueを出すと。。




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

開発の初めから順番に書いていってみる その72:テスト(1)概要

2007-07-31 15:47:13 | Weblog

 シリーズ「開発の初めから順番に書いていってみる」の続きです。

 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 前回までで、プログラミングがおわりました
 (バックナンバーは、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm)。

 今回からテストです。今日はテストの概要です。




■テストの種類とV字型モデル

 テストは、

  ・単体テスト
  ・結合テスト
  ・総合テスト(システムテスト)/運用テスト

 のような形に分かれるのがおおいです(この順番で行きます)。

 このとき、
   単体テストは、詳細設計書の内容(プログラム含む)を確認し、
   結合テストは、外部設計書の内容を確認し
   総合テストは、要求仕様書の内容を確認します
 
 設計書と、テストのかんけいをならべると

要求仕様書            総合テスト

   外部設計書      結合テスト

     詳細設計・PG/単体テスト



と、Vの字にならんでいるので
(え、それって、無理に並べたでしょ、そのうえ、ちゃんと並んでないし・・って。並んでるんですう。。あなたはV字にみえるようになーる、V字になーる・・
(催眠術のつもり))

 とにかく、「V字型モデル」とかいいます。




■ホワイトボックステストと、ブラックボックステスト

 で、プログラムの中身をみて、テスト項目をつくることを、ホワイトボックステストといいます。一方、プログラムの中身はわかんないけど(ブラックボックスにして)、入出力からテストしていくことを、ブラックボックステストといいます。

 ってことは、ホワイトボックステストは、プログラムに基づきテスト項目をたて、ブラックボックステストは、入出力(テキスト項目にいろいろ入力してテストなど)に基づきテストします。

 単体テストでは、プログラムをテストする=プログラムをみてテスト可能なので、ホワイトボックステストができます。
 一方、結合、総合ではプログラムが来るとは限りません(実行モジュールだけ渡されテストすることも多い)。なので、プログラムをみなくてもできるブラックボックステストとなります。

 単体テストでも、ブラックボックステストは出来ますが、単体テスト=ホワイトボックステストだと主張する人もいます。




 今日は、概要なので、ここまでにします。
 次回は、富士通の公開しているドキュメントのうち、テストに関するものについて説明します。



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

FlashのXML読み込みとかGainerとかMash Up Caravan in 東京(1)

2007-07-31 09:39:37 | Weblog

きのう、「Mash Up Caravan in 東京」にいってきた、報告その1です




日時:2007年7月30日(月)18:30~21:00
場所:サン・マイクロシステムズ 神宮前オフィス B1F

内容
(1)What's Mash up!
 目的
・クオリティ オブ ディベロップメントの向上
・オープン マッシュアップ コミュニティの拡大
・新たなネットワーク***の可能性
(すみません。***、書きそびれました)

Mash up Award 3rd
・つながる=つくるぶ http://www.tkrb.jp/
・広がる=協力会社28社
・つくりだす=実行環境、開発セミナー(これ:東京は220名申し込み)


(2)過去の受賞作品
・みんなの水遊び
 Livedoor天気予報サービス
 地図Webサービス(Google Map)
 じゃらんNetWebサービス
 ジオコーディングAPI(Google Ajax Search API)
 ユーザー投稿を利用

・From B beta
 ブラウザだけでなく、メールやメッセンジャーを使っている

・Mash Upに役立つサイト
 Programmable Web http://www.programmableweb.com/
 APIマトリックスなど

 Mashupedia http://www.mashupedia.jp/

(3)GainerとFlashXML
・Gainer
 I/Oのインターフェース
 メディアインスタレーションのための環境
 Flash,Max/MSP、Processingと連携
 書籍MashUp++に掲載されている
 サイト http://gainer.cc/

 USBを使い、ボードから出力。GainerからチョロQが動かせる
 ヘルメットにつけて、ハンズフリーで(ヘルメットを動かして)RSSを読むデモ

・FlashでXML
 Active Script 2.0はめんどう
 XPath4AS2は、画面が固まることアリ
 CASA FrameWorkだと、手軽にXMLを読める
    XmlLoadで読む。XmlUtil.xmlToObjectでパース
    UTF-8エンコーディングをescapeでする
    シフトJISベースでエンコードするにはSystem.useCodepage=true(UTF-8はfalse)
    名前空間が使われている場合、:
 AS3は、もっとややこしい
  フラディクトさんの記事の中にある??(ごめん、どこだか、よくわかんなかった ^^;)




つづきは、次回へ

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

Googleの背景色を黒に変えるとエネルギーが節約できる?

2007-07-30 16:58:50 | Weblog

ここのスラッシュドットの記事
Googleの背景色を黒にするとエネルギーの節約はできる?
http://slashdot.jp/articles/07/07/27/1525209.shtml

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


Googleの背景色を黒に変えるとエネルギーが節約できるという議論が出ているようで、実際に真っ黒にしたBlackleというサイトもあるようです。Googleのページを表示すると74ワットの電力をディスプレイが消費するが、背景色が黒だと59ワットに抑えることができるということで、Googleが背景を黒にしてしまえば年間に750メガワット時もの電力を節約できるという主張のようです。


だそうです。

でも、そのあとのコメントによると、液晶ディスプレイでは、効果ないみたい。

 つーか、テレビの深夜番組をなくしたほうが、省エネかも。。

 いや、テレビのかわりにパソコンやるので、家庭の電力は減らないけど、
 そうじゃなくって、放送局が、電気を使って電波を送信している、あの電力が節約できる・・

 最近のテレビ、電波に流す、電気がもったいないよねー(^^;)

 っていうのもあるよねー。。
 (意外と、ゴールデンでも、あったりして ^^;)




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

開発の初めから順番に書いていってみる その71:プログラミング(33)構成管理

2007-07-30 14:55:33 | 開発ネタ

 シリーズ「開発の初めから順番に書いていってみる」の続きです。

 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 前回の自動生成で、プログラミングは一通り終わりました。
 次はテストなのですが、その前にひとことだけ、構成管理について触れてみたいと思います。




■ソース等の管理と、実行システムを作る部分

 構成管理は、ソース等の管理と、実行するシステムをつくる部分に大きく分けて考えられると思います(わけなくてもいいけど・・)

 で、ソース管理、つまり、ソースのバージョン管理としては、現在
  ・CVS
  ・Subversion
  ・Visual Source Safe
 などが使われ、

 実行するプログラムを作る(ビルドツール)部分では、
  ・make
  ・Ant
 が使われていると思います。

 使わない場合もあります。




■Antとmake

 ソースからビルドする一連の手続きを、
XMLで書いて実行するのがAnt
  テキストファイルで決まった形式で書いて実行するのがmake
 で、まあ、にたようなもんです(^^)。

 Antのつかいかたについては、

 JavaでHello World の Ant編
 http://www.hellohiro.com/ant.htm


 などが、分かりやすいと思います。




■バージョン管理ソフトを使わないケース
 バージョン管理ソフトのCVSなどは、ネットワークがすべてつながっている環境であれば、使いやすいと思います。

 しかし、開発者の一部とネットワークが切れている場合、どのようにソースを集配信するかについては、考えないといけません。
 あと、IT2などのとき、IT1レベルでのデータのやり取りは、どーするのか(CVSに載せてしまうとまずいけど、出来たものをやり取りしたい場合)なども、バージョン管理ソフトを使っていたとしても、考えなければいけません。

 ってことで、CVSやSubversionを入れれば、それでいいというプロジェクトもあるけど、結局集配信について、考えないといけない場合もおおいです。




と、簡単に構成管理をふれたところで、構成管理もおわり。
というか、プログラムもおしまい。

やっと次回から、テストの話にはいれます(^^;)
・・・プログラミング、長かったあ・・


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

サーブレット部分をパターン化、自動生成すると、生産性は上がると思う(1)。

2007-07-30 10:47:17 | Weblog

 サーブレットの開発で、よく、本に出ているように、

・getParameterで、個々の値をとってきて、
・そのあとで、処理して
・出力部分をそこでつくる、ないしはフォワードする

 とやると、サーブレット内でデバッグ・修正しないといけないし(これ、結構面倒。再立ち上げとか)、パラメーター変更のたびに修正が入る。最悪、画面やXMLと分離しにくくなる。




 で、そこで、
(1)画面からの入力は
    ・すべてのパラメーターをハッシュマップに入れる
    ・セッションも、そのハッシュマップに入れる

(2)処理は、そのハッシュマップを、POJOのクラスのあるメソッド
   にわたす(そのクラス、メソッドは任意。
   なので、そこの呼び出しは書く)

(3)画面への出力は
    ・JSPなら、セッションに値を渡す
    ・XMLなら、ハッシュマップに入れている値からとってくる
       →XML部分がJSPなら、セッションからとってくる

とすれば、POJOの呼び出しクラスをサーブレットでは書けばいいだけで、
あとは、POJOのクラスで処理内容を書けば(サーブレットとは関係無しに
ふつうのJavaプログラムとして書ける)いい。JUNITで確認して、OKに
なってからリンクすればいいし、画面のほうをすすめるには、サーブレット
にダミーの値をいれていけばいい。




で、これからちょっと、何回かにわたって、それについて書こうかなあと・・
おもってます。






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

Hello World程度のデータベース(その30:トランザクション処理)

2007-07-29 21:56:02 | 土日シリーズ

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

 いままで、三層スキーマ構造により、データベースを説明してきた後に、データベースと、外部プログラムとのつなぎ部分として、データベースのデーモンとJDBCについて説明しました。

 で、前回説明したJDBCのやりかたは、Selectの場合や、テーブルが1つの場合は、それでいいのですが、テーブルが2つ以上を更新する際、そのテーブル間に関連があると問題があります。今回は、その問題と、解決法としてのトランザクションの話、そして、それをJDBCで実現する方法です。




■テーブルが2つ以上の時、関連があるものを更新する場合の問題

 たとえば、受注テーブルと、受注明細テーブルがあったとき、
 受注テーブルだけ追加して、受注明細テーブルを追加しないと、受注があったことはわかるけど、中身がない(中身は普通受注明細に書かれる)のでわかんなーい(>_<!)となります。
 受注明細だけ更新されても、誰が注文を出したのか(というのは、普通受注テーブルに書かれる)わかんなーい(>_<!)ってことになります。

 受注テーブルを更新したら、必ず受注明細テーブルを更新し、
 受注テーブルの更新に失敗したら、必ず受注明細テーブルも更新しない

というように2つ同期をとって更新してくれないと困ります。

 ちなみに、そんなことはあるのかというと、受注テーブルを更新したあと、ディスクがいっぱいになった、受注明細テーブルを誰かが更新していて、ロックを解除しなかったため、タイムアウトになってしまった。。。など、ありえないことではありません。




■トランザクション処理

 そこで、2つ以上のテーブル処理を行う場合、トランザクション処理というのがあります。

 トランザクションをスタートして

 全部正常に更新できたら、「コミット」をします。そうすると、更新されます。
 逆に、「ロールバック」すると、トランザクションをスタートされた前にもどします
   =今まで更新したものは、なかったものにされます。

 このようにして、トランザクション処理を行うと、複数テーブルでも、全部更新するか、まったくしないか、どっちかにできて、矛盾なく処理できます。

 なお、いままでのように1つのテーブルしか処理しない場合、トランザクションは意識しなくてもいいっていえばいいわけです、
 そのようなために、データベースでは、自動コミットモードというのがあって、その場合には、こちらで指定しなくても、DBのほうで、テキトーなところで、コミットしてくれます。
 MySQLでは、デフォルトでは、自動コミットモードになります




■JDBCでのトランザクション処理

 では、実際にJDBCで、トランザクション処理をする場合は、どうするか?というと、
 こんなかんじ  
 http://www.hellohiro.com/jdbctransaction.htm

で行います(と、JavaでHelloWorldの内容を引用してしまう ^^;)

つまり、以下のとおり

・ドライバクラスをロードするところは同じ
・データベースへ接続するところもおなじ
自動コミットモードを解除します
・ステートメントオブジェクトを生成するのも同じ
・実行するときは、addBatchを発行して、executeBatchで実行します
成功時は、commit、エラー時は、rollbackします
・クローズ処理します。

(赤字は、トランザクション処理で追加になった処理です)




ってなかんじで、トランザクション処理はおしまい


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

放送局のような動画が作成できるサービス Zi-Bang!

2007-07-29 10:45:29 | Weblog

ここのスラッシュドットニュース
放送局のような動画が作成できるサービス Zi-Bang!
http://slashdot.jp/articles/07/07/28/0419217.shtml

と、そのコメントによると、

 スクリプトを書くと、それをCGで動かす,NHK技研のTVML(このブログのここにもかいた)をセガサミーがサービス化して、「Zi-Bang!」として、期間限定で提供するらしい。

その「Zi-Bang!」は、
ここ http://pr.zi-bang.jp/


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

大学でコンピューター工学を習ってもシステムが出来ない理由、逆に習わなくても出来る理由

2007-07-28 16:10:55 | Weblog

 大学で、情報処理学科で勉強しても、現場ですぐに役立たない、一方、情報処理学科でないひとが、コンピューターの会社に入って、それも情報処理学科の人と一緒に研修をうけて、SEとしてやっている。おかしいじゃないかという意見をきいた。

 おかしくないとおもう。

 情報処理学科で習うのは、コンピューターサイエンスであって、
 会社で、システム開発でSEが行う作業は、「業務のモデル化」であって、それは、情報処理学科とも、いや、理系とも関係ない、というか、もっというと、文系に近い。

 コンピューター工学は、コンピューターの(要素)技術をならう。
 CGとか、ネットワークとか・・・

 でも、システムを開発するとき、それらの要素技術を使ってもいいけど、使わなくてもいい(ローテクで固めてもシステムである。例:Excelのシートを組み合わせたシステム。Accessのサンプルプログラムみたいなシステム)とにかく、何かを使って、入力から出力をだすまでの、1つのモデル、世界観を作り上げる作業である。




 モデルに関しては、一般的な業務では、業務モデルで、これは、ウィリアムのいたずらが、オブジェクト指向で開発の最初から最後までの手順例でやっているような、業務の内容を言葉であらわし、そのことばを解析して、モデルを作り上げていく方法、これは、国語の世界。

 あと、仕訳を中心に解析していく、経理のモデルがある。

 理系的な分野では、数理モデルがある。

 ゲームの世界の世界観の作り方は、また違うだろう。

 このうち、情報処理学科でやるのは、数理モデルだが、業務で使うのは、一番初めの国語チックなモデルと、経理モデルがほとんどである。

 なので、そのモデルの作り方は、文系作業なので、理系の情報処理学科の人間も学ばないといけない。情報処理学科をでると、そのときのモデルに使える技術の幅が広がるというだけであり、モデルそのものをつくる勉強はしない・・・




 というか、このモデルそのものをつくる、世界観を作る作業は、文系理系関係なく、素養みたいなものがあると思う。この力のないやつがシステムを作ると、ちんどん屋みたいな、はでなシステムをつくって、外側のUIからきめて、結局、モデルの矛盾が結合テストで表面化して、破綻する。それは、情報処理学科をでてるかどうかには、何一つ関係ない。

 だから、情報処理学科を重視するような国や会社の政策は、当然、システム開発のどこかで破綻するリスクをもっている(ま、いい人に当たれば問題ないんだけどね・・・)。

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

失われた20年-ソフト業界は変わったのか? その3:第三次オンが終わったころ(3)。

2007-07-28 13:13:48 | 土日シリーズ

 20年位前、1980年代終わりごろから、最近まで、ソフト業界とかその周辺の変遷について、特にソフト開発の立場を中心に見て行く、新しい土日シリーズ「失われた20年-ソフト業界は変わったのか?」その第三回目。
 今、第三次オンが終わったころ(1980年代後半)について書いていて、今回は、そのころのソフト面について書きたいと思います。


 当時は、汎用機、オフコン、ワークステーション、パソコンがあったとかいたけど、それぞれのソフトに関して、以下ちょっと思い出したことを書いてみようと思います。





■汎用機ー独自OSに、いろんなソフト

 汎用機は、独自OSに、いろんな基本ソフト、アプリがのっているという状態でした。
 日本の汎用機も、たとえば、富士通だと、FSP,MSPのように、独自OSがあり、その上にのっているという感じです、
 なので、ソフトは、それぞれのメーカーが提供します。
 ソートマージのようなものや、帳票作成ソフト、
 言語としては、COBOL,FORTRAN,PL/Iなど(情報処理試験も、この3つ+アセンブラだった気が・・)

 通信は、IBMはSNA,富士通はAIMという体系がありました(今もあるか ^^;)




■オフコン-も、独自OSにいろんなソフト

 オフコンも同じく、独自OSに、いろんな基本ソフト、アプリがのっているという状態でした。
 で、お金を掛けると、いろんなものがのってきて、使いやすいけど、お金がないと、なにものってこなくて、使えねー(>_<!)という感じだったかな・・

 言語はCOBOLが主だと思います。

 オフコンの通信も、汎用機の体系に組み込まれる(同じものを使う)という感じです。




■ワークステーション、UNIXベース

 ワークステーションは、UNIXベースです。ということで、UNIXには、いろんなソフトがていきょうされているので、それが入っています。
 なお、EDIANとか、それこそ、ワークステーション向けのアプリケーションも出るのは出たのですが、1つごとのアプリケーションの値段が(買う人が少ないので)高く、アプリは、目的がある人が買うという状態でした(今もワークステーションは、そうかな?)

 言語はFortran,や(これは時代が下るかもしれないけど)C、でした。




■パソコン

 パソコンは、NECが、中心でした。
 NECのパソコンは、N88-BASICがまず立ち上がります。そして、ディスクにフロッピーを入れておくとそのOS(MS-DOSやDR-DOS)が、立ち上がります。

 ということで、言語的には、N88-BASICにはいってるBASIC,また、MS-DOS上で動く、FORTRAN,COBOLなど(PL/Iもあったかな・・)あと、MASM(アセンブラ)をやる人もいたけど。。

 ソフトは、JFTRANという、汎用用のフロッピー(IBMフォーマット)を、パソコン用のフォーマット(DOSフォーマット)に変えるようなユーティリティ、上記の言語のほかに、松(新松)、一太郎のワープロソフト、ロータス123の、表計算、桐のデータベース、The Card(だったとおもうけど)などのカード型データベースソフト、直子の代筆のようなユーティリティ?、あ、そうそう、ベビーメーカー(じゃなかったっけ?)という妖しいソフト(いや、コピーしてくれるんですけどね。。)などなど、いろいろでていた。

 もちろん、パソコンソフトも・・




というわけで、次回は、いよいよ、当時の開発方法論に、入りたいと思います。




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

Second Lifeがゲーム内でのギャンブルを禁止

2007-07-27 20:49:11 | Weblog

ここのスラッシュドットの記事
Second Lifeがゲーム内でのギャンブルを禁止
http://slashdot.jp/articles/07/07/27/054230.shtml

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


最近になって、Second Lifeにおける全てのギャンブル活動が禁止されたそうだ(The Inquirerの記事)。運営会社Linden Labsがブログでポリシーの変更を告知した。カジノ目当てでSecond Lifeを訪問するユーザからは非難の声が上がっているという。


ちなみに、その理由は

最近アメリカ合衆国においてオンラインカジノが違法化され、Second LifeもFBIの調査対象になるなどしたため、今回の決断に至ったようだ。

だかららしい


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

オブジェクト指向で開発の最初から最後までの手順例-その17:非機能要件

2007-07-27 19:48:05 | 開発ネタ

 オブジェクト指向でやる場合の最初から最後までの流れを、実際の例を挙げて書いていくシリーズ「オブジェクト指向で開発の最初から最後までの手順例」、いままでで、データ解析ルート、プロセス解析ルートが終わり、要求仕様における、機能要件がまあ、定義できました。
 で、ここの順番でいくと、今回は、「(6)非機能要件をまとめる」です。




■非機能要件は・・

 いままで、機能要件、つまり、誰が、何をするという、動詞と名詞でできる世界について語ってきたわけですが、それだけでは、世の中済まされず、「とってもはやく処理する」とか、「ぜんぜん故障しないようにする」とか、「とってもかんたんに入力できるようにする」とか、副詞・形容詞であらわされる要素もあるわけです。

 ただ、「とってもはやく」では、よくわかんないので、具体的に、ピーク時のトランザクション量が、どれくらい・・など、数値的に量をきめるわけですが、このような、業務内容では、語りつくせない、性能や、信頼性にかかわる部分が、非機能要件になるわけです。




■で、非機能要件にかんしては・・・
すでに、ここで挙げているように、「要求プロセス完全習得法」だと、


・ルック・アンド・フィール要件
・使用性要件
・パフォーマンス要件
・運用・操作要件
・保守性および可搬性要件
・セキュリティ要件
・文化的および政治的要件
・法的要件


なかんじで、非機能要件をあげています。




■チェックシートにまとめている会社も・・

 で、なんかで読んだ気がするけど、非機能要件は、チェックシートにまとめている会社もあるみたい。

 ま、そのほうが、もれは少なくていいよね。。

 そのチェックシートまでは書いてなかった気がするが・・

JIS X 0129-1 ソフトウェア製品の品質であがっている品質モデルも、利用できるかも(^^)




■今回は・・・

 今回は、ほんとうはいろいろあるんですけど、
 ま、省略(^^)




 ってことで、非機能要件はおしまい。



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

開発の初めから順番に書いていってみる その70:プログラミング(32)入出力の自動生成20

2007-07-27 15:54:20 | 土日シリーズ

 ひさしぶりに、シリーズ「開発の初めから順番に書いていってみる」の続きです。

 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 現在プログラミングで、画面の自動生成のイベントリスナー部分をやっています(バックナンバーは、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm

 前々回、つくるソース(イベント部分)について、前回、仕様書について書きましたので、今回は雛形についてです。




■雛形の考え方

 イベント処理クラスは、前回、前々回の話で、

・はじめに、アダプターから、1つの処理関数shoriProをよび
・shoriPro内で、仕様書のイベント処理を書く→自動生成

ということでした。
で、アダプター部分は、まあ、その画面では使わないアダプターでも、
一般的につかいそうなのは、全部挙げておく(そのほうが自動生成上、
かんたんだから)ということにしました。

なので、自動生成部分は、shoriPro内だけとなります。




■イベント処理雛形ソース

で、そのソースは、こんなかんじになります。
import org.eclipse.swt.events.*;

public class $#$CELL D2$#$_HandleEvent 
{
	$#$CELL D2$#$		g	= null;
	Object		ev;
	Selection	sl	= null;
	Key			key = null;
	Mouse		ms 	= null;
	/*
	 * 	画面つきコンストラクタ
	 */
	public	$#$CELL D2$#$_HandleEvent($#$CELL D2$#$ g)
	{
		this.g	=	g;
		sl	=	new Selection();
		key	=	new	Key();
		ms	=	new	Mouse();
	}
	
	/*
	 * 	セッター(画面)
	 */
	public	void	setGamen(gamen1	g)
	{
		this.g	=	g;
	}
	
	/*
	 * 	ボタンが押されたときの処理
	 */
	public class Selection extends SelectionAdapter
	{
		public void widgetSelected(SelectionEvent e) 
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("widgetSelected",e.getSource());
		}
	}
	
	/*
	 * キーボード処理
	 */
	public class Key extends KeyAdapter
	{
		public void keyPressed(KeyEvent e)
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("keyPressed",e.getSource());
		}
		public void keyReleased(KeyEvent e)
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("keyReleased",e.getSource());
		}
		public void keyTyped(KeyEvent e)
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("keyTyped",e.getSource());
		}
	}

	/*
	 * キーボード処理
	 */
	public class Mouse extends MouseAdapter 
	{
		public void mouseClicked(MouseEvent e) 
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("mouseClicked",e.getSource());
		}
		public void mouseEntered(MouseEvent e) 
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("mouseEntered",e.getSource());
		}
		public void mouseExited(MouseEvent e) 
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("mouseExited",e.getSource());
		}
		public void mousePressed(MouseEvent e) 
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("mousePressed",e.getSource());
		}
		public void mouseReleased(MouseEvent e) 
		{
			ev		=	e;
			Object o = e.getSource();
			shoriPro("mouseReleased",e.getSource());
		}
	}		
	/*
	 * 	すべての処理
	 */
	public void shoriPro(String eventCode,Object o) 
	{
		//  まだ、画面がセットされていなかったら、抜ける
		if ( g	==	null )
		{
			return;
		}

$#$REP 5$#$		//	仕様書に書いた条件分、ならぶ
		if ((eventCode.equals("$#$KETA C$#$") == true) &&	
			( o.equals(g.$#$KETA B$#$)== true) )
		{
			//	ここで処理呼び出し
			$#$KETA D$#$
			return;
		}
$#$REPEND A$#$
}

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




■画面部分の雛形の訂正

 画面部分の雛形は、開発の初めから順番に書いていってみる その65:プログラミング(27)入出力の自動生成15に書いてあるのですが、イベント処理部分が変わったので、ほんのちょっと訂正があります。それも、載せて置きます。
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;

import java.util.*;

public class $#$CELL D2$#$ {
	
	//	共通領域
	public HashMap	map = null;

	//	画面項目項目
	Display		ff;
$#$REP 5$#$
$#$IFKETA C,BUTTON$#$
	Button		$#$KETA B$#$;
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$	
	Text		$#$KETA B$#$;
$#$IFEND$#$
$#$REPEND A$#$

	/*
	 * 	生成
	 */
	public $#$CELL D2$#$(HashMap map)
	{
		this.map = map;
		map.put("$#$CELL D2$#$",this);
		draw();
	}

	/*
	 * 	表示
	 */
	public void draw()
	{
		
		//	フレームを作成する		
		ff	=(Display)map.get("display");

		f.setText("test");
		f.setSize($#$CELL F3$#$,$#$CELL H3$#$);
		f.setLayout(null);

		//	アクションを作成する
		$#$CELL D2$#$_HandleEvent al = new $#$CELL D2

$#$_HandleEvent();

$#$REP 5$#$
$#$IFKETA C,LABEL$#$
		Label $#$KETA B$#$ = new Label(f,SWT.NULL);
		$#$KETA B$#$.setLocation($#$KETA D$#$,$#$KETA E$#$);
		$#$KETA B$#$.setSize($#$KETA F$#$,$#$KETA G$#$);
		$#$KETA B$#$.setText("$#$KETA H$#$");
$#$IFEND$#$
$#$IFKETA C,BUTTON$#$
		//	ボタン作成		
		$#$KETA B$#$ = new Button(f,SWT.NULL);
		$#$KETA B$#$.setLocation($#$KETA D$#$,$#$KETA E$#$);
		$#$KETA B$#$.setSize($#$KETA F$#$,$#$KETA G$#$);
		$#$KETA B$#$.addSelectionListener(al.sl);
		$#$KETA B$#$.setText("$#$KETA H$#$");
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$	
		//	テキスト
		$#$KETA B$#$ = new Text(f,SWT.NULL);
		$#$KETA B$#$.setLocation($#$KETA D$#$,$#$KETA E$#$);
		$#$KETA B$#$.setSize($#$KETA F$#$,$#$KETA G$#$);
		$#$KETA B$#$.addKeyListener(al.key);
$#$IFEND$#$
$#$REPEND A$#$

		//	表示
		f.open();
//		al.disp(map);

	   	// ウィンドウが破棄されるまでループ
    	         while (f.isDisposed() == false)
    	         {
      		    if (ff.readAndDispatch() == false)
      		    {
        		       ff.sleep();
      		    }
	         }
	}
}

(上記< > ¥は、本当は半角。赤字は今回修正部分)
マウスを使うものがとくにないので、マウスのアダプタは使ってませんが・・
(つかうとすれば、追加する)




ということで、自動生成は、やっとおしまいです。
次回は、構成管理について、ちょこっとかきます。


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

ブログから情報を切り出し、セマンティックな検索をさせることについて

2007-07-27 14:43:40 | Weblog

ふと思ったことを、気の向くままメモしてるので、話の内容はめちゃくちゃですが。。

ブログの情報によるセマンティックウェブを作ると考えた場合、

(1)ブログの記事から重要語を取り出し
    ↓
(2)それにRDFなどをつかい、セマンティックな内容を定義し
    →この作業を自動化しないと、たいへんなことに?
    ↓
(3)それを検索に利用する・・・

と考えるとおもうんです。

 でも、こうすると、(2)の作業ってたいへんですよね・・




で、おもったんだけど、

(1)ブログの記事から重要語を取り出し

たときに、調べようとする単語のクラスが決まってしまえば、そのクラスが必要とする属性って言うのも決まってしまうと思うんです。

 たとえば、「イチロー」と書いてあったら、野球選手なわけで、野球選手として、検索上欲しい情報っていうのは、大体同じで、そーすると「野球選手」は、クラス化できると思うんですよ。

そこで、こういうルートを考える。

(1)ブログの記事から重要語を取り出し
      ↓
(2)重要語が、どのクラスに属するかチェック
      ↓
(3)クラスで必要となる属性それぞぞれにについて、
   係り受け関係から、属性値を拾い出す
      ↓
(4)それをセマンティック化すれば、セマンティックな検索も・・




 で、どういうクラスにどういう属性が必要になるかというのは、
 重要語の修飾関係から、どういう種類の言葉が修飾しているかをしらべると、ある程度自動的に出てきそう・・

 さらに、どんなクラスがあり、クラスの親子(上下)関係をきめるのは、Wikipediaとかを解析すれば、大体始まりは、何々はXXっていう書き方なので、それを、何々→XXのように、親子関係にしていき、処理すれば、クラスは自動的に出てきそう。




つまり、

・Wikipediaから、もののクラスの関係を出す

・ブログなどから、重要語を取り出し、その語が属するクラスを割り出す

・そのクラスの属性をもとに、かかりうけ関係から、重要語と属性値を割りだし

・それをもとにセマンティックな検索をする。

・クラスの属性は、重要語と共起する言葉から割り出す。

なんてかんじかな。。

すみません、まとまってない話で・・
ちょっとおもいついたことをメモしただけなので。。

 

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

YouTubeのコンテンツ一致チェックで気づいた!声紋の一致という手があったか!。。

2007-07-26 20:35:46 | Weblog

ここのニュース
角川グループ、YouTube活用へ 著作権保護ツール検証に協力
http://www.itmedia.co.jp/news/articles/0707/26/news030.html

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


角川のネット子会社がYouTubeの著作権保護ツール検証に協力する。ツールが有効に働くことが分かれば、YouTube上に角川グループ専用チャンネルを設置するなど、動画作品のプロモーションに生かす。


は、別にどうでもいいんですけど・・・


同ツールは、YouTubeに投稿された動画から、メディア企業が提供したコンテンツと一致するものがないかを、声紋などを元に調べるもの


そーっか、動画だと、声紋の一致っていう手があるよね・・・





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