ひがやすを技術ブログ

電通国際情報サービスのプログラマ

くーす

ドメインロジックとSQL

トランザクションスクリプトとは、P of EAA の中で私が作ったパターン名である。リクエストによって処理を行う手続き型のパターンのことだ。プロシージャは必要なデータをすべて読み込み、メモリ上でどの月が必要なのかを探し、それから処理を行うことになる…

建築家の視点

ソフトウェアジャパンで、建築家の中埜先生から建築家から見たデザインパターンの話を聞いて、正直衝撃を受けました。 中埜先生は、こう言いました。「要求は科学的に分析できない」「顧客は自分の要求に気づいていない」まさにその通り。 それでは、顧客か…

オフショア開発

内部設計まで国内でやって、実装・テストをオフショアでやるのは、ビジネス的な観点でいうと、うまみが少ない気がします。なぜなら、このとおりに実装しろっていうレベルまで、内部設計をつめるのは、コストがかかるからです。 ただ、それよりも私が気になる…

DTO

今、くーすを使った開発をやっていて、先行して始めた部分がほぼ出来上がろうとしているのですが、データのやり取りは、DTOを使っていて、Entityは結局使ってません。 Entityを使う場合は、Entityの構造とプレゼンテーション層で必要とする構造が異なるため…

デザイナと開発者との連携

昨日、Flex本でデザイナと開発者との連携に正面から、取り組むと書いたのですが、くーす本でも同様に取り組みます。くーす本の場合は、ViewはHTMLです。そう、S2JSFを使います。 前は、S2Strutsを使うつもりだったけど、最近の話の流れ的に、S2JSFの方がいい…

コンポーネント設計書

インターフェース設計書で、外部から呼ばれるメソッドとコンポーネント内からしか呼ばれないメソッドが同じように記述されるのは、混乱を招くようなので、コンポーネント設計書と名前を変え、バウンダリから呼び出されるメソッドには、印をつけることにした…

ロバストネス図を省略

「ロバストネス図を書くの省略したいんですけど。」 これは、今回の設計時にうちの設計者にいわれたこと。 これまでは、ロバストネス図を書いてから画面外部設計書に入っていたのですが、結局画面の細かなところを考えないと正しくコントロールが抽出できな…

パッケージ構成案

くーすアプリケーションのパッケージは、ベースとなるパッケージの下に以下のパッケージで構成されます。 form:フォームクラスを格納。 action:アクションクラスを格納 logic:業務ロジックのインターフェースを格納。 impl:業務ロジックの実装クラスを格納。…

コントロール分析

コントロールは、バウンダリから直接呼び出されるものと、コントロールから呼び出されるものがあります。どこまで、コントロールを細分化するのかは、ユーザのレビューが必要かという観点で行います。 コントロールを抽出するときに、本来コントロールがやる…

シーケンス分析

これまで、コントロールから、必要なメソッドをもれなく洗い出すために、シーケンス分析(was シナリオ分析)をすることになっていたのですが、ちょっとここだけうざったい。からさわぎのときにもめた部分でもあります。 コントロールの詳細化の指針は出してい…

からさわぎ@大阪の資料

をリリースしました。ほとんど、Seasarの色はないですね。Javaの色も薄い。 だって全部くーすですから、残念!!!なんとドキュメントのサンプルもついています。ドキュメントのライセンスは、SSL1.1です。 くーすの意外なイントロ(サービス指向)にびっくり…

業務ロジッククラスの粒度

これまで、業務ロジッククラスは、バウンダリ(画面)ごとに作成することになっていましたが、業務フローごとに作成する方が良いかなと思っています。業務フローとは、関連する幾つかのバウンダリで構成されるものです。 1つめの理由は、画面は、プレゼンテー…

層をまたがるデータのやり取り

プレゼンテーション層と業務ロジック層のデータのやり取りは、EntityやDTOを使います。DTOを使うのは主に次のような場合です。 検索条件の入力データなど、永続化されないデータ。 関連のない複数のエンティティのやり取り。 1の場合、文字列、数値、日付な…

Singletonの怖さ

Singletonはテストと相性が悪い。なぜなら、テストメソッド間で状態を維持してしまうからだ。このようにいってきた私自身が、Singletonにはまってしまいました。 無念だ。心より恥じる。 S2Daoのテストをしているときに、ロールバックが効かない場合がありま…

ThreadLocalを使いたい場合

コンポーネントから、HttpServletRequestなどにアクセスしたい場合もあるでしょう。そのような場合は、ThreadLocalを使って管理するのが一般的です。 しかし、このような管理クラスを作る場合に、シングルトンやstatic変数を使ってはいけません。グローバル…

キーワード

はてなを利用のみなさまに、できれば、ということでのお願いなのですが、Seasar関係の話題の場合は、SeasarもしくはSeasar2、くーす関係の話題の場合は、くーすと記述してもらえると、はてなのキーワードから私が追っかけることができるので、何かあればフォ…

画面遷移図

以前、画面遷移図にレイアウト情報を貼り付けると、ユーザの興味がレイアウトにいってしまい、画面遷移そのもののレビューができないということを書いたのですが、実際に試すと、画面遷移のレビューは、問題なく終わるのですが、結局、画面遷移そのものは理…

くーすに関与していただいた人

くーす本の巻末にくーすをまとめるときに、関与していただいた方のハンドル名をクレジットしたいと思ってます。 トライアルでさまざなな意見交換をさせていただいたid:marrowさん。 Wikiにまとめていただいたid:tpircsさん。 よろしいでしょうか。

分散システム

システムをWeb層(WebServer、 ServletContainer)、中間層(業務ロジック層、データアクセス層)、リソース層(データベース)に分けて考えます。 中間層をWeb層から切り離しておけば、中間層の負荷がふえたとき、クラスタリングなどで負荷分散することにより、ス…

モデリングの幻想

モデリングの本の中で、本質的なモデルを抽出すると 仕様変更や機能追加に強くなります。 本質的なモデルはドメインを超えて再利用できます。 なんてことが書いてあるのをよく見かけます。 そこで私は疑問に思うのです。 これが本質的なモデルってどうして分…

デザインパターン

くーす本の中で、DIContainerあるいはAOPの出現によって、 GoFのデザインパターンがどのように実現されるのか、 あるいはなくなるのか、まとめたいと思います。

DIとStrategyパターン

Strategyパターンは、アルゴリズムをカプセル化し、 交換可能にするものですが、それをDIを使って実現するには、 どうしたら良いのでしょうか。 Strategyが静的なものなら、普通にDIするだけです。 問題は、Strategyがデータに応じて動的に変わる場合です。 …

Dependency Injectionパターン

Dependency Injectionパターンとは、 コンポーネント同士は、インターフェースを通じてのみ会話するようにする。 実装クラスに依存してはいけない。 コンポーネントの生成や、依存関係の解決は、コンテナがおこなう。 依存関係の解決とは、setterメソッドや…

くーす本

企画が通ったので、正式に書き始めます。 たぶん、これまでにはないスタイルになると思います。 単にくーすの話をして終わりではありません。 どういう思考パターンで分析するのか、 設計書を書くときにどのインプットデータに基づいて記述するのか、 そう、…

コントロールの分解

コントロールのシナリオをシーケンス図に書くときに メソッドをアトミックなものになるまで分解するのですが、 その指針を上げておきたいと思います。 開発言語的な要素が出てはいけない 何をやっているのか意味不明なメソッドは作ってはいけない 幾つかの処…

デスマ

デスマの正式な定義がどのようなものか分かりませんがここでは 果てしなくやることがあって終わりが見えない。 作業を1つ終えると予想してなかった別の作業が増え 作業量が予測できない。状態をデスマと呼ぶことにしたいと思います。 デスマは基本的に先を急…

くーすLive!

からさわぎ@大阪のテーマは、くーすLive!に したいと思います。 最初、1時間半くらい私のほうからくーすについて説明した後に、 ある題材を元に、実際にLiveするわけです。 Liveでは私が実践するというより、参加者に前に出てもらい ホワイトボードに考えた…

サービス指向とオブジェクト指向

開発者の目線ではなく、ユーザにとって価値のある サービスを提供するこれがサービス指向の本質なのか。 akonさん、さすが壺売り。言うことが違う。 これからは、サービス指向で設計して、 オブジェクト指向で実装する時代なんですね。

サービス指向

サービス指向ってbuzzwordのようで書くのを 避けてきてたんですが、くーすって何だか オブジェクト指向とは少し違う気がすると 思われている方もいるようなので、 きちんと書いておこうと思います。 くーすの本質はサービス指向だと思ってます。 インターフ…

キャッシュとアスペクト

キャッシュは難しいテーマだと思います。 ばら色に見えて実は有効に機能していない分野だと 思うからです。 どこでキャッシュされるのかという点で考えてみます。 業務ロジックのうち、データアクセスに絡まない部分を Logic(サービス)層と呼ぶことにすると…