最近、ビジネスロジックがふんだんに盛り込まれた業務システムというのはあまりありません。

データの出し入れ」が基本ということは、データの格納庫が必要になってくるわけで、それがデータベースになります。最近ではオブジェクト指向データベースも使われ始めましたが、まだまだリレーショナルデータベースの方がよく使われています。

オブジェクト指向で開発していると、ほとんど必ず問題となるのが、リレーショナルデータベースとオブジェクト指向のインピーダンスミスマッチです。データベースは「データ」を扱い、オブジェクト指向は「振る舞い」を扱います。つまり、「振る舞い」をいかにして「データ」に落とすかというのが、問題となるわけです。

最近では、「DAO(Data Access Object」パターンや「O/Rマッピング」というものを使い、オブジェクト指向とリレーショナルデータベースの差を埋める努力がされています。DAOとO/Rマッピングをまとめつつ、業務アプリケーション開発で思ったことを書いていこうと思います。かなり主観的な意見になります。

ドメインモデリング

簡単に言うと、システム要件から問題領域(医療システムであれば医学、とか)の用語を抜きだすこと。さらには、抜き出した用語の必要性や重要性、独立性などを考慮してオブジェクト間の関連をモデル化すること。

ビジネスロジック

ワークフローやUMLのアクティビティー図で分岐処理を行うこと。

「JUnitでユニットテストをするときに、クラス間の関係が問題でテストできない。」なんて事ありませんか? TDD(テスト駆動開発)で行っている場合は、クラスの関係をそのつど考えながら進めていくので、こういった問題はあまり起きません。しかし、TDDはまだまだ敷居が高いと思う開発者が多いように思います。

テスト駆動開発考察

djUnit を使うと、JCoverage』というツールを使ったカバレッジテストの結果をエディタ上で見ることが出来るようになります。

djUnitは JUnti の機能と Aspect の機能を併せ持ったユニットテストツールとなっています。

参考

djUnit Wiki

タイトル
CODE コードから見たコンピュータのからくり
著者
Charles Petzold (著), 永山 操 (翻訳)
出版社
日経BPソフトプレス
Amazonで購入する

「コンピュータの仕組みを知りたいとは思わないかい?」一般にコンピュータを使っている人ならこの質問には「NO」と答えるだろう。電子工学を勉強している学生の中には、少なからず「YES」と答える人もいるかもしれない。本書はモールス信号からコンピュータの仕組みを理解するところまで持っていってしまうところがすごい。つまりコンピュータのことを知らなくても(モールス信号さえ知っていれば)誰でもコンピュータの仕組みまで理解できてしまうのである。ただし、順を追って読み進めていけばの話ではあるが・・・。

コンピュータの動作原理は「0」と「1」との組み合わせがすべてである。コンピュータを知っている人なら誰でもこう答えるだろう。しかし、最近のコンピュータは音楽を聴いたり、ゲームをしたり、写真を取り込んだりできるのにほんとうに「0」と「1」とでしか出来ていないのかと思う人もいると思う。

500ページという本のなかに、著者のコンピュータを知ってもらいたいという熱い想いを感じ取って欲しいと思います。基本情報技術者試験の試験勉強でコンピュータの仕組みを勉強するよりも、はっきり言って本書で仕組みを理解したほうが深く身につきます。決して簡単には読み進められないかもしれません。しかし確実に感動を覚えることはできると思います。少し時間をとって頭の体操にどうぞ!

タイトル
SOAP/UDDI/WSDL Webサービス技術基礎と実践 徹底解説
著者
日本ユニテックDigital Xpress編集部 (著)
出版社
技術評論社
Amazonで購入する

「ビジネスサービスを動的に発見・接続できるようにする」という、Webサービスの目的。そこで使われる技術というのは、実際にはそれほど新しいものではありません。Webサービスは、既存の技術(例えばXMLやSOAP)の組み合わせによる新しい発想と壮大な思想から生まれたある技術仕様です。

本書は、「サービスの動的発見・接続」を可能にする『SOAP』、『WSDL』、『UDDI』という基本仕様についての解説書になっています。Webサービスは発展途上の技術であるため、さまざまな仕様が検討されています。トランザクションに関するものから、セキュリティに関するものまでいくつかあります、が本書では扱っていません。

『SOAP』、『WSDL』、『UDDI』の基本仕様とXMLの概要説明、Webサービスを .Net と Java で構築するというのが本書のテーマです。手っ取り早くWebサービスを構築したいという人には本書は向かないかもしれません。本書のターゲットは、Webサービスの基本技術をしっかりと学びたいという人向けです。

Antはビルドツールです。OSや環境に依存しないビルドツールということで幅広く使われています。

個人的にAntを使う理由というのは、ビルド以外のいろんな設定が簡単に出来ることです。例えば、環境ごとに異なった設定ファイルを作りたいときに、ベースとなるファイルを一つ用意するだけで、Filterという機能を使って設定ファイルの内容を変化させることが出来ます。

他にも、JUnitを使ったときに、Reportを自動で生成する機能や、Webアプリケーション用のwarファイルを作りそのままデプロイしたりと、色々なことが連続的に出来るのが気に入っています。作業と作業の間に人の手を入れずに実行できるので、作業忘れが発生しないというのが特徴です。 

タイトル
ストリームラインオブジェクトモデリング―パターンとビジネスルールによるUML
著者
ジル ニコラ (著), マイク アベニー (著), マーク メイフィールド (著), Jill Nicola (原著), Mike Abney (原著), Mark Mayfield (原著), 今野 睦 (翻訳), デュオシステムズ (翻訳)
出版社
ピアソンエデュケーション
Amazonで購入する

モデリングの部分部分をパターン化して、モデリングに利用しようとしている印象を受けました。ビジネスのモデリングというのは細分化して分類してみると、12種類の「分子」に分けられるというのが著者の意見のようです。

12種類のパターンは以下のようなものがあります。

  • アクター-ロール
  • 外部の場所-場所
  • 品目-特定品目
  • 組立品-部品
  • コンテナ-コンテンツ
  • グループ-メンバー
  • トランザクション-ロール
  • トランザクション-場所
  • トランザクション-特定品目
  • コンポジットトランザクション-明細
  • 特定品目-明細
  • トランザクション-後続トランザクション

ビジネスモデルというものは、会社ごとに違っているのが普通だと思います。同じビジネスモデルでは、競争なんて出来ませからこれはきわめて普通なことだと思います。モデリングというのは、ビジネスを抽象化して捕らえるところに意味がある行為です。そして、抽象化したレベルではいくつかのパターンを見ることが出来る。これが本書の説明したかった事柄だと思います。

JSFは今後期待されるWebアプリケーションフレームワークの一つです。標準規格ということで、普及してくるのではないかと思います。

JSFはユーザインターフェース周りの処理を簡単に実装できるということを目標に開発されたフレームワークで、WebでGUIアプリケーションを作っているような感覚でコーディングが出来ます。

アクションやイベントといった概念を扱っていて、非常に直感的に流れが分かるようなフレームワークになっています。ということで、今回はJSFフレームワークの流れについての覚書きです。

参考

タイトル
バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発
著者
川端 光義 (著), 倉貫 義人 (著), 兒玉 督司 (著)
出版社
翔泳社
Amazonで購入する

テスト駆動開発(TDD)は、アジャイル開発に非常に良く適した開発技法である。プログラムを書く前にテストケースを書くという、今までの開発のやり方とはまったく逆の「目的から解法を求める」やり方です。このやり方だと何がいいのかというと、目的が見えているから(テストケースを満足させること)、解法が非常にシンプルになることです。つまり無駄がなくなる。トヨタのカンバン方式をご存知ならば、ほとんど一緒の考え方がこのテスト駆動開発になるのです。

本書は、今までの開発方法とは一風変わったテスト駆動開発を、日本人による解説と豊富なサンプルプログラムで分かりやすく理解できます。なぜテスト駆動がいいのかということを、余すことなくかかれています。

開発者だけでなく管理者の方も、本書を読むことで品質の良いプログラムを作るためのきっかけが得られるのではないかと思います。とても良い本だと思うので、少しでもテスト駆動開発に興味のある方は読んでみてください。

タイトル
文字コード超研究
著者
深沢 千尋 (著)
出版社
ラトルズ
Amazonで購入する

本書は、コンピュータで扱う「文字」に関して非常に分かりやすく説明してくれています。扱っている文字コードの数も、15種類以上あります。コンピュータで文字がどのように扱われているかという原理を知りたい方は、一度読まれることをおすすめします。

本書の特徴の一つとして、文字コードに対する実験があります。例えば、Macintoshで使われるデフォルトの改行コードをWindowsのデフォルト改行コードに変換するPerlのプログラムなど、Perlのソースコードがあちらこちらに出てきます。文字コードの研究をテーマに「Perlを学ぶ」本だと思ってもいいと思います。『すぐわかるPerl』片手にPerlのお勉強に使えます。

タイトル
体験オブジェクト指向 はじめるUMLモデリング
著者
山田 正樹 (著)
出版社
技術評論社
Amazonで購入する

「モデリング」という言葉が最近グッと身近に感じられる世の中になってきたような気がします。システム開発をやっていない人にはいまいちピンと来ないかも知れないのですが、上流工程ではビジネス要件をモデリングしますし、下流工程ではアプリケーション設計をモデリングします。

本書は、最近主流の「UML(Unified Modeling Language)」という記法を使ったモデリング方法を解説しています。非常に初心者向けの易しい内容です。

  • 要求モデリング
  • 概念モデリング
  • 仕様モデリング
  • 実装モデリング

の大きく分けて4レベルのモデリングを行います。実際のシステム開発でも、要求モデリング、概念モデリング、実装モデリング辺りは行っているのが現状ですので、実務経験が無い人でも『体験』的に学べると思います。