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

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

開発の初めから順番に書いていってみる その4:提案書(1)

2007-02-28 17:56:52 | 開発ネタ

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

 前回までで、RFPについて書いたので、そのRFPをうけて、提案する場合の、提案書についての話。

 まずは、提案書のフォーマットというか、書く項目について





提案書は、RFPがある場合とない場合、というか、お客さんがある程度提案してもらいたい内容が決まっている場合と、こちらから提案して仕掛ける場合とで、内容が違います。

 まず、「お客さんがある程度提案してもらいたい内容が決まっている場合」
 書く内容は、

1.解決すべき課題に対する提案
2.提案しようとしているものの概要
3.費用と期間
4.その他、提案を実行するに当たっての条件

を書くことになります。

前回のRFPのように、指定がある場合があります。
そのときは、それにしたがってください。そうでない場合は、

・あいさつ文
 →声かけてくれてありがとー、これから提案するよ!っていう文

・解決すべき課題
 →お客さんから聞いたことをまとめる

・解決すべき課題に対する提案
 →こういう問題に関して、こーいう風に解決するよ!っていうのを
  キャッチコピー風に。あんまり、細かく入り込まない。

・提案しようとしているものの概要
 →システム全体が分かり、かつ、上記の解決策が全部入っているっていうことが
  分かるような概略の説明

・費用と期間

・その他、提案を実行するに当たっての条件

・売り文句
 →なんか、つけたしたいこと(選んでもらえるのにプラスになること)があれば

・おわりのことば
 →ごせいちょうえりがと、ぜひぜひえらんでちょ!っていうの

っていう形になります。




 一方、こっちから提案を仕掛ける場合、

1.昨今の世の中を照らしあわせ、問題になりそうなこと、
  もうかりそうなことをあげて

2.それには、こいつがいいんだよ

 っていうふうに、述べていきます。。

 このとき、費用とか、期間とかは、初めの提案では言わないことが自然の気がします
(ただし、費用や期間が売りな場合などは、いうけど。。)

そのような場合のサンプルとしては、
ここ
6.提案書のフォーマット
http://www.msiocc.co.jp/107business%20planing%20tool.htm


が書き方としてまとまっていると思います。




なお、PowerPointの、新規作成で、「インスタントウィザード」を選んだとき、
セールス/マーケティングの「製品、サービスの販売企画」を選ぶと、これの中間のようなものが出てきます。

それでは、
・表紙
・目的
・顧客から提案された要件
・顧客ニーズへの対応
・費用分析
・優位性
・主な利益
・次のステップ

とありますが、はじめの、「お客さんがある程度提案してもらいたい内容が決まっている場合」でいくなら、、対応は、こんなかんじ

・表紙
・目的  = あいさつ文
・顧客から提案された要件 = 解決すべき課題
・顧客ニーズへの対応 = 解決すべき課題に対する提案 
    (提案しようとしているものの概要)
・費用分析 = 費用と期間 
     (その他、提案を実行するに当たっての条件)
・優位性 = 売り文句
・主な利益 = 売り文句(上とまとめたほうが。。 ^^;)
・次のステップ = おわりのことば

ってなかんじになります。なので、だいたいおなじだけど、ちょっと付け加えたほうがいいかな。




一方、「こっちから提案を仕掛ける場合」だと
・表紙 = タイトル
・目的  = あいさつ文
・顧客から提案された要件 = 世の中の課題とか、儲かりそうな話
・顧客ニーズへの対応 = それに対する提案 
・費用分析 = (売りなら、入れとく) 
・優位性 = 売り文句
・主な利益 = 売り文句。。。が果てしなく続く (^^;)
・次のステップ = おわりのことば

なんだけど、ある程度、具体案があるなら、「顧客ニーズへの対応」の後ぐらいに入れたほうがいいかも。。




ってことなんだけど、実際には、「こっちから提案を仕掛ける場合」は、営業の話なんで、次回から、「お客さんがある程度提案してもらいたい内容が決まっている場合」について、もうちょっとふかく、手順とかを考えてみたいと思います。


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

印刷のためサーバー側でPDF出力したくない場合と、クライアントでの出力方法

2007-02-28 13:41:46 | Weblog

 昨日、クライアント側で印刷する話をかいたけど、そもそも、クライアント側で印刷するときに、サーバーでPDFを生成して、それをブラウザから印刷させればいいじゃん!っていう話があると思う。

 そこで、その「サーバー側でPDF出力したくない場合」っていうのをまとめて、さらに、昨日はJavaの話をかいたけど、もっと簡単にできる方法があるので、そっちのほうを書いておこうと思います。




■サーバー側でPDF出力したくない場合

これはもちろん、
1.サーバーにPDF出力の負荷をかけたくない
 →大量の人がアクセスするから

っていうことがあるけど、それ以外にも、
2.FOP(たしかCocoon(きのう、こくーんってかいたやつ)もFOPを使ってたと思うので、それもふくむ)で表現できない場合、なんらかのライセンスが発生する。

 つまり、PDFを直接書き出すライブラリというのは、お金払うものが多いと思う。
 FOPなら、フリーでOKなので、それを使ってPDFにできるが、その場合、制約がある。
 これは、FOPは、

  ・XSLTにより、XMLを指定されたXSLに基づき、FOファイルに変換し
  ・どのように出力するか書かれたFOファイルをもとに
   FOPがPDFやプリンタ出力

 するので、FOが表現できないものには、PDF書き出しが対応できないから。




 で、FOについてなのだが、これは、文字の間(行ではなく、文字レベル)に浮動する枠を入れるケース(割注、縦中横で使う)や、浮動に伴い、枠のサイドに何らかの目印を付ける(マニュアルで、追加箇所のよこに右側に線が入っていたりする、ああいうやつ)ができない。

 最近はできるようになってるかもしんないけど、昔の規定では、規約上なかった気がする。

 ということは、これは、組版エンジンを作成して、それでFOで絶対位置指定をすることになるが、そこまでやるんだったら、昨日のように、Javaでプログラム書いたほうが早い。




 なお、印刷上、PDFで出力を保障するなら、相手方のフォント環境に依存しない、埋め込みによるPDF出力が必要になる。(フォント自体は特殊なフォントを使わない場合には関係ないが、外字は、地名人名などでありえる)

 また、イメージもPDFにいれることになる。この結果、処理は早くても、データ転送に遅いってことはありえる。。っていうか、PDFの場合、プログラムの起動をまってしまうのよねえ(-_-)




 で、逆に、クライアントでやる場合、Javaプログラムで書かない場合だけど、簡単なのは、こんなかんじ。

・クライアントのマシンに、HTTPサーバーを立てる。
 →そうすると、http://127.0.0.1でアクセスできる。かならず
  (ローカルのサーバーのIPアドレスは、そうきまってる)

・そこのCGIでも、サーブレットでもいいけど、そいつが、プリンタから
 印刷するようにする

・ブラウザで、いろいろ入れてもらって、最後印刷するときに、
 印刷ボタンのとび先を、
  http://127.0.0.1/cgi-bin/そのローカル印刷プログラム
 に飛ぶようにする。そーすると、ローカルのHTTPサーバーに行くので印刷できる

これ、HTTPサーバーでなくても、あるプログラムを立ち上げると、ソケットで7777が開いているっていうようにしておけば、とびさきをhttp://127.0.0.1:7777/にしておけば、そのプログラムが呼び出される。

 このばあい、HTTPサーバーをインストールしなくていい(このプログラムをたちあげるだけ)でいいので、こっちのほうが、べんりかもね。。



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

YouTube規制回避のためニワンゴ、動画投稿サイト開始、それよりミラーサイト作ったら?

2007-02-27 22:32:30 | Weblog

ここのGIGAZINEのニュース
ニワンゴ、YouTube規制回避のためニコニコ動画向け動画投稿サイト開始予定
http://gigazine.net/index.php?/news/comments/20070227_nicovideo/

やここのニュース
ニワンゴ、動画投稿サイト開始へ・1週間内に
http://it.nikkei.co.jp/internet/news/index.aspx?n=MMITba003026022007

によると(以下斜体は、上記GIGAZINEの記事から引用)

22日夜に3000台以上からのDDoS攻撃を受けてサービスを停止したところに、YouTubeからアクセスを規制されていることが判明してベータサービスを終了したニコニコ動画ですが、サービスを提供しているドワンゴの関連会社「ニワンゴ」が、1週間後を予定しているニコニコ動画の新バージョンの公開に向けて、動画投稿サイトを自社で開設するそうです。


動画投稿サイトを自社で作るんですか。。。
もう、すでにいっぱいある気が。。(^^;)
それより、YouTubeの動画を、自社のサーバーにダウンロードしてきて、公開してくれる、いわゆるミラーサイトができてくれると、ありがたい気がする。。。

そうすれば、YouTube一極集中にならないし。。

オープンソフトのミラーサイトなら、JAISTとかがやりそうだけど、
YouTubeのミラーサイトは、学校や大手企業では、絶対考えられないので、
ニワンゴぐらいしか、やりそうなところは。。ない気が。。

(もっとも、YouTubeの動画をKeepVidみたいなのをつかって、動画のファイルにおとして、それをどっかの掲示板に貼るっていうのが、自然発生的におきる可能性はないわけではないが。。)

それとも、動画投稿サイトを自社で開設するっていうのは、そういう意味なのかな?
つまり、YouTubeのRSSを読んで、更新されていたら、自動的にダウンロードして、ファイルを変換し、自社サイトに保存する、そういう「動画投稿サイトを自社で開設する」っていう意味なのかなあ。。。?

でも、そーすると、著作権の関係とかで問題になんないかなあ。。

って、YouTubeの著作権!?(^^;)



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

Javaアプリでプリンタから出力する方法を書かないと、いけませんよね。。。

2007-02-27 17:32:37 | JavaとWeb

 そうそう、前の話、それ以前に、「Javaアプリでプリンタから出力する方法」を書いてなかった。

ここのサイト
7.3 Printable での印刷
http://www.ueda.info.waseda.ac.jp/~yanagi/docs/ja/guide/2d/spec/j2d-print.fm3.html


などが、参考になると思います。




■概要

つまり、方法は

1.java.awt.print.Printableを実装して、
  そこのprintメソッドに、ページに応じて、出力内容を書く。
  →引数で、java.awt.Graphicsが、わたってくるから、指定されたページの内容を、
   そのGraphicsを使って、美しく書いてくれ。

  →実際に書くページは、Printable.PAGE_EXISTSを返し、
   存在しないページは、Printable.NO_SUCH_PAGEを返す。

2.java.awt.print.PrinterJobを、PrinterJob.getPrinterJob();で取得し
  上記1のクラスを生成し、それを、取得したPrinterJobのsetPrintableで
  セットする

3.PrinterJobのprintDialog()でダイアログをだして、OKのとき(trueが帰ってくる)
  取得したPrinterJobのprint();を呼び出す

 そうすると、書き出します。以下、サンプルです。




■仕様

 あるダイアログがあって、b1ボタンで終了、b2ボタンをクリックすると
  ・プリンターのダイアログが出て、
  ・OKだと、1枚目に「みほん開始」、
       2枚目に「2ページ目」「ちゃんとかけた?」
   と出力する。




■ソース

●1.java.awt.print.Printableを実装したクラス(TestPrint)
import java.awt.print.*;
import java.awt.*;

public class TestPrint implements Printable 
{
	/*
	 * 	ページ出力
	 */	
	public int print(Graphics g, PageFormat pf, int pNo)
				throws PrinterException 
	{     
  		switch(pNo)
  		{
  		case	0:		//	1ページ目
    		         g.drawString("みほん開始", 100, 100);
  			break;
  		case	1:		//	2ページ目
    			g.drawString(Integer.toString(pNo+1)+"ページ目", 100, 100);
    			g.drawString("ちゃんとかけた?", 100, 300);
  			break;
		default:		//	それ以外のページ
			return Printable.NO_SUCH_PAGE;   
  		}
		return Printable.PAGE_EXISTS;   
	} 
}

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

●2以降(ダイアログの一部)

 ダイアログの一部で、ボタンを押されたところの処理のみ、書き出します。

   else if ( o.equals(b2)== true)

の中が、今回の処理です。
 なお、上のほうで、import java.awt.print.*;をしています。
		/*
		 * 	ボタンが押されたときの処理
		 */
		public void actionPerformed(ActionEvent e)
		{

			Object o = e.getSource();

			if ( o.equals(b1)== true)
			{	//	終了
				ff.dispose();
			}
			else if ( o.equals(b2)== true)
			{	//	印刷

				//	初期化と設定
				PrinterJob pj = PrinterJob.getPrinterJob();
				pj.setPrintable(new TestPrint());

				//	ダイアログを表示
				if (pj.printDialog()) 
    				{ 
    					//	印刷するとき
					try
					{
						pj.print();
					}
      					catch (Exception e2)
        					{
        						e2.printStackTrace();
	       				}
				}     
			}
		}

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



■参考にしたサイト

7.3 Printable での印刷
http://www.ueda.info.waseda.ac.jp/~yanagi/docs/ja/guide/2d/spec/j2d-print.fm3.html





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

JavaアプリでHTMLのフォームを表示、クライアント側で印刷やファイル保存する方法

2007-02-27 15:51:54 | JavaとWeb

 これ、いま考えているだけで(できるかどうか、確かめたりしてるけど)、まだちゃんとしたやり方ではないんだけど、一応、自分へのメモということでかいてみる。。




 HTMLのフォームを使って印刷するというのなら、最後、PDFで出して、それを印刷すればいい。こくーんを使って(こくーんの中にFOPがはいってるので)、XMLかいて、XSLでいろいろ指定して、XMLからPDFにするようにして、そいつをクライアントで受け取れば、後はそれを印刷するだけでOK。これでばっちり。

 でも、そーするとサーバー負荷が高いとか、結果に応じて、クライアント側で、印刷内容を変えたいとか、クライアント側でファイル保存したいとか言うと、できなくなってくる。

 そこで、Javaアプリで、HTMLのフォームを表示して、最後、クライアント側で印刷やファイル保存したいということがあるかもしんない。その方法を考える。




 この場合、Javaアプリで、JEditorPaneをつかって、HTMLを表示する。
 フォームにも対応している(がJavaScriptには対応していないので、フォームは、Submitを押してもらって次の画面にいくことになる。次の画面は、読み込まれて、JEditorPaneにはいってくる)

 そして、最後、いんさつするときに、
 「アプリの印刷ボタンを押してください」
 とか書いて、印刷内容をinputタグのタイプhiddenで埋め込んでおく(そうすると見えない)

 Javaアプリには、JEditorPaneの表示エリアのほか、印刷ボタンも、JButtonで作っておいて、そのボタンが押されると、JEditorPaneの表示エリアの内容をgetTextを使って取得するようにする(そうすると、送られてきたHTML全文が取得できる)

 そのあとで、そのHTMLのヘッダを見て、印刷するのでなければエラーメッセージを出し、印刷するのであれば、該当するHTMLの箇所(hiddenで埋め込んでおいたやつ)をもとに、Javaアプリで印刷したり、更新したりする・・・




 という方法がいい方法かどうかは分からないけど、
 なんとなくできそうだ。。(^^)


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

システム化する対象の業界知識は必要か?

2007-02-27 13:59:20 | 開発ネタ

 要求仕様書を作成する際、機能要件(=業務関係)の内容はヒアリングや帳票をもとに、作成することになっている。っていうことは、開発する業務に関して、知識がなくても、ヒアリングするからOKっていうことになってしまう。

 実際、たとえば、会計システムを作成するのに、まあ、簿記2級程度はとっている人がやるにしても、簿記1級、全経上級や公認会計士、税理士が設計するとは限らない(簿記2級と1級では、かなり違い、この間に壁があるといわれる。この壁を、TACは、うまく飛び越えるワザを教え、大原は、壁を叩き割る力をつけさせるという冗談があるほど)。
 介護システムを作るのにも、元ケースワーカーのSEがなるとは限らない(ただし、元ケースワーカーのSEが開発するケースは、実際あるようだ)し、ケースワーカーでも、国保連とのやり取りは知らない(システムにまかしている)。

 じゃあ、業務知識はいらないのか?という話。。




 はっきりいって、ウィリアムのいたずらは、一定レベル必要で、これによって、システムの出来がきまってしまうとすら思う。

 理由は以下の3つ。

・ヒアリングですべてのことを聞き出すことはできないし、正しいとも限らない
・そもそも、ユーザーがすべてのことを知っているわけではない
・システム化するとよくない方法をユーザーが利用している場合がある。

以下、ちょっと説明します。



■ヒアリングですべてのことを聞き出すことはできないし、正しいとも限らない

 これは、時間がないので、ヒアリングですべてのことを聞き出すことは出来ないということもあるけど、それ以上に。。

 上司が現場の実情を知らず、で、上司にヒアリングをかけてしまうと、正しい内容ではない。逆に、現場の人のヒアリングをかけると、全部を知っているわけでなく、テキトーにやっているところ(お互いの役割の境界など)は、抜け落ちてしまったりする。

 また、話し手が、当たり前のことと思うことは話してくれないこともある(でも、一般的ではないということも。。)

 なわけで、かりに時間があったとしても、すべてを聞き出せない。

 なので、業界的に、どーやっていて、どーいうシステムに落ち着くというのをしらないと、作れないこともある。




■そもそも、ユーザーがすべてのことを知っているわけではない

 たとえば、さっき、ケースワーカーという話が出たので、介護について。
 介護のシステムを作ろうとしたとき、介護保険の部分に関して、どーいうことをしましたよっていう情報を国保連っていうところに送らないといけない。そーしないと、保険部分のお金がもらえない。
 で、この送るインターフェースについて。。。

 ユーザーは、国保連のソフト、または手書き、ないしは、介護用のパッケージソフトをつかっているので、知っているわけはない。。。。

 こまってしまいます。いきづまってしまいます。。。

 ちなみに、上記のインターフェースは、ここ
介護保険システム情報
http://www.kokuho.or.jp/kaigosystem/index.htm

にあって、このほか、介護保険の単位数表とか、いろんな開発上の最新情報が、
国保のひろば http://www.kokuho.or.jp/
にのっているんだけど、こんなこと、ユーザーは知らない。

 常識として知らないと、そこで開発はとまってしまう
 (フォーマット、分かりませんから ^^;)
 それぞれの業界によって商慣行、伝票(統一伝票でも、業界で違う)があり、ある程度知らないと、開発上、とまってしまうこともある(ユーザーはやり方はわかるが、その規定はどこにあるのかまで知らないこともある。統一伝票と印刷屋に注文すればできてしまうので、業界ごとにいろんな統一伝票があって、それぞれ決まりがあるとまでは、しらないかも)





■システム化するとよくない方法をユーザーが利用している場合がある

 POSデータなどで、商品マスタを消さないとかあるそうだ。
 参照例外が起こってシステムが動かなくなるのを防ぐためだが、
 そんなことやってたら、パフォーマンス悪くなる。

 消さなきゃいけない(もちろん、参照冷害起こらないようにDBをちゃんとして)

 あと、特売商品を、別商品にしてしまうとか
 (こうすると、現場的にはやりやすいが、商品の集計上はこまる >_<!)

 そー言う場合、ある程度、商品マスタのコード体系や保守方法をしらないとこまる。
 コード体系は、取扱商品に関連するので、これは、業界知識がないと困る
 (たとえば、洋服関係のマスタの場合と、生鮮3品のマスタの作り方の違いとか)




 ってことで、ある程度の業界知識は必要かも。。



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

390万人の「仮想空間」上陸 米セカンドライフ、4月にも日本語版。問題は金儲けだ!

2007-02-26 23:15:30 | Weblog

以下の痛いニュース
390万人の「仮想空間」上陸 米セカンドライフ、4月にも日本語版
http://blog.livedoor.jp/dqnplus/archives/928486.html

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


さまざまな店舗、大学、美術館、リゾート施設、カジノや宇宙センターなどが並ぶ巨大仮想空間「Second Life(セカンドライフ)」が、4月にも日本語版サービスを始める。世界の390万人以上が住民登録しているセカンドライフの日本上陸とあって、広告会社やIT(情報技術)各社が、この中での企業支援ビジネスに乗り出すなど、動きがあわただしくなってきた。


で、そこまではいいんだけど、問題は


「リンデンドル」と呼ばれる仮想通貨が流通し、それを実際の米ドルに換金できることだ。つまり、自分でつくった服や家を売れば、最終的には現金収入が得られる。不動産売買で昨年、日本円にして1億円近く稼いだ例もあるという。


金儲けのチャンス。。。なのかあ??


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

Windows採用の「現金自動預け払い機」(ATM)がたいへんなことに(^^;)

2007-02-26 18:06:41 | Weblog

ここのGIGAZINEの記事
Windowsを採用したATMでペイントが起動、むちゃくちゃなことに
http://gigazine.net/index.php?/news/comments/20070225_windows_atm_paint/

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


ATMのOSとしてWindows XP embeddedが2003年頃から採用されているわけですが、何をドコでどう間違ったのか、何者かによってペイントが起動させられ、利用不能な状態になっています。


だそうです。リンク先にその様子の写真があります。


これは映画館に設定されているATMのひとつで、どういうわけかタスクバーが表示されてしまい、そこからペイントを起動させられてこんな事になってしまったようです。


だそうです。
そもそも、アプリは除いておいたほうが。。
って、タスクバーが出ちゃう時点で、コマンドプロンプトだして、いろんなことされちゃいそうな気がするけど、大丈夫なのかなあ・・

その記事にもあるけど

明らかにまずいのでは……。


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

ネットワークの予備の備品は重要かもお。。。

2007-02-26 17:12:44 | Weblog

いやー、今日は、お仕事もらっている会社にいったら、
ネットワークが壊れてる(>_<!)
(ハード的に壊れたようだ)。

でも、そこに夕方まで居ないといけない。。

というので、ネットができなかった。。

いろんなところに行ってお仕事する
ウィリアムのいたずらは、自分の必要な情報
(プログラムの仕方、サンプルなど)を、ネットの上に
置いて(ブログとかで公開したりして)いる。

ネットがつながんないと。。。進まないぴょお(;_;!)

やっとつながった(^_^!)

ネットワークの予備の備品は重要かもお。。



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

YouTubeの動画の利用、RimoがOKで、ニコニコ動画が、アク禁なのは?

2007-02-25 22:00:06 | Weblog

ニコニコ動画が、ここ
ニコニコ動画ベータサービスの終了と新バージョンの開発開始について
http://www.nicovideo.jp/

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

たまたま、ほぼ同時期にyoutubeより、ニコニコ動画からのアクセスの一部を遮断されていることが分かりましたので、一旦ニコニコ動画ベータサービスを終了させていただくことにしました。


というように、YouTubeからアクセス禁止になってしまったのに、

おなじようにYouTubeの動画をつかっているRimoが、ここ
YouTube創業者も絶賛! はてなが“Rimo”で狙うこと
http://ascii.jp/elem/000/000/018/18215/

によると、アクセス禁止どころか絶賛されている。。。この差は。。?


うーん、これは、ニコニコ動画をやるニワンゴ、
You Tubeに貢物をもって、朝貢しないといけないんじゃないでしょうか(^^)
そーすると、きっと、金印がもらえて、サービスが使えるようになるんですよ。。

きっと。。。










。。。ちがうだろうな(^^;)

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

Hello World程度のデータベース(その8:概念スキーマ(6)第二正規形とは)

2007-02-25 14:23:33 | Weblog

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

現在、正規化についてやっています。
データを1箇所にだけ現れるようにする手法が正規化で、正規化のレベルとして、第一正規形から第五正規形まであります。でも、普通DBを作るには第一~第三正規形まででよく、それは、以下のとおりです。

第一正規形:繰り返しをなくす
第二正規形:エンティティごとにまとめ、主キーを決め、
   主キーが決まると、他の属性値の値がきまるようにする
    →これを主キーに対して完全関数従属といいます
第三正規形:主キー以外で、ある値が決まると、他の値が決まってしまう

 前回までで、第一正規形は終わりました。なので、今回は第二正規形です。




■第二正規形の定義

 第二正規形は、「主キーに対して完全関数従属」にするということです。

 つまり、「主キーが決まると、他の属性値の値がきまるようにする」ように、テーブルをわけて、主キーをきめます。
 実際にはテーブルというよりは、エンティティごとにわけるわけなのですが。。

 なにいってるんだ?っていう状態だと思うので、もっと具体的に書きましょう。

たとえば、受注データがこんなふうにあったとします。

  受注日:2007年2月25日
  おきゃくさん:ウィリアムのいたずら商事
  お客さんの住所:東京都杉並区
  お客さんの電話番号:119番(うそです。かけないでね ^^;)
  受注商品:特注のすっごい機械
  納品日:2007年3月1日
  納品場所:お客さんの住所と同じ
  支払い方法:代引き(って、どんな機械だよ ^^;)
  価格:30000円(って、なおさら、どんな機械だよ ^^;)

ま、どんな機械なのかはおいておいて、このとき、

おきゃくさん:ウィリアムのいたずら商事
お客さんの住所:東京都杉並区
お客さんの電話番号:119番(うそです。かけないでね ^^;)

は、おきゃくさんが、ウィリアムのいたずら商事なら、住所と電話番号はきまってしまいます。逆に、お客さんが変われば(いたずら興業とか)、住所と電話番号はかわります。

 このとき、もし、お客さんっていうエンティティを作って(実際には、取引先っていうけど)そこに、住所、名前、電話番号をいれて、エンティティの要素を区別できるように番号を振ると、こんなかんじになります。

<<お客さん>>
  お客さん番号:1番
  おきゃくさん:ウィリアムのいたずら商事
  お客さんの住所:東京都杉並区
  お客さんの電話番号:119番(うそです。かけないでね ^^;)

そして、元のテーブルには、
<<受注>>
  受注日:2007年2月25日
  お客さん番号:1番
  受注商品:特注のすっごい機械
  納品日:2007年3月1日
  納品場所:お客さんの住所と同じ
  支払い方法:代引き(って、どんな機械だよ ^^;)
  価格:30000円(って、なおさら、どんな機械だよ ^^;)

のように、お客さん番号だけ入れておけば、いいことになります。
このように、エンティティ(お客さん)ごとに属性値をまとめて、主キー(お客さん番号)をふって、エンティティをわけ、元のテーブルには、その主キーだけを入れておく操作が第二正規形になります。

 このとき、元のテーブルにはいった、他のテーブルの主キー(上記の例だと、受注テーブルのお客さん番号)を、参照キーとか、外部キーとかいいます。




■なぜ、こんなことをするのか?

もし、さっきの例で、こんな受注データもあったとします。
  受注日:2007年2月25日
  おきゃくさん:ウィリアムのいたずら商事
  お客さんの住所:東京都杉並区
  お客さんの電話番号:119番(うそです。かけないでね ^^;)
  受注商品:特注のすっごい機械を入れる棚
  納品日:2007年3月1日
  納品場所:お客さんの住所と同じ
  支払い方法:代引き(って、どんな棚だよ ^^;)
  価格:1200円(って、なおさら、どんな棚だよ ^^;)

こうすると、機械の受注と棚の受注のどちらにも、

  おきゃくさん:ウィリアムのいたずら商事
  お客さんの住所:東京都杉並区
  お客さんの電話番号:119番(うそです。かけないでね ^^;)

っていうデータが入ってしまいます。
 まあ、このうち、名前は、しょうがないかもしれません。じゃないと、どのお客さんからの受注だかわかんないから。
 でも、住所と電話番号は、完全にダブってます。
 これは、データベースが1事実1箇所にするという話と食い違ってくるので、まずいです。そこで、受注エンティティには、お客さんが特定できるお客様番号だけを入れて、それ以外の情報は、お客さんエンティティに入れようっていう話です。




■主キーとは、一意とは?

 ここで、名前でない理由は、同じ名前の会社があると困るからです。
 そこで、主キーとして、お客様どうしでダブらないように番号を振ってしまい、その番号を名前の変わりにいれます。
 主キーとは、エンティティ内で、それぞれのレコード(構成員。。。なんか危ない表現だな ^^;)において、ダブらないように振った項目であって、この項目は、構成員がダブらないで、特定できるのであれば、複数項目をまとめて、主キーとすることがあります。
(たとえば、課テーブルなどでは、部番号+(部内の)課番号で主キーってこともあります)
 なお、レコードにダブらないように振っている状態を(1つに特定できるということで)一意になっているというように言います。




 ということで、次回から、具体的に第二正規形にする方法と、その際の注意点について書きたいと思います。



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

データベースからWebや本、雑誌などを自動生成するDB編集の考え方(その2:手順)

2007-02-24 23:16:19 | 土日シリーズ

土日シリーズで、土曜日に書く、データベースからWebや本、雑誌などを自動生成するDB編集の考え方です。

 前回は、レイアウト、小組、素材としての文章(テキスト)、線画、イメージについて説明しました。
 今回は、自動生成する手順について説明します。




■手順

 手順は、こんなかんじ

(1)ページ内に、どのように小組をおくかのレイアウトを決定します

(2)小組の雛形を作成します

(3)素材を作成します

(4)それらをもとに、自動生成します

以下、これらの説明をします。




■(1)ページ内に、どのように小組をおくかのレイアウトを決定します

 ページ内の、どこに小組をおくかを決定します。

 これは、基本的な方針のみを決める場合もあるし(たとえば、1ページに小組たて3個、横4個など。。。FromAやHotPepperのような雑誌の場合)、1ページごとに、レイアウトを決める場合もあります。

 このレイアウトは、レイアウトソフト。。。っていうのは、日本で、そーそーないとおもうので、実際には、DTPソフトをつかい、枠を切って、その枠内に小組名などを書いて、表現します(この場合、DTPソフトには、たいていタグ書き出し機能があり、タグ書き出ししたものが、あとの自動生成でつかえたりする)




■(2)小組の雛形を作成します

 つぎに、小組内のレイアウトということで、1小組内のどこにテキストをおくか、どこに画像をおくかを決めます。
 これを、DTPソフトで作って、ライブラリの中に入れる(素材が入るところを枠だけ切っておく)場合もあるし、レイアウトと同じように書き出す場合もあります。
 そもそも、DTPソフトであらかじめ作れないものもあります(枠の位置が、内容によって浮動する場合)

 なお、小組は1種類ではなく、条件によって変わる場合もあります。




■(3)素材を作成します

 テキスト、線画、イメージを作成します。
 作成したものは、ファイルで保存(CSV、XML)する場合もあるし、DBに入れる場合もあります。

 線画、イメージに関しては、ファイル名指定かな?




■(4)それらをもとに、自動生成します

 あらかじめ自動生成プログラムをつくっておいて、(1)、(2)、(3)のデータをもとに、タグつきテキスト、またはXMLを生成し、それを読み込ませるか、あるいはデータから直接DTPソフトを起動して枠を生成し、素材を張り込んでいきます。

 自動生成プログラムの手順は、こんなかんじ

・まず、素材をもとに、小組を生成します
  小組の雛形に条件がある(表題1行用、表題2行用など)は、条件チェックし、
  小組をえらび、その素材を流し込んで、1つ分の小組を生成します。

・できた小組みをレイアウト上におきます。

・結果をファイルに書き出す(この場合、DTPソフトに流し込む作業がある)か、自動的にプログラムがDTPソフトに書き出します。




 次回は、その自動生成プログラムの出力となる、流し込みファイルについてなどについて取り上げたいと思います。


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

フリーの教育リソースとカリキュラムがあるサイト

2007-02-24 20:46:44 | Weblog

海外のものなんだけど。。まあ、メモ
Curriki
http://www.curriki.org/


ここの左上にある、Browse by Subjectをみると、いろんな教科がでてくるので、それをクリック。

一覧が出てきたら見たいものの「VIEW」をクリックすると、そのページに行って、上のほうからダウンロードできるみたい。
ただのメモなので、たいしたはなしでなくてごめんなさい m(__)m

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

有名ブロガーの情報の信憑性は知人・友人よりも低いそうな。。。

2007-02-24 16:26:48 | Weblog

ここの記事
有名ブロガーの情報の信憑性は知人・友人よりも低い--Web広告研究会調べ
http://japan.cnet.com/news/media/story/0,2000056023,20343891,00.htm

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

 CGMのサイトに掲載された情報への信憑性については、友人や知人など顔の分かる相手や、投稿数の多い掲示板などへの信頼が高く、逆に有名なブロガーの情報や、トラックバックの数が多いブログなどへの信憑性は低くなっている。

だそうな。
ちなみに、本文中のCGMとは個人が情報発信できるサイト「CGM(Consumer Generated Media)」のこと

まあ、海外では、Wikipediaからの引用をテストなどで禁止した大学もあるし、ネットを信じちゃーいけませんぜ(^^;)ってことかな。。

あ、やっぱ、このブログも、しんじてない。。
。。。そもそも、有名ブログじゃないだろって(^^;)



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

「動画に書き込み」だって!

2007-02-23 22:58:08 | Weblog

おお、さすが松丸アナのトレンドたまごだ(^^)
きのうのトレタマは、

動画に書き込み
http://www.tv-tokyo.co.jp/wbs/2007/02/22/toretama/tt.html


でした。どういうものかとういと(以下斜体は上記サイトより引用)

小型カメラが内蔵、市販のビデオカメラを接続してもOK。撮影した動画をその場で液晶画面に再生しながらタッチペンで文字や図形などを書き込むことができる。音声も追加で付け加えることが可能。ディスクに保存して何度でも再生ができる。持ち運びできるサイズで、USBメモリーやパソコン等の外部メディアにも保存ができ、ネットワーク接続も可能。


だそうです。
すげー、再生しながらでも、書き込める。。

松丸アナの取材報告(注意:動画です)
http://www.tv-tokyo.co.jp/wbs/2007/02/22/movie/mayu.ram


でもいってましたが、研修だけでなく、スポーツでもつかえそうですな。。
うるぐすで、サッカーの武田さんが、昔「ここのスペースが開いている」
とかいって、動画に書き込みを入れてたけど、あーいうことが、テレビでなくても
すぐにできると。。

おお、さすが、スポ魂月曜担当の松丸アナです!!
(って、うるぐすとは、違うチャンネルなんだが ^^;)


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