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

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

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でシェアする