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

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

IT Doesn't matter ってことなんでしょうね。日本のIT投資意欲最下位

2007-05-20 18:59:27 | Weblog

そりゃー、そーだろーなー、テレビのCM(NTTコミュニケーションズ)で

「ビジネスにおける、ITの役割はひとまず終わろうとしています」

っていって、画面には

「さよならIT」

って出てくるぐらいだしなあ(ここの3段目真ん中の広告、広告をクリックするとすぐにCMが始まり、音が出ます)、

IT優等生といわれたイトーヨーカドーは、結局ITコストがかさみ、
セブンイレブンと合併して、セブンアンドアイという、自分たちの名前が
後になるという屈辱を味わわなければならなくなった昨今、

「IT投資に意義があるのか?」と懐疑的にならないほうが、おかしいよね。

ここのニュース
日本のIT投資への意識は世界最下位、ガートナー調べ
http://pc.watch.impress.co.jp/docs/2007/0518/gartner.htm

先進国の中で、日本が最下位ということですが、一般に先進国のIT投資意識は低いみたいです。1位インド、6位中国です。

 先進国は、一通り投資したから低いんでしょうね。
 ガートナーグループの人などは、コンピューター化を進めたほうが良いという意見のように見えるけど、そーなのかなあー、まじコンピューター化のコストが足引っ張ってて、過剰なコンピューター化は経営上好ましくないと思うが。。

 で、今のコンピューター化は、過剰に近いと思う(Excelマクロで十分っていうのも、プログラムつくってる)。コンピューター業界の人は気がつかないだけで、コンピューターの投資効果のなさや問題を、経営陣は気づき始めてしまったということだろう。
 日本の場合、それより通信への投資のほうが儲かるし。。。

 まー、国も、それに早く気づいて、IT先進国家になるんじゃなくって、ITでみんなが幸せになるような国家を目指して、余計な開発に税金を投入しないようになってくれると、税金を納める国民は、ありがたいんだけどね。
 国でもROEを求めて、投資に見合う利益(受益者負担分+コストカット分)がないときは、開発をしないという立場が大切だよね。

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

Hello World程度のデータベース(その20:外部スキーマ(4)SQLその3)。

2007-05-20 15:04:46 | 土日シリーズ

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

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

 で、SQLについては、大体こんな内容というのを前回やりました。
●レコードの検索   select
  ・1つの表を条件をつけずによむ
  ・WHERE句
  ・ORDER BY
  ・GROUP BYとHAVING
  ・2つ以上の表
  ・結合あれこれ(外部結合、内部結合、自然結合、自己結合)
  ・副問い合わせと限定述語
  ・UNION、INTERSECT,EXCEPT

●レコードの追加   insert
  ・レコードの追加
  ・SELECT文を利用した複数行の追加

●レコードの削除   delete
  ・レコードの削除(WHERE句も含めて)
  ・副問い合わせを使ったもの

●レコードの更新   update
  ・レコードの更新(WHERE句も含めて)
  ・SET句における元の値の利用
  ・副問い合わせを使ったもの

●その他
  ・コミットとロールバック
  ・参照制約
  ・トリガーとストアド・プロシージャ(ストアド・プログラム)


今回から説明するのですが、はじめにselectの1つの表の部分である

・1つの表を条件をつけずによむ
・WHERE句
・ORDER BY
・GROUP BYとHAVING

について説明してみたいと思います。




■1つの表を条件をつけずによむ

まず、以下のようなテーブル,SHAIN_TBLがあったとします。
CREATE TABLE SHAIN_TBL (
  SHAINID INTEGER NOT NULL,
  SEI VARCHAR(20), 
  SEI_KANA VARCHAR(30),
  MEI VARCHAR(20) ,
  MEI_KANA VARCHAR(30),
  NYUSYANEN  INTEGER,
  KYOYU_SYUBETU INTEGER,
  KYUYO  INTEGER,
  PRIMARY KEY(SHAINID)
); 

上記のCREATE TABLEのみかたは、ここ

このとき、このテーブルのなかにあるデータをすべてだしたければ、

SELECT * FROM SHAIN_TBL;

です。こうすると、全部の項目が表示されますけど、姓(SEI),名(MEI),給与(KYUYO)が出したい場合、

SELET SEI,MEI,KYUYO FROM SHAIN_TBL

となります。つまり

SELECT 項目名(,項目名・・・) FROM テーブル名
(全項目の場合、項目名は *)

となります。




■WHERE句

ここで、KYOYU_SYUBETUが0のとき月給、1のとき日給、2のとき時給で、KYUYOの値は、、

  KYOYU_SYUBETUが0のとき月給の値
  KYOYU_SYUBETUが1のとき日給の値
  KYOYU_SYUBETUが2のとき時給の値

というとき、月給の人だけ出したい場合は、

SELET SEI,MEI,KYUYO FROM SHAIN_TBL WHERE KYOYU_SYUBETU=0

ということになります。
つまり、条件をつける場合は、WHERE句を

SELECT 項目名(,項目名・・・) FROM テーブル名 WHERE 条件式
(全項目の場合、項目名は *)

となります、条件式のところに

SELET SEI,MEI,KYUYO FROM SHAIN_TBL WHERE KYOYU_SYUBETU=0 AND NYUSYANEN = 2005;

のように、AND,ORをつけることも可能です
(上記の場合、入社年2005年で月給の人となる)

このとき、ANDとORでは、ANDのほうが優先順位がたかくなるので、ORを優先させたいところがあれば、()かっこでくくります。
ちなみに、条件式は

項目 比較演算子 値

という具合に書き、比較演算子に、< > <= >= = <> があるのは(ただし< >は、本当は半角)他の言語とおなじですが、それ以外に、BETWEEN 値 AND 値 やINやLIKEなどの演算子もSQLにはあります。
 また、AND、ORのほかにNOTという演算子もありますNOTはANDより優先順位は高いです。




■ORDER BY

 結果を整列させたい場合もあります。
 さっきの、月給を出すとき、給与が昇順(小さいものから大きいものになるように並べる)とか、降順(大きいものから小さいものへ)にならべかえたいなどなど。。。

 たとえば、月給の人をだすとき、給与を昇順に出したい場合は、

SELET SEI,MEI,KYUYO FROM SHAIN_TBL WHERE KYOYU_SYUBETU=0 ORDER BY KYUYO;

ということになります。降順なら

SELET SEI,MEI,KYUYO FROM SHAIN_TBL WHERE KYOYU_SYUBETU=0 ORDER BY KYUYO DESC;

とDESCをつけます(昇順のときASCをつけてもよいが、つけなくてもデフォルトが昇順なので、昇順となる)

つまり、条件をつける場合は、ORDERBY句を

SELECT 項目名(,項目名・・・) FROM テーブル名 WHERE 条件式 ORDER BY 項目名 (降順ならDESC)

(全項目の場合、項目名は *)

で、複数項目で昇順、降順を並べたい場合(年、月、日が、別々の項目で、年、月、日の順に昇順にしたい場合)

  項目名1 ,項目名2・・・

とカンマで項目名を並べます。
 なお、項目1は昇順、項目2は降順、項目3は昇順。。などというときには

 項目1,項目2 DESC,項目3

のように書きます。




■GROUP BY

 今、同じ入社年度の人のなかで、最高の給料(ただし月給)を出したいとします。
 年度が特定されているのならいいのですが、全部の年度。。。なので、実際には、
1.各年度ごとにまとめる
2.そのなかから最大値をさがす
ということになります。でも、今回のように、月給という制約がある場合、
0.まず、条件に合うレコードを抽出
ということを先にやらないといけません。

で、各年度ごとにまとめる、つまり、グループ化するのにGROUP BY句を使います。
上記の例では、こんなふうにかきます。

SELET NYUSYANEN,MAX(KYUYO) FROM SHAIN_TBL WHERE KYOYU_SYUBETU=0 GROUP BY NYUSYANEN;

MAXやMIN,COUNTのような、複数レコードを集めて、何か操作数ものをSQL集合関数とよびます。SQL集合関数は、GROUP BYがあれば、グループごとにまとめて(GROUP BYで指定された項目の値が同じもの同士でまとめて)、その中で集合関数の操作をします。
 もし、GROUP BYがなければ、全部が対象になります。

たとえばMAX(KYUYO)で、
SELET MAX(KYUYO) FROM SHAIN_TBL WHERE KYOYU_SYUBETU=0;
とかくと、前レコードのなかでの最高の給与を示します。

まとめるとGROUP BY句は

SELECT SQL集合関数(,項目名・・・) FROM テーブル名 WHERE 条件式 GROUP BY 項目名




■HAVING

 で、ここで、入社年毎にまとめ、平均月給(AVG)を求めるが、その平均給与が30万円以上の場合のみだす・・という場合、AVG(KYUYO)に対して、30万以上か?と聞くことになります。
 で、じゃあ、これをWHERE句にかいていいか。。。というと困ります。

 集合関数にはCOUNTなどもあるのですが、COUNTの場合、まずWHERE句を処理したもののCOUNTをとりたいわけです(月給の人の人数とか)。そうすると。。

 WHERE句の処理→GROUP BY句の処理

とすすみますので、GROUP BY句で初めてもとまるSQL集合関数の値、MAXやMIN、COUNTは、WHEREのところでは、求められません。
どーしましょー

というので、HAVING句があります。
これは、GROUP BY句を行った後にもとまる、SQL集合関数の値を使った条件を書きます。

つまり、

 WHERE句の処理→GROUP BY句の処理→HAVING句の処理

とすすみます。
上記の平均月給30万以上の入社年度だと、

SELET NYUSYANEN,AVG(KYUYO) FROM SHAIN_TBL WHERE KYOYU_SYUBETU=0 GROUP BY NYUSYANEN HAVING AVG(KYUYO) >= 300000;

となります。

まとめるとHAVING句は

SELECT SQL集合関数(,項目名・・・) FROM テーブル名 WHERE 条件式 GROUP BY 項目名 HAVING 条件式

です。




 ということで、次回もSELECTの続き、主に2つ以上の表についてです。




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

全国のお店の電話番号がしらべられるGooタウンページ

2007-05-19 22:37:19 | Weblog

へー、そんなサービスがあるんだ。。
ここ
gooタウンページ
http://townpage.goo.ne.jp/

1,100万件の電話番号検索 だそうで、ヒットすると、
電話番号はもちろんなんだけど、住所と地図も出てくる。。

昨日、自分の名前を検索していたとき
同姓同名の人が自分の名前で登録しているようで(フリーなのかな?)
で、このサービスに気づいた。。


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

DTPの構造を考える-その8:フォント その3 外字

2007-05-19 18:54:14 | 土日シリーズ

 土日シリーズ「DTPの構造を考える」です。

 このシリーズ、はじめは、本をトップにして、その下の物理構造、論理構造と組版規則について書きました。

 次に、本という概念をこえ、DTP全体でもつものについて、書いていて、ライブラリ、フォントまできて、前回、勘違いして色の話をしてしまったのですが、フォント、残ってました。
 外字の話を今日はします。




■外字と合成文字

 フォントを買ってくると、いろんな文字が入っているわけですが、
 この中にないような文字を作りたい場合があります。

 たとえば、○のなかに、123とか書いてあるものとか。。
 こういうものが外字となります。
 この外字のうち、文字を合成するとできるもの(上記の○と123とか)を、合成文字と呼ぶこともあります。

 また、会社ロゴなども、外字として登録してしまうこともあります。
 こうすると、チラシなどで、ロゴを入れたいとき、図形でなく、文字として扱えるので便利なのです。同様に、旅行パンフレットなんかの記号とかも、外字で定義してしまうこともあります。




■合成文字と合字は、違う

 合成文字と似たような言葉に、合字というのがありますが、これは違うものです。
 合成文字は、文字を合成して、外字のように新たに文字を作ったものですが、合字は、アルファベットの一部を融合させて、aとeをあわせた発音記号を作ったりするものです
 合成文字の場合は、2つの文字を合成させ、どちらかの文字を小さくしたりすることも出来ますが(そうしないと丸付き数字は出来ない)、合字は間隔をつめるものであり、2つを重ねちゃって大きさを変えるまでは普通しないと思います。

 ただし、どちらも、PS書き出しは、フォントの大きさを変え、文字間を変えることで対応することはできます(これ以外の方法として、外字と同じ方法で出すことも出来る)




■外字のPS出力

 これと違って、外字の場合は、PSに出力する場合、アウトラインを埋め込みのカタチで出力します。このため、DTPソフト側に、あるいはフォントをインストールするツールとして、ア
ウトラインで外字を作成するツールが必要です。

 DynaFont Gaiji Builderなどが、このツールにあたります。




■問題点

 外字の問題点は、環境に依存してしまうことです。
 DTPの記事やライブラリ中に外字があったとき、その外字を埋め込んであるとは限りません。
 もし、コードで入っている場合、そのDTPの記事やライブラリをネットなどを通じて別環境のところに移したとき、その移した先に、外字がなかったり、(この場合、ゲタになる)、違う外字が同じコードにあったりすると(その違う外字になってしまう)、問題が起こります。
 また、外字を削除した場合も、ゲタになってしまいます。




■置き換え

 ただ、タグつきテキストから、記事を自動生成する場合は、あらかじめ、タグつきテキストと記事間の外字変換テーブルをもっておいて、記事に読み込ませる前に、その外字変換テーブルで、外字を変換してしまうということができます。




ということで、簡単ですが、外字は終わり。フォントもおわり。
次回は、色に戻って、今度こそ、カラーマッチング?



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

世界一お酢にくわしい“お酢専用ロボット”

2007-05-19 15:49:32 | Weblog

ここの痛いニュース
世界一お酢にくわしい“お酢専用ロボット”を開発
http://blog.livedoor.jp/dqnplus/archives/975941.html

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

株)ビルドアップは18日、タマノイ酢(株)からの受注を受け、
お酢についてのプレゼンテーションを行なう企業ロボットを開発
したと発表した。このロボットは、同社エンターテインメント・
ロボット技術の粋を集めるとともに、お酢の知識は世界一だという。
大阪・タマノイ酢の新社屋にて7月より稼動を開始する。


こういうプレゼン用ロボットは増えるかもしれませんね。。
また、いろんなところに貸し出せるように、プログラム出来るようになるかもしれない・・

けど・・
この外観のものが、増えるかどうかは・・・
いいのか、悪いのか(^^;)


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

「マルウェアで盗んだ情報をWebで大量公開」、自分の名前を検索エンジンでチェックしたほうがいい?

2007-05-18 19:44:31 | Weblog

ここのニュース
マルウェア作者の手違い? 盗んだ情報がWebで大量公開
http://www.itmedia.co.jp/enterprise/articles/0705/17/news034.html

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

マルウェアを使って盗み出された大量の個人情報がWebサイトに掲載され、誰でも閲覧できる状態になっているという。セキュリティ企業の米Symantecがブログで伝えた。

 Symantecによると、問題を引き起こしているのは「Infostealer.Snifula.C」という新手のマルウェア。感染したコンピュータから情報を盗み出して特定のWebサイトに送信し、マルウェア作者がそのサイトから情報を取得できる仕組みになっている。

 ところが同サイトにはアクセス制限がなく、掲載された情報は誰でも閲覧することが可能。すべての情報に検索エンジン経由でアクセスできてしまうという。

だって。

たしかに、個人情報が、検索エンジンに載ってるとやばいよね。。。
その人の住所とか、出てきちゃうもんね。。
自分の名前を検索エンジンでチェックしたほうがいい?

で、そのニュースでは

マルウェアの作者は盗んだ情報を一般に公開するつもりはなく、手違いでこうなってしまったのだろうが

ってかいてあるけど、いや、わざと、かもよ?
公開して喜ぶ愉快犯かもよ?

ちなみに、ウィリアムのいたずら、自分の本名をGoogle、Yahoo,Gooで検索してみたら。。
同姓同名の違う人がいることを発見(^^;)
でも、自分の住所は載ってなかった。。

。。。そのかわり、すごいサービスを見つけてしまった。。
今度書く。

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

開発の初めから順番に書いていってみる その46:プログラミング(8)入出力2 説明。

2007-05-18 16:56:55 | 開発ネタ

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

 プログラミングでは決定表と自動生成のお話をします。
 で、今は自動生成なのですが、その自動生成の対象となる入出力について、
 前回その位置づけを考えました。
 今回は入出力の中でも、自動生成の対象となる、「DBとファイル」と「画面」についてです。




■DBとファイル

 入出力において、DBとファイルは、CRUD、つまり、生成、読み込み、更新、削除が問題になります。

●ファイルの場合
とくに、ファイルの場合は、

1.ファイルの読み込み
2.ファイルの書き出し
が重要であり、ファイルがレコード単位になっている場合は、

3.レコードレベルでの読み込み方法
が重要になります。

これは、システムが提供されている関数でも出来ますが、プロジェクトごとにまとまった、入出力方法を提供するほうが、安全です(パフォーマンス上、問題があったときに一括修正しやすい)

●DBの場合
一方DBの場合は、

 ・読み込み(Select)
 ・更新(Update)
 ・追加(Insert)
 ・削除(Delete)

の方法が必要です。JDBCなどで行いますが、プロジェクトごとにまとまった、入出力方法を提供するほうが、のちのちパフォーマンス上、問題があったときに一括修正しやすく、原因が調査しやすい(いっぺんにログを出すなどが可能なので)ので、自動生成したりフレームワーク化したり、共通ライブラリを提供したりします。

 詳しい方法に関しては、自動生成のときに書きます。




■画面に関して

 一方、画面に関しては、

・画面全体をコントロールする部分と
  →こいつが、初期画面を起動する

・各画面ごとの部分
  →1画面ごとに、できる

 の2つの部分にわけたほうが、多数の画面を出したときにやりやすいです。
 また、「各画面ごとの部分」は、画面表示部分と、イベント部分に分かれます。
 各画面部分は、画面部品を並べる形で、ここで、イベント呼び出しのセットをすることもあります。
 イベント呼び出しは、そのイベントの処理を書きます。

 画面全体部分は、初期画面を作るまでと、場合によっては、各画面のイベントディスパッチなどを行うこともあります。
 自動生成は、この3つの部分(画面全体、各画面の画面部分、イベント部分)の全部あるいは一部を自動生成します。

 ただ、実際にJavaの本などをみると、この辺が明確になっていない場合が多いです。なので、本を見ると1つの画面は作れるのですが、複数の場合・・・どーすんの?っていうふうになってしまう。。。かもしれません。




 てなかんじで、まあ、ざっとした説明は終わり。
 詳しいプログラムそのものの話は、自動生成の話のときにかきます。



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

プログラムやテストデータを自動生成する方法 その8 DBの例 その3-雛形 ソース

2007-05-18 14:13:09 | Weblog

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

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

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


で、0と1については、前回やったので、
今回は、2の「雛形ファイル」についてです。




■抽象的に書くところをきめる

 雛形ファイルをつくるには、サンプルから、抽象的(というか、可変部分と繰り返し部分)をきめます。

 まず、前回のとおり、サンプルは、こんなかんじ
CREATE TABLE userTBL (
  name VARCHAR(50) NOT NULL,
  pass VARCHAR(50) ,
  auth INTEGER ,

  PRIMARY KEY(name)
); 

青が可変部分、下線が繰り返し部分です。

これをタグに置き換えていきます。
なお、仕様書は、以下のものです。





■仕様書の文字を入れる:CELLタグとKETAタグ

 で、雛形ソースのタグのうち、仕様書の文字を入れるのは、CELLタグとKETAタグです。
 CELLタグは、CELLの値をそのままいれるもので、繰り返し部分でも、そうでない部分でも使えます。
 KETAタグは、繰り返しのとき、現在の行の該当桁の内容をいれるもので、繰り返し部分以外意味がありません。

 上記サンプルのuserTBLは、仕様書のB3にありますので、そこには、タグ

   $#$CELL B3$#$

 が入ります
PRIMARY KEYのnameのところは、仕様書のB4にありますので、そこには、タグ

   $#$CELL B4$#$

 が入ります。

 繰り返し部分に関しては、あとで書きます。




■繰り返し部分-REPとREPEND

 繰り返しのところにはREPとREPENDを入れます。なお、タグの後に不用意に改行をいれると、それも繰り返されてしまうので、そのつもりで。
 REPとREPENDタグの間を、改行も含めて、繰り返します。

 上記サンプルの場合、項目定義の
name VARCHAR(50) NOT NULL,
の部分が、仕様書の8行目以降の繰り返しに相当します。なので、REPのあとに繰り返し開始行の8を引数にして、繰り返し開始には

    $#$REP 8$#$

をいれます。

 終わりの判断は、A桁に文字がなかっらたらループ終了なので、

    $#$REPEND A$#$

 を入れます。

 さて、繰り返し項目ですが、
   項目名が、仕様書のA桁 ==>タグだとKETA A
   型がB桁        ==>タグだとKETA B
   NOTNULLがK桁。。ただし、そのまま出せない(>_<!)
となります。なので、項目名と型の部分の繰り返しは

#$REP 8$#$ $#$KETA A$#$ $#$KETA B$#$ (ここにNOTNULL指定),
$#$REPEND A$#$

 で、NOTNULLは、条件部分になります。




■条件分岐IFKETA IFEND(IFCELL IFEND)

 で、NOTNULLのところは、K桁が、○だったら、NOT NULLと出します。
 このように、ある桁がある文字だったら、何と出すというのは、
 IFKETAであらわします。IFENDまで繰り返します。

 なので、さっきのNOTNULLのところは

$#$IFKETA K,○$#$NOT NULL$#$IFEND$#$

となります

 なお、IFCELLというのは、あるセルの値をチェックして、その値だったら出力します。

 なお、これにはELSEもないし、入れ子もだめです。
 この値でなければ、出力しません。




■複数条件(入れ子にしたいようなとき)は、Excelが、がんばる

 なので、もし、たとえば、

   主キーでNOTNULLのときは、コメントに主キーでNOTNULL
   NOTNULLのときは、    コメントにNOTNULL
   NOTNULLでないときは   コメントにNULLOK

 と書きたい場合は、Excelががんばって処理して、IFKETAで値を判定すれば言いように、どこかの桁に、値を書き出します。

 たとえば、P桁とかに、

   主キーでNOTNULLのときは1
   NOTNULLのときは2
   NOTNULLでないときは3

 とかを書き出すように、Excelで関数を書いて、雛形では

$#$IFKETA P,1$#$主キーでNOTNULL$#$IFEND$#$$#$IFKETA P,2$#$NOTNULL$#$IFEND$#$$#$IFKETA P,3$#$NULLOK$#$IFEND$#$

と、全部に文字などを振って、全部の条件を書き上げます。




■なぜ、IFに入れ子をいれていないで、値だけで判断しているか

 こうしているのには理由があります。IFに条件文を認めてしまったり、入れ子にしてしまうと、それはプログラムと同じになります。そうすると、雛形で複雑な条件を書かれてしまうと、雛形が悪いのか、仕様書が悪いのか、特定しにくくなります。

 さらに雛形は、再利用されることもありますし、多くのプログラムが参照することもあります。そうすると、修正が他に影響されると困ります。
 複数の条件文がかけるようにしてしまうと、ここに書いたように、いろんな条件、想定していない条件が成立してしまう危険があります。

 そのため、雛形ソースを見れば、桁やセルの値一致により、複数条件あっても1つしか成立しない、独立性の高い書き方にしています。
 そして、その代わり、複雑な条件の処理は、Excelのほうでやってね、Excelで複雑な条件を整理して、IFKETAやIFCELLで値を見れば分かるように、いろいろっがんばってね!というように役割分担しています。




■で、まとめると

いままでのをまとめると、こういう雛形になります。
CREATE TABLE $#$CELL B3$#$ (
$#$REP 8$#$  $#$KETA A$#$ $#$KETA B$#$ $#$IFKETA K,○$#$NOT NULL$#$IFEND$#$,
$#$REPEND A$#$
  PRIMARY KEY($#$CELL B4$#$)
); 




ということで、雛形が出来たので、次回は、3のExcel仕様書についてです。



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

圧縮率1000分の1の画像圧縮って(@_@!)

2007-05-18 10:21:53 | Weblog

 日本証券新聞5月18日の3面、「テクノマセ 大幅続伸」っていう記事に書いてあるんだけど、テクノマセマティカルが、圧縮率1/1000画像圧縮を実検する仕組みを開発したんだとか・・・

ここのプレスリリース

テクノ マセマティカル、
オリジナル・エンコーダ/デコーダ「DMNA-Vシリーズ」のIPコアを開発
―圧縮率1/1000(*1)の驚異的な画像圧縮を実現―

http://www.tmath.co.jp/html/news/news20070516.html


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

テクノマセマティカルは、同社の開発した数学的手法を駆使した革新的演算アルゴリズム「DMNA」(Digital Media New Algorithm)を用いて、オリジナルデータの1/1000という驚異的な圧縮率を実現する オリジナル・エンコーダ/デコーダ「DMNA-Vシリーズ」を開発いたしました。


1000分の1って。。。

で、その理由は。。


*革新的なアルゴリズムDMNAとは、画像や音楽の圧縮伸張処理で使われているDWT(離散ウェーブレット変換)、DCT(離散コサイン変換)、算術符号、ME(動き検出)、デブロッキングフィルタ等の負荷が重い演算処理を下記の手法を組み合わせることで、演算の負荷を大きく減らし、画質や音質を損なうことなく高速処理することを可能にする計算手法です。


1. 因数分解を活用して、計算を簡略化。演算回数を大幅に削減させます。
2. 折り返し理論を活用して、数値空間を狭くして演算回数を削減します。
3. 演算式を階層化し、優先度を付けて必要な計算だけを実行します。
4. 複雑な計算式を、階層化することによって簡易化します。
5. それぞれの関数を、効率的に変換します。


ちょっちまった。。
DCT(離散コサイン変換)って、JPEGにつかわれてるよねえ。。
DWT(離散ウェーブレット変換)って、JPEG2000につかわれてるよねえ。。

あれって、ひょっとして、この手法を使うと簡易化できるの?
そー言うライブラリが出てきて、いまのJPEGが早く表示できるとなると、
むしろ、そっちのほうにきょうみ。。。

いや、1000分の1のほうがすげーな(^^;)


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

YouTubeを開いていない時でもキーワードで動画を検索してダウンロードできる

2007-05-17 18:20:16 | Weblog

YouTubeの動画をダウンロードできる方法は、いろいろあるけど、
YouTubeを開いていない時でもキーワードで動画を検索してダウンロードできるって言う点で、Lunascape用のYouTube プラグインは、すごいかも。。

ここのニュース
Lunascape用のYouTubeプラグイン、動画を検索・ダウンロード可能
http://internet.watch.impress.co.jp/cda/news/2007/05/16/15717.html

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

Lunascapeは、同社のブラウザ「Lunascape」でYouTubeの動画をダウンロードできるプラグイン「YouTube プラグイン」を公開した。Lunascapeの4.2.0正式版以降から利用可能で、同社のWebサイトから無料でダウンロードできる。


で、そのすごいところは。。


YouTube プラグインでは、YouTubeのサイトを開いていない時でも指定したキーワードで動画を検索してダウンロードできる。

だそうな。。で、

保存するファイル形式はFLVで、再生するにはFLV対応のプレーヤーソフトを別途用意する必要がある。

とのこと

といっても、ウィリアムのいたずら、そこまで動画は見ないので(^^;)
書いておきながら、ダウンロードしてないし、する予定もないけど。。

ちなみに、その件について書いてある&ダウンロード先が分かるのは
プラグイン:YouTubeプラグインをダウンロード
みたい。


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

開発の初めから順番に書いていってみる その45:プログラミング(7)入出力1 位置づけ

2007-05-17 16:44:15 | Weblog

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

 プログラミングでは決定表と自動生成のお話をします。
 今までで、決定表のお話は、おわりました。
 今度は自動生成なのですが、その前に自動生成する対象となる入出力について、その位置づけから考えてみたいと思います。




■入出力の位置づけ

 条件分岐の位置づけのとき、、こんな体系を出しました
<<プログラム>>
 ・次の文を実行する
 ・どこかにジャンプする
 ・そこで終了する
 ・条件によって分かれる
    ・条件(IF文)が1個
    ・複数の条件がある
       ・条件が1つしか成立しない(select case)
       ・条件が複数成立してしまう
           ・条件が成立したら、実行(マルチアンサー)
           ・条件から状態を決めて実行(シングルアンサー)


で、前は、「条件によって分かれる」について考えたのですが、
今回は、「次の文を実行する」について考えてみたいと思います。

 これは、実行内容が、そのプロセス内のデータを使って処理するか、どこかプロセスの外にあるモノを使うかでちがいます。
 プロセスのデータを使って処理するものは、ふつうの処理で、どこかプロセスの外にあるモノを使うのが入出力です。
 まあ、この中間の共有メモリっていうのもあるのですが、それは入出力に入れときましょう。



■入出力の分類

 で、入出力処理は、デバイスごとにイロイロありますが、主に使うのは
   ・ファイル
   ・DB
   ・画面
   ・帳票
 そして最近とくに
   ・HTTP間の通信(REST型)
 です。

 これ以外にもイロイロあるわけですが、特にこれらが重要になります。
 このうち、DBとファイルは同じアプローチでできます。
 画面は別のアプローチになります。
 帳票は、ツールを使うことが多いので、そのツールにより、やり方がまちまちになってしまいます。
 HTTPにおけるアプローチは、AJAXでは大体固まっています。
 それ以外に関しては、ちょっと別の機会にまとめたほうがいいような気がします。




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





 でそれぞれの入出力について説明なのですが、帳票はまちまちなので説明できない、HTTPは別の機会ということで、次回から、「DBとファイル」と「画面」について、その特徴について説明したいと思います。



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

プログラムやテストデータを自動生成する方法 その7 DBの例 その2-手順。

2007-05-17 13:50:33 | Weblog

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

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

 前回から、それを使った例としてDBについてやってます。
 前回は仕様を書きました。今回は手順です。




■手順

 といっても、実は手順は、BREWの自動生成の
仕様書からプログラムソースを生成する方法(Excelの仕様書編 その6:作成手順1)
http://blog.goo.ne.jp/xmldtp/e/681dee622fef3db092a8b37dc52ab79b

で示しています(ちなみに、BREWのまとまった話は、ここ)。

そこで、手順は、こんな風に書きました。


雛形ファイル、仕様書の作成手順は、以下のとおりです

1.出力ファイルをきめ、そのサンプルを作成する
2.1のファイルから抽象的に書くところを見極め、そこにタグを入れていく
    →これが、雛形ファイル
3.タグから、Excel仕様書をつくる


 ここでいう、Excel仕様書とは、今回の例で言うとDBの仕様書のことなのですが。。今回は先にできちゃっています(BREWのときは、後から仕様書を作る形だった)。

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


今日は、0と1についてやります。




■出来ている仕様書について
 昨日、仕様書については示しました。
 固定部分と、可変部分(仕様書ごとに記入するところ)に関しては、

 以下の黄色い部分が、可変部分です。





■出力ファイルをきめ、そのサンプルを作成する

 このサンプルは昨日にあったとおりです。
 なお、次の作業がしやすいように、可変部分については青で
 とくに繰り返しの場合は、下線を引いています。
CREATE TABLE userTBL (
  name VARCHAR(50) NOT NULL,
  pass VARCHAR(50) ,
  auth INTEGER ,

  PRIMARY KEY(name)
); 





 で、次回は雛形ファイルについてやります。




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

自動生成って、DTPやWebにも使えるんだけどね!

2007-05-17 10:24:44 | Weblog

そうそう、最近、印刷関係の人で読んでる人が多いから書いておきますけど、
最近シリーズで「プログラムやテストデータを自動生成する方法 」ってかいてるけど、これ、DTPやWebにも、もちろん使えるんです。
(というか、ウィリアムのいたずらは、DTPでやる自動編集をプログラムに応用しているだけです)。




■DTPの場合

 小組のデータをExcelにいれて、XPressタグとかを自動生成する。。

っていうだけなら、たいしたことはないんだけど、たとえば、文字数やデータ数によって、利用する小組を変えたいというときに、


・あらかじめ、考えられる小組のパターンを雛形に書いておき

・どの小組のパターンを使うかをExcel上で判断し、どこかのセル
 (1行1小組なら桁に)に入れておいて

・IFCELL, IFKETAで判断して、その小組のデータにあったパターンを
 取り出す


っていうふうにできる。

旅行パンフレットなどの表組みの場合、全体的に生成すると、複雑になってしまうので、表の部分以外と、表部分に分けたほうがやりやすいかもしれない。




■Webの場合

 HTMLやXMLのデータを自動的に出せる。。
 けど、それだけだったら、CSSとか使ったほうがいい。
 データをExcel上で加工して、その内容をもとに出せる点とかがいいかも。。




 まあ、DTPの場合、WebでもDTPソフトのタグでも出せるようになると、湾ソースマルチユースにつながっていくんだろうけど。。。
 それはXMLで実現するからいいって言う話があるけどね。。

 ただ、お金が高い、写真部分の切り抜きになると、ちょっとこれではできないんだけどね。。


P.S 顔写真のトリミングに、顔認識ソフトとか使えそうな気がするんだけど。。輪郭線出して、輪郭内部の図の重心を求めて、配置すると便利?

。。。ごめんなさい、印刷関係以外の人には、まったくわかんない話になってしまった。。


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

ETみたいに指からケータイの番号が送れる?

2007-05-16 19:54:22 | Weblog

すごいです。すごいです!松丸アナのトレンドたまご
(って、いつも言ってるけど、松丸アナがすごいわけではないが)
月曜日、松丸アナがやっていたトレンドたまご
レッドタクトン
http://www.tv-tokyo.co.jp/wbs/toretama/070514.html


なんですけど(以下斜体は上記サイトより引用)

IDカード自体が電界を発していて、カードを身につけた人は身体全体にその電界を帯びる仕組み。電界にはパスワード情報がのせられていて、身体が受信機にふれるだけでロックを解除できる。


じゃあ、パスワード情報のかわりにケータイの電話番号にすると、
体、つまり、指が受信機に触っただけで、ケータイの電話番号がつたわるってことですよね。

 つーことは、相手が指の先に受信機を付けていれば指先が触れただけで、情報が伝わる。。

 もしこれ、相手の人にも、触れば電界が伝わるのであれば、
 ETみたいに、指と指が触れただけで、ケータイの電話番号が送れる・・

 そーだとしたら、すごいです。

 もしそうなら、合コン用として、NTTドコモが目を付けそうだ。。
 なんか、合コンがしやすくなるケータイとかなかったでしたっけ?
 もっと進んで、体を触る口実を作るケータイとかして。。


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

プチ障害者向けのユビキタス市場

2007-05-16 16:18:33 | Weblog

 本家に書いた動けない人のための。。。音声入力? 続きでもあるんですけど。。

 ユビキタスというと、ネット家電なんかが中心となっている。

 これは、健常者の、金持ちが増えていけば、儲かっていく市場かもしれないけど、高齢者が増えて行ったりすると。。利用者は少ないよね。。

 「外出先から。。」

 とか、

 「外出から帰ってきたら。。」

 とかいっても、そもそもお年寄りで外出しないような人が増えてしまったら、あまり意味がない。




 そうやって考えると、身体障害者まではいかないけど、体が不自由な高齢者とか、一時的に怪我しているので、からだが不自由な人のための入力装置やロボットなどの市場っていうのがあるんじゃないかと。。

 身体障害者までいってしまえば、バリアフリー用に家を改築とかなるんだけど、

・そこまで障害が行ってない、
・バリアフリーのお金がない
・そもそも、怪我なので、工事中に直ってしまう。。

などという人(これらの人を仮に「プチ障害者」と呼ぼう)のために、物を取ってくるロボット(ラジコン?)とか、キーボードをたたかなくてもいいための音声入力とか、階段の段差を一時的に埋める機械とか。。。

 もちろん、障害者の方が使っても役に立つし、
 障害がない人が使っても、便利とか、楽しいっていう

そういった、「プチ障害者向け」グッズの市場って、あると思う。



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