2008年4月30日水曜日

オブジェクト指向への壁

なにかにつけて「3年はかかる」と言っている、オブジェクト指向へ考え方を変えるということ。これは冗談でも誇大広告でもなくて、実際の体験談として言っているんだよね。

「仕事上の経験とかがあればもう少し短くなるんじゃないか?」と思われそうだけど、ここに限ってはまったくもって逆。経験があればあるだけ障害が多く時間がかかるんだよねぇ。

最初の1~2年は暗中模索というか「何がメリットなのかわからない」という状態が続くんだけど、それを超えたあたりで、急に「あー、こういうことか」とひらめいてしまうんだよなぁ。ここをクリアしているかどうかは、クラスを使った設計ができるかどうかで見分けられると思う。

実際自分の場合、VB4(古い・・・)時代に一度クラスに取り組んだんだけどまったくくもって意味もメリットもわからなかったのでそこで一度断念してるんだよね。その後、ちょっとした縁で関わったとある案件で、大分叩き込まれたんだけどその時ですらメリットはわからなかった。
でもその案件から離れて、全然違う業種のところへ出向していた時に。
何故か閃いたんだよねぇw
確かにこれは考えやすい、って。

システムを考えるときに「データ」をベースにした考え方でいる限り、オブジェクト指向には中々たどり着けないと思う。事実データをベースにする考え方はデータ指向ということで、開発工学上も分けているしね。相性が悪いんだ、データ指向とオブジェクト指向は。

自分はデータベースの設計においてはデータ指向で、システムを設計する時はオブジェクト指向でと切り替えて使うように心がけているんだけど、まだまだうまいこといってないってのが本音かな。
プログラムというところでは、ちゃんと考えないとクラス指向というちょっと違った道にいってしまいやすいので気をつけないとねぇ

2008年4月29日火曜日

ER図作成ツールで

A5:SQL Mk-2 - フリーのSQL開発ツール/ER図ツール

A5SQL

フリーのER図作成ツールは常に色々探していて、このあいだ日経ソフトウェアで紹介されていたので試してみた。
ツールとしての機能はかなり豊富だねぇ。ER図作成ツールというよりも、データベースに関連する作業を一通りできるツールスイートってところかな?
トランザクションをコマンドでなくツールボタンで開始終了できるってのは何気に便利。Oracleだと普通がそういう感覚(コマンドでCOMMIT切らないと適用されない)んだけど、SqlServerは暗黙的トランザクション(指定しない場合はコマンドの開始終了でトランザクションをCOMMITさせる)だからたくさんの処理をやるときにはちょっと疲れるんだよね。

自分が今回の案件で利用しているDbDesignerだと論理名が入力できないので、他人に見せるときに結構文句がでるんだけど、こいつはそのあたりもカバーしてくれてる。

ただちょっとだけまだ使いづらいのがあって、テーブル数がそれほどない小規模な開発だといいんだけど、ある程度以上を超えるとこのソフトで扱えるER図領域ではちょっと手狭なんだよね。それと見てくれはやっぱりDbDesignerの方がキレイ。

しかしこういったツールってDelphi製が結構多いねぇ・・・。やっぱりHack的な人はそっちが多いんだろうなぁ。

2008年4月28日月曜日

長音と全角ハイフン

VB6での作業中。
伝票明細のケース数を印字しようと思ったので、コントロール名に「ケース数」と入れてみると。

「プロパティの値が不正です」

・・・忘れてたんだよなぁ。コントロール名としては使えない文字があることを。全角だろうと半角だろうと、〒とか&とかー(ハイフンも含む)は使えないんだったよなぁ・・・。

&はショートカットの設定に使うから、というのは覚えているんだけど、なんで長音とかハイフンってダメだったんだっけかな?

2008年4月22日火曜日

まずい

最近はとんとソースコードに触れていない。

なんというかメンバーの調整だとか、プロジェクトの進行把握とかマネージメントなことばかり・・・。

いやぁ、そろそろ普通にコード触りたいんだけどなぁ。
構想だけねって、コードに起こしていないネタが色々あるんだよなぁ。

AOPとかはできるだけ取り込みたいってのに・・・。

2008年4月17日木曜日

データが「ある」ということ

データベース屋さんとしては正規化を行って適切な粒度で細分化されたテーブル構造を正とするのが、嫌な言葉だけど「一般的」なんだよね。
もちろんここにはちゃんとした理由もある。

一つは「異常データを排除する」というため。もう一つは「レスポンス向上」のため。

データの排除についてはそれほど異論はないと思うんだけど、恐らくはもう一つの「レスポンス向上」についてが、変に思うところだと思う。
SqlServerも含めて殆どのRDB系DBMSはインデックスの構築の仕方がレスポンスに直結してくるんだよね。インデックスを利用できないような抽出条件(部分一致検索とか、値がNullという条件とか)をなくすことが、そのままレスポンス向上につながるので、システムの動作速度の大半は実はここで決まってしまうんだよね。

そしてインデックスというのは、参照するのは早いけど更新するのは遅い、という性質を持っているんだ。簡単に言うとSELECTするのは早いけどINSERTやUPDATEは遅い、というところで。

ここで最初の話に戻るけど、なぜ正規化したほうがレスポンスの向上が見込めるかと言うとこの条件指定に関連してくるわけだ。
WHEREが適切に動くようなインデックスを構築する場合だと、参照はそれで済んだとしても更新の際には主キー+インデックスの更新も必要になる。でも正規化して「データが存在すること」が条件になるようにできていれば、殆どはクラスタインデックス(主キー)の更新だけで済むようになるということなんだよね。以前に1つのテーブルに10以上のインデックスを構築したテーブルに対しての更新処理を行ったことがあるんだけど、それはもうなんじゃこりゃ的なトロさだったね(w
インデックスはずして更新するとエライ速度が変わるという。
なのでインデックスでどうこうするのではなく、テーブルにデータが存在することで条件指定を兼ねるよう正規化して設計することが後々で重要なんですなぁ。

2008年4月14日月曜日

Microsoft Visual Studio International Pack 1.0

4/11付けで正式版がリリースされていた模様。

時間があれば色々いじくって仕事で利用できる部分にはぜひ使いたいんだけどねぇ・・・。
何分本当に時間がないorz

ダウンロードのページから引用してるだけでも、ほしい機能が多いというのにっ!

  • East Asia Numeric Formatting Library - 数値データを日本語、繁体字中国語、簡体字中国語および韓国語における漢数字の文字列に変換します。
  • Japanese Kana Conversion Library - ひらがな、カタカナ、半角カタカナの相互変換、およびローマ字の変換をします。
  • Japanese Text Alignment Library - 日本語固有の均等割付を用いて文字列を描画します。
  • Japanese Yomi Auto-Completion Library - 日本語IME における読みの入力に対応したオートコンプリート機能を提供するライブラリとサンプルのTextBox コントロールを提供します。
  • Korean Auto Complete TextBox Control - 韓国語入力に対応したオートコンプリート機能を持つTextBox コントロールを提供します。
  • Simplified Chinese Pin-Yin Conversion Library - 簡体字中国語で一般的に用いられるPolyphone、Homophone、Pinyin や画数などの文字のプロパティを取得します。
  • Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 繁体字中国語と簡体字中国語の間の双方向変換を容易にするクラスライブラリを提供します。このコンポーネントには、簡体字中国のリソースファイルを繁体字中国語に変換するための、Visual Studio 統合開発環境用アドインツールが含まれます。
  • うーむ・・・どうにかして使いたい・・・。

    MicroSoft Conference2008

    ちくしょう、今年は今のところ札幌で開催する予定がないでやんの。
    今年はぜひとも行きたいんだよなぁ、本当は。東京であろうと行きたいところなんだけどなぁ。

    ・・・理由がちょっとあって。

    ちょっと登録したあとで来場すると、景品として「VisualStudio2008Standard」がもらえるから(w
    2005の時なんて乾電池だったってのに、なんだこの差は!(w

    まー、冗談はさておきこういうところで地方というのが不便でしょうがない。
    大分取り残されていくんだよねー、こういうのが積もり積もると。