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

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

NECや日立製作所のような大手でさえ、自社だけではシステムが作れなくなっている CSKHD副会長。

2007-04-08 23:33:51 | Weblog

 前号(今出ているのではないです)の2007年4月2日号の日経ビジネス、特集「”抜け殻”正社員 派遣・請負依存経営のツケ」40ページ3段目「大手でもシステムを作れない」のところに、CSKホールディング副会長、JISA副会長の有賀貞一氏が、以下のように述べている。
(以下斜体は、上記日経ビジネスP40から引用)

 「下請け頼みの体質が染みついた結果、NECや日立製作所のような大手でさえ、自社だけではシステムが作れなくなっている」


 このことは、たしかにそのとおりといえよう(この業界にいる人なら、まず反論しないだろう)。ただ、ウィリアムのいたずらは、そのあとに、以下の言葉を付け足したい。

 しかし、下請けも、システムが作れなくなっている。
 つまり、だれも作れなくなってきているのだ。。。




 これを説明するには、システムをつくるために、3つの工程が必要なことを説明しないといけない。

1つは、実際の業務をモデル化し、文章化する工程-これが要求仕様
2番目に、その文章化したのを、コンピューターの世界に落としこみ、設計する世界
    -これが、外部設計
3番目に、コンピュータの世界でかかれたものを、コンピュータープログラムに落とし込む世界
    -これが、内部設計やプログラミング。

 今、本屋さんに行くとうっている、JavaやC++,Strutsの本とかは、この3番目に相当する。UMLは、クラス図は、2番目の操作結果としてて来る、3番目、ユースケース図、アクティビティ図は1番目に相当する。
 つまり、1番目から2番目の世界に落とし込む方法は、本屋さんには売ってない。




 で、下請けはまず、3番目の方法、つまりJavaやCのプログラムについて、設計書があっているとしたら、設計書からプログラミングできる方法を教えて、業務につかせる。
 メーカーも、まず、3番目のプログラミングできる人をもとめる(DBでもSQLをかけるというのは3番目に相当する)。

 しかし、1番目から2番目の落とし方が正しく落とせないと、設計書に漏れが出るので、3番目のプログラムは、仕様変更で無間地獄に陥ったように果てしなく直さないとならない。。。

 ので、やめてしまう。
 実際、下請けの退職率は、かなり高い。

 まあ、これは、その日経ビジネスの記事を読んでいれば、推測はつくであろう。
 40ページよりか、前にはコンピューター業界以外の下請けでどんどん人がやめる話が書いてある。コンピューター業界も同じってことだ。

 だから、1番から2番を落とし込むテクニックを教える前に、どんどん人は、やめてってしまう。やめたったら、また、プログラムから教える。
 じゃあ、業界全体としては。。。3番までどまりなのだ。そのうち、この業界からもやめてしまうし、実際、2年以内でやめると、結局転職先でも、とりあえず、プログラミングから(教える部分は省略しても、とりあえず同じ仕事をさせる)やらせるので。。。

 そーすると、本屋さんは、売れる本を出す。。相対的に読む人の多い、プログラミングの本が並ぶ(JAVA,C++,Perlなどのコーナーは広い)。




 でも、システムをつくるには、1番から2番の落とし込みが重要なんだけど。。。それには、実は、3番をやって、1番の世界を知って、2番の設計を何回か練習しないと。。たいたい、5年くらいかかる(ITSSのレベル4程度、アプリケーションエンジニア試験に受かるか、受からないか程度)。でも、そこまで業界でやっている人は。。。もっと儲かる、マネージャーのほうになってしまうので、その分野に詳しい人が少ない。




 なお、日経システムのその後の記述、過去の記憶からすると、そういうカタチではなかったはずだ。


 かつては下請けを使うといっても、その範囲は限られていた。元請け会社の責任者であるプロジェクトマネージャーが、顧客の要望を取りまとめ、システムを設計する責任を負っていた。


 いや、システムの設計をするのはむかしは、SEだ。
 いまのSEっていうのは、ソフト技術者で、2番目の外部設計ドキュメントを作るのと、2番目から3番目に落とし込む人をさしているが、むかしのSEは、1番の要求仕様、1番から2番目の要求仕様書からシステムに落とし込むところ、2番目の外部設計ドキュメントをつくるまでが仕事だった。なので、プロジェクトマネージャーがこういう仕事をするのでなく、SEの人がして、SEの人はいっぱいいたんだけど、いまは、この1番から2番への落とし込みをする人がいなくなってきているのが、問題になっている。




 ってことで、明日からはじまる週のあいだ(もしかしたら翌週になるかも)のどこかの「開発の初めから順番に書いていってみる」シリーズの中で、その要件仕様書から外部設計への落とし込みについて、書くと思います。




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

アイピーモバイル、携帯参入断念

2007-04-08 18:07:19 | Weblog

ここのニュース
携帯事業への参入を断念 新規組アイピーモバイル
http://news1.fresheye.com/article/fenwnews2/1100003/20070408124227_ky_te966/index.html

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

高速データ通信を中心とする携帯電話事業への新規参入を計画していたアイピーモバイル(東京)が、事業参入を断念する方針を固めたことが8日分かった。事業開始に必要な資金が集まらなかった。


だそうな。。やっぱ、ケータイ参入には、お金かかるよねー
ソフトバンクとかしか、お金が集まらず、参入できないんでしょうな。。

で、

アイピーモバイルは近く、割り当てられていた周波数を総務省に返上する方針。

ってことになるので

NTTドコモ、KDDI、ソフトバンクが再割り当てを求める可能性が強く、同省は再割り当てを含めて対応を検討する。

だそうな。。。報告終わり!


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

Hello World程度のデータベース(その14:内部スキーマ(2)インデックス)

2007-04-08 15:05:09 | 土日シリーズ

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

 今、三層スキーマ構造(概念スキーマ、内部スキーマ、外部スキーマ)の内部スキーマをやっています。
 で、内部スキーマはDBの構造の話なんですけど、前回、そのうち、インデックスとデータの話をすると書きました。今回は、インデックスの話です。




■インデックスをつける理由

 これは、検索の向上のためです。
 RDBの場合、主キー、参照キー(自分のテーブル「以外」のテーブルの主キー)とあり、自分以外のテーブルを参照する場合、その参照キーつまり、参照したいテーブルの主キーを使って、データを取得します。
 そのため、いろんなテーブルの情報が知りたいとなると、いろんなテーブルを素早く検索できないといけないことになります。
 そのため、主キーにインデックスをつけて、早くひけるようにします。

 これ以外でも、検索効率を早めたいために、ある項目にインデックスをつけます。

 なお、主キーのとき、受注番号と受注明細番号あわせて主キーになったように、インデックスも、複数項目をあわせて1つのインデックスを張ることができます(複合インデックスって言ったりします)。

 それと、主キーは、たしかに一意になっていますが(もしなってなかったら、その設計が間違っています)、主キー以外のものをインデックスにした場合、その値は必ず1件しかないとは限りません。
 で、この場合、主キーのように、論理的に1件しかあり得ないというもの(偶然今、データが1件しかなかったというのでなく、論理的に1件しか存在しない)ものを、ユニークキーといいます。
 じゃあ、1件以外存在するのは。。。非ユニークキーとか、いうかな(^^;)

 なお、キーがNULL値を許すかどうかというのも、ポイントです。
 主キーでNULLは、普通許しません(存在しないことになってしまいます)
 ところが、ユニークキーで、NULL値を許す場合、NULL値をもつレコードは、定義的に見ると1件のはずですが、NULLだけ例外で複数OKっていうDBもあるようです。
 なお、NULLを許さないインデックスというのを作ることも可能です。




■インデックスのしくみ

 インデックスは、B+木(B*木)、ハッシュなどで実現されています。
 (Bのあとの+や*は、小さく上のほうに書きます。打てないので、大きくなっていますけど)

●B木系(B+、B*)
 B+、B*の元になっているB木については
B木 - Barance-Treeの略でデータ構造である木構造の一つ。
http://www.activebasic.com/aba/wiki.cgi?B%CC%DA

などに、詳しく書いてありますが、データ検索をするのに、ツリー上にデータを入れていき、葉のところにデータが入るのですが、この葉までのノードが、均等になるようにした(バランスをとった)ものです。
 ちなみに、2分木(バイナリーツリー)は、この葉が、均等とは限りません(そのため、検索したら一定の時間に帰ってくるとは限らない。B木は均等なので一定になる)

 で、これを改良したものが、B+、B*です。

●ハッシュ
 一方のハッシュは、インデックスの値を割り算して、あまったあまり(じゃあ、文字とかはどーすんだよとなるが、とにかく、ハッシュ関数によって計算した結果)をハッシュ値として、これに基づいて格納していく方法です。
 あまりなので、たとえば、2000個あるものを11で割ったら、同じ余りになるものが、いっぱいでっちゃうように、
・同じ余り(シノニムといいます)になることがあります
・それがいっぱいあると、シノニムのなかは、順番に、条件にあってるかどうか検索するので、検索時間は遅くなります。




■インデックスの違い

 B木系のものは、検索は早いのですが、挿入・削除する場合、遅くなるときがあります(ちょうど1回層深くなるような場合)。その一方、ハッシュは、計算して格納するだけなので速いのですが、ハッシュの値がきれいに散らないと、シノニムばかりになって、検索スピードが遅くなります。

 ってことで、B木、ハッシュ、メリットデメリットがあります。
 ただ、B木は、まあ、いいんですけど、ハッシュは、きれいに散るかどうかが命なので、ちょっとその辺が面倒です。




 っていうことで、今回は、インデックスについてでした。
 このシリーズの次回は、データ部分についてです。格納のための型の話や、VSAMの話、行の分割などの話です。


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