システム開発で思うところ

Javaで主にシステム開発をしながら思うところをツラツラを綴る

オレオレ

Application層の検証結果の出力順序を制御する

vermeer.hatenablog.jp 上記ではDomainやFormでの検証結果については、Pageクラスで指定した順序でメッセージ出力する事が出来ました。 ですが、Application層以降の検証不正については、レイヤーを跨った関連付けをする仕組みを持たないと その順序性を管理…

パッケージ構成の考察(2)

vermeer.hatenablog.jp で ベースを考えて 以下の参考プロジェクトを コツコツと肉付けしています。 vermeer.hatenablog.jp 新しい機能を実装する中で段々と どのパッケージに どのクラスを配置させるのが良いのか混とんとしてきました。 このまま なんとな…

Application層の検証結果をPageに関連付ける方法を考える

Application層の検証結果をControllerで どうやってPageクラスに関連付けるか。。やり方に加えて 実装表現も含めて どうしたものかなぁ。アノテーションによる情報指定だとマッピング対象が大量にあった場合、どうにも不細工な気もするし。。しっくりくるイ…

Page/Formのvalidateを見直す

vermeer.hatenablog.jp vermeer.hatenablog.jp で考えたことに対して、実際の実装を経て 妥協(?)した vermeer.hatenablog.jp を踏まえて、改めて整理をした方が良さそうに思い 考えてみることしました。 はじめに 考え直してみようと思ったことを呟いたも…

Serviceを実装

vermeer.hatenablog.jp の流れで、Application層のServiceを実装することにしました。 また、Serviceの事前条件不正などをクライアントで どうやって出力するのか という検討の準備でもあります。 Serviceの基本的な あり方については 以下の記事で以前 整理…

ユースケースじゃなくてサービスとしよう

何となく使っている ユースケースという言葉ですが、自分の中でも あやふやな使い方をしているし、実際 理解もあやふや。 ある種の あやふやさ というか 曖昧さ は残ることは分かっているけれど、ユースケースという表現をつかったシステム実装を採用したい…

画面項目の順序にあわせたメッセージを出力する

vermeer.hatenablog.jp の続き。 メッセージを任意の順番で固定で出力させました。 具体的にはメッセージを画面項目にあわせた出力をしています。 出力結果 FormValidation Form側で行っているValidationは、入力必須検証 だけです。 それ以外の桁や型につい…

画面項目とメッセージ出力順序

vermeer.hatenablog.jp の続き。 メッセージ一覧の出力順序について もう少し具体的にイメージを整理して どのパターンのまで 実装のルール決めで出来そうか考えてみたいと思います。 項目毎にメッセージ出力する というパターンは今回は扱いません。 画面イ…

メッセージ出力順序を整理

vermeer.hatenablog.jp の続き 今更ですが 特に明示はしていませんでしたが メッセージとは エラーメッセージです。 順序はPresentation層で 表示要件はDomainの主たる関心事というよりも 各ページ毎の仕様です*1。 メッセージの出力順序を制御するのであれ…

【考察】Validationと結果出力

vermeer.hatenablog.jp の続き的なところ。 結論としては、メッセージ出力順についての検討を次にやろうかな、に至るまでの経緯というか そのあたりの考察を まとめたものです。 メッセージ表示順序は検証優先度とは別物である 検証要件と検証実施は別物であ…

Java EE(JSF)でDDDのようなことを考えてみる(2)

vermeer.hatenablog.jp から、多少の肉付けをした版。 やったこと Validation ValidationExceptionの制御 メッセージ(出力まで) ConversationScope制御 Redirectの強制 基本は過去の記事などで取り扱った要素を組み込んだ感じです。 DDD的なところ? あん…

FormのプロパティをStringに

vermeer.hatenablog.jp 以前の記事では、どちらかというと Presenter パターンに近いイメージで実装しています。*1 集合の部品となるForm その主たる関心事であるドメイン(ValueObject)を包含します。 インスタンス化およびgetterの際の型は基本的にString…

【考察】何を自動生成すると良いのかな?

自動生成というと エクセルなどのドキュメントから 超高速開発のようにコードを自動生成したり、雛型コードを生成して 後から詳細の実装を追記したり 雛型コードを継承して差分実装をしたり という*1感じだと思います。 そして、私自身、自動生成できるんだ…

環境変数で設定したい情報のメモ

環境変数で設定したい情報 開発とプロダクトで異なる値になるものは環境変数(もしくは それに準ずる仕組み)で設定したいところです。 まずは、何を対象にするのか整理。 JSF javax.faces.PROJECT_STAGE javax.faces.FACELETS_SKIP_COMMENTS javax.faces.FA…

プログラムから文字列指定を無くす

メッセージをEnumにすることでタイプセーフにする仕組みを以前作りました。 vermeer.hatenablog.jp これと同じように、色々な要素から「文字列で直接指定している」というところを、ちょっとずつ無くしていきたいと思っていて そのためのネタを整理です。 で…

JSFで2重Submit対策

一般的な2重Submitは、hiddenで保持したトークン と サーバのセッションで保持しているトークンを比較する、というやり方だと思います。 さいきょうの二重サブミット対策 - Qiita これは、これで正しいと思いますし、多くの人が知っているであろう やり方な…

BeanValidationのメッセージ遅延変換

過去記事の vermeer.hatenablog.jp vermeer.hatenablog.jp vermeer.hatenablog.jp と、ResourceBundleの扱いを追加した vermeer.hatenablog.jp を まとめ直してライブラリを作成しました。 過去記事との違い ライブラリにするにあたって、過去の記事の実装と…

FormとValueObjectの関係を整理する(続)

前回はコードのイメージということで全量を公開していませんでした。 vermeer.hatenablog.jp 今回は、前回はしていない部分のコードの説明を中心にしていきたいと思います。 Form用のValidation関連 マーカーとなるアノテーションと優先度を示すアノテーショ…

FormとValueObjectの関係を整理する

vermeer.hatenablog.jp で書けなかったモヤモヤしたところを、自分なりにBeanValidationを中心として考えていく中で整理できつつあるので、具体的な実装に入る前に、まず まとめてみたいと思います。 それは、画面用オブジェクト(以降、Form)とドメインオ…

BeanValidationのメッセージを遅延変換させる

はじめに BeanValidationのメッセージを遅延変換する、ということの意図を簡単に説明したいと思います。 BeanValidationは検証(validate)した際にメッセージ変換も一緒に実行してくれます。 基本的に、これはありがたい機能なのですが、Domainで発行したメ…

パッケージ構成の考察

レイヤーで論理的な役割を整理したので、次はパッケージです。 パッケージ概要 フォルダ構成例 boundedcontext ├─application │ └─service │ └─hoge │ ├─domain │ ├─model │ │ └─hoge │ │ hogeFactory │ │ hogeRepository │ ├─query │ └─rule ├─infrastructu…

レイヤーの考察

オレオレDDDを一から整理し直し。 まずは、レイヤーから。 レイヤー構成 Presentation 外部インターフェース(外部向け定義および操作)に関する機能を実装する層 「外部に対する表現」が主たる役割 Application ドメインを用いて機能を実現する層 判断/加…

【考察】設計について(2)

要件定義からテスト設計までの流れで個人的に思うところのメモ(2) 自分の経験の整理 vermeer.hatenablog.jp の続き いきなりモデリングはやめよう (また?) 理由 モデリングのような抽象度の高いことよりも、個別具体のところから整理していった方がユ…

【考察】設計について(1)

要件定義からテスト設計までの流れで個人的に思うところのメモ 自分の経験の整理 いきなりモデリングは止めよう 理由 モデリングをしていると、仕事をやった気持ちになるけれど 実現してほしいことに近づいているか?というと そもそも近づくべき目的を共有…

Optionalへの考察

nullを安全に扱うために使用するOptionalの使い方について、自分なりの指針を整理しておこうかなっと。 戻り値にのみ使用する 以上、おわり。 いや、、それだけではだめですよね。。 使用側に通知するため 使用側にとって戻り値がnull可能性の有無が分かれば…

DDDのメモ

概念 原本のエッセンス [ 技術講座 ] Domain-Driven Designのエッセンス 第1回|オブジェクトの広場 [ 技術講座 ] Domain-Driven Designのエッセンス 第2回|オブジェクトの広場 [ 技術講座 ] Domain-Driven Designのエッセンス 第3回|オブジェクトの広場 I…

JSF(ManagedBean)

作成単位 コンポーネント単位(呼出元となるxhtml単位)。 またはユースケース単位(呼出元となるxhtmlが複数にまたがるケース) 個人的なこだわり 少し調べて見ると「ManagedBeanは画面単位で作成します」という表現を見かけることがある。 多くの場合、画…

JSF(Form)

アイディアメモ(随時更新) ViewForm ドメインと画面コンポーネントの仲介役。 ViewFormは使用するドメインクラスをhasするためのクラス。型桁などの基本ドメイン情報はドメインクラスで実装する。 HTMLでのinput要素は基本的に文字列(String)。ドメイン…

CDI

全般 パーフェクトJava EE (Perfect series) [ 井上誠一郎 ]ジャンル: 本・雑誌・コミック > PC・システム開発 > その他ショップ: 楽天ブックス価格: 3,456円 JavaEE7をはじめよう(13) - インジェクション候補が複数ある場合の対処方法 - エンタープライズ…

JPA

全般 Java EE 8がそろそろ固まってきたのでJPA 2.2のJavaDocを日本語に翻訳し始めた(2/3完了) - 水まんじゅう パーフェクトJava EE (Perfect series) [ 井上誠一郎 ]ジャンル: 本・雑誌・コミック > PC・システム開発 > その他ショップ: 楽天ブックス価格:…