第1部 ドメインモデルを機能させる
ドメイン駆動設計におけるモデルの有用性
ソフトウェアの核心
第1章 知識をかみ砕く
効果的なモデリングの要素
知識のかみ砕き
継続的学習
知識豊富な設計
例1.1——隠された概念を引き出す
深いモデル
第2章 コミュニケーションと言語の使い方
ユビキタス言語(UBIQUITOUS LANGUAGE)
例2.1——貨物輸送プログラムを完成させる
声に出してモデリングする
1つのチームに1つの言語
ドキュメントと図
書かれた設計ドキュメント
実行可能な基盤
説明のためのモデル
例2.2——輸送業務と経路
第3章 モデルと実装を結びつける
モデル駆動設計(MODEL-DRIVEN DESIGN)
モデリングパラダイムとツールによるサポート
例3.1——手続き型からモデル駆動へ
骨格を見せる:なぜモデルがユーザにとって重要なのか?
実践的モデラ(HANDS ON MODELERS)
【DDD】ドメイン駆動設計【エリック・エヴァンス】
1デフォルトの名無しさん
2017/10/24(火) 19:39:06.49ID:jO+jDbIG6デフォルトの名無しさん
2017/10/24(火) 19:42:47.43ID:jO+jDbIG 第7章 言語を使用する:応用例
貨物輸送システムを導入する
ドメインを隔離する:アプリケーションの導入
エンティティと値オブジェクトを区別する
役割とその他の属性
輸送ドメインの関連を設計する
集約の境界
リポジトリを選択する
シナリオをウォークスルーする
サンプルアプリケーションの機能:貨物の荷出し地を変更する
サンプルアプリケーションの機能:リピータへの対応
オブジェクトの生成
貨物用のファクトリとコンストラクタ
荷役イベントを追加する
リファクタリングのために立ち止まる:貨物集約についてのもう1つの設計
輸送モデルにおけるモジュール
新機能を導入する:配分チェック
2つのシステムを接続する
モデルを強化する:ビジネスのセグメント化
パフォーマンスチューニング
最後に
貨物輸送システムを導入する
ドメインを隔離する:アプリケーションの導入
エンティティと値オブジェクトを区別する
役割とその他の属性
輸送ドメインの関連を設計する
集約の境界
リポジトリを選択する
シナリオをウォークスルーする
サンプルアプリケーションの機能:貨物の荷出し地を変更する
サンプルアプリケーションの機能:リピータへの対応
オブジェクトの生成
貨物用のファクトリとコンストラクタ
荷役イベントを追加する
リファクタリングのために立ち止まる:貨物集約についてのもう1つの設計
輸送モデルにおけるモジュール
新機能を導入する:配分チェック
2つのシステムを接続する
モデルを強化する:ビジネスのセグメント化
パフォーマンスチューニング
最後に
7デフォルトの名無しさん
2017/10/24(火) 19:43:20.05ID:jO+jDbIG 第3部 より深い洞察へ向かうリファクタリング
リファクタリングのレベル
深いモデル
深いモデル/しなやかな設計
発見のプロセス
第8章 ブレイクスルー
ブレイクスルーの話
悪くないモデルなのだが…
ブレイクスルー
さらに深いモデル
冷静な意思決定
結末
好機
基本への集中
エピローグ:新しい洞察の連鎖
リファクタリングのレベル
深いモデル
深いモデル/しなやかな設計
発見のプロセス
第8章 ブレイクスルー
ブレイクスルーの話
悪くないモデルなのだが…
ブレイクスルー
さらに深いモデル
冷静な意思決定
結末
好機
基本への集中
エピローグ:新しい洞察の連鎖
8デフォルトの名無しさん
2017/10/24(火) 19:43:49.53ID:jO+jDbIG 第9章 暗黙的な概念を明示的にする
概念を掘り出す
言葉に耳を傾ける
例9.1——輸送モデルに欠けている概念を聞き分ける
ぎこちなさを精査する
例9.2——利息を得る 難しい方法
矛盾について熟考する
文献を読む
例9.3——利息を得る 文献を用いた場合
何度でも挑戦すること
それほど明白でない概念をモデル化する方法
明示的な制約
例9.4——再考:オーバーブッキングポリシー
ドメインオブジェクトとしてのプロセス
仕様(SPECIFICATION)
仕様の適用と実装
例9.5——化学製品倉庫での格納
例9.6——倉庫内格納サービスの、実際に動作するプロトタイプ
概念を掘り出す
言葉に耳を傾ける
例9.1——輸送モデルに欠けている概念を聞き分ける
ぎこちなさを精査する
例9.2——利息を得る 難しい方法
矛盾について熟考する
文献を読む
例9.3——利息を得る 文献を用いた場合
何度でも挑戦すること
それほど明白でない概念をモデル化する方法
明示的な制約
例9.4——再考:オーバーブッキングポリシー
ドメインオブジェクトとしてのプロセス
仕様(SPECIFICATION)
仕様の適用と実装
例9.5——化学製品倉庫での格納
例9.6——倉庫内格納サービスの、実際に動作するプロトタイプ
9デフォルトの名無しさん
2017/10/24(火) 19:44:14.81ID:jO+jDbIG 第10章 しなやかな設計
意図の明白なインタフェース(INTENTION-REVEALING INTERFACES)
例10.1——リファクタリング:塗料混合アプリケーション
副作用のない関数(SIDE-EFFECT-FREE-FUNCTIONS)
例10.2——リファクタリング:塗料混合アプリケーション再考
表明(ASSERTIONS)
例10.3——塗料の混合に戻る
概念の輪郭(CONCEPTUAL CONTOURS)
例10.4——発生の輪郭
独立したクラス(STANDALONE CLASSES)
閉じた操作(CLOSURE OF OPERATIONS)
例10.5——コレクションから選択する
宣言的な設計
ドメイン特化言語
設計の宣言的スタイル
宣言的スタイルで仕様を拡張する
例10.6——コンポジット仕様を実装する他の方法
攻める角度
サブドメインを切り取る
可能な場合には、確立された形式主義を活用する
例10.7——パターンを統合する:シェア算
意図の明白なインタフェース(INTENTION-REVEALING INTERFACES)
例10.1——リファクタリング:塗料混合アプリケーション
副作用のない関数(SIDE-EFFECT-FREE-FUNCTIONS)
例10.2——リファクタリング:塗料混合アプリケーション再考
表明(ASSERTIONS)
例10.3——塗料の混合に戻る
概念の輪郭(CONCEPTUAL CONTOURS)
例10.4——発生の輪郭
独立したクラス(STANDALONE CLASSES)
閉じた操作(CLOSURE OF OPERATIONS)
例10.5——コレクションから選択する
宣言的な設計
ドメイン特化言語
設計の宣言的スタイル
宣言的スタイルで仕様を拡張する
例10.6——コンポジット仕様を実装する他の方法
攻める角度
サブドメインを切り取る
可能な場合には、確立された形式主義を活用する
例10.7——パターンを統合する:シェア算
10デフォルトの名無しさん
2017/10/24(火) 19:44:34.64ID:jO+jDbIG 第11章 アナリシスパターンを適用する
例11.1——利息を得る 勘定を用いた場合
例11.1(続き)——夜間バッチについての洞察
アナリシスパターンは活用すべき知識である
第12章 デザインパターンをモデルに関係づける
ストラテジー(STRATEGY)(別名 ポリシー(POLICY))
例12.1——経路検索ポリシー
コンポジット(COMPOSITE)
例12.2——経路で構成された輸送経路
なぜ、フライウェイトではないのか?
第13章 より深い洞察へ向かうリファクタリング
開始
探究チーム
先達の技
開発者のための設計
タイミング
好機となる危機
例11.1——利息を得る 勘定を用いた場合
例11.1(続き)——夜間バッチについての洞察
アナリシスパターンは活用すべき知識である
第12章 デザインパターンをモデルに関係づける
ストラテジー(STRATEGY)(別名 ポリシー(POLICY))
例12.1——経路検索ポリシー
コンポジット(COMPOSITE)
例12.2——経路で構成された輸送経路
なぜ、フライウェイトではないのか?
第13章 より深い洞察へ向かうリファクタリング
開始
探究チーム
先達の技
開発者のための設計
タイミング
好機となる危機
11デフォルトの名無しさん
2017/10/24(火) 19:45:17.29ID:jO+jDbIG 第4部 戦略的設計
第14章 モデルの整合性を維持する
境界づけられたコンテキスト(BOUNDED CONTEXT)
例14.1——予約コンテキスト
境界づけられたコンテキスト内での分派を認識する
継続的な統合(CONTINUOUS INTEGRATION)
コンテキストマップ(CONTEXT MAP)
例14.2——輸送アプリケーションにおける2つのコンテキスト
コンテキストの境界で行うテスト
コンテキストマップを構成してドキュメント化する
境界づけられたコンテキスト間の関係
共有カーネル(SHARED KARNEL)
顧客/供給者の開発チーム(CUSTOMER/SUPPLIER DEVELOPMENT TEAMS)
例14.3——収益分析と予約
順応者(CONFORMIST)
腐敗防止層(ANTICORRUPTION LAYER)
腐敗防止層のインタフェースを設計する
腐敗防止層を実装する
例14.4——レガシー予約アプリケーション
訓話
第14章 モデルの整合性を維持する
境界づけられたコンテキスト(BOUNDED CONTEXT)
例14.1——予約コンテキスト
境界づけられたコンテキスト内での分派を認識する
継続的な統合(CONTINUOUS INTEGRATION)
コンテキストマップ(CONTEXT MAP)
例14.2——輸送アプリケーションにおける2つのコンテキスト
コンテキストの境界で行うテスト
コンテキストマップを構成してドキュメント化する
境界づけられたコンテキスト間の関係
共有カーネル(SHARED KARNEL)
顧客/供給者の開発チーム(CUSTOMER/SUPPLIER DEVELOPMENT TEAMS)
例14.3——収益分析と予約
順応者(CONFORMIST)
腐敗防止層(ANTICORRUPTION LAYER)
腐敗防止層のインタフェースを設計する
腐敗防止層を実装する
例14.4——レガシー予約アプリケーション
訓話
12デフォルトの名無しさん
2017/10/24(火) 19:45:38.94ID:jO+jDbIG 別々の道(SEPARATE WAYS)
例14.5——保険プロジェクトの縮小化
公開ホストサービス(OPEN HOST SERVICE)
公表された言語(PUBLISHED LANGUAGE)
例14.6——化学のための公表された言語
象のモデルを統一する
モデルコンテキスト戦略を選択する
チームでの意思決定と、より上層での意思決定
コンテキストに自らの身を置く
境界を変換する
変更できないものを受け入れる:外部システムの輪郭を描く
外部システムとの関係
設計中のシステム
別のモデルで特殊な要求を満たす
デプロイ
トレードオフ
すでにプロジェクトが進行中の場合
変換
コンテキストをマージする:別々の道 → 共有カーネル
コンテキストをマージする:共有カーネル → 継続的な統合
レガシーシステムを段階的に廃止する
公開ホストサービス → 公表された言語
例14.5——保険プロジェクトの縮小化
公開ホストサービス(OPEN HOST SERVICE)
公表された言語(PUBLISHED LANGUAGE)
例14.6——化学のための公表された言語
象のモデルを統一する
モデルコンテキスト戦略を選択する
チームでの意思決定と、より上層での意思決定
コンテキストに自らの身を置く
境界を変換する
変更できないものを受け入れる:外部システムの輪郭を描く
外部システムとの関係
設計中のシステム
別のモデルで特殊な要求を満たす
デプロイ
トレードオフ
すでにプロジェクトが進行中の場合
変換
コンテキストをマージする:別々の道 → 共有カーネル
コンテキストをマージする:共有カーネル → 継続的な統合
レガシーシステムを段階的に廃止する
公開ホストサービス → 公表された言語
13デフォルトの名無しさん
2017/10/24(火) 19:46:02.22ID:jO+jDbIG 第15章 蒸留
コアドメイン(CORE DOMAIN)
コアを選択する
誰がこの作業をやるのか?
蒸留の拡大
汎用サブドメイン(GENERIC SUBDOMAINS)
例15.1——2つのタイムゾーンの物語
汎用とは再利用可能という意味ではない
プロジェクトのリスク管理
ドメインビジョン声明文(DOMAIN VISION STATEMENT)
強調されたコア(HIGHLIGHTED CORE)
蒸留ドキュメント
コアにフラグを立てる
プロセスツールとしての蒸留ドキュメント
凝集されたメカニズム(COHESIVE MECHANISMS)
例15.2——組織図におけるメカニズム
汎用サブドメイン対凝集されたメカニズム
メカニズムがコアドメインの一部である場合
例15.3——一巡:組織図がメカニズムを再び吸収する
蒸留して宣言的スタイルにする
隔離されたコア(SEGREGATED CORE)
隔離されたコアを作成するコスト
チームの意思決定を進化させる
例15.4——貨物輸送モデルのコアを隔離する
抽象化されたコア(ABSTRACT CORE)
深いモデルの蒸留
リファクタリングの対象を選ぶ
コアドメイン(CORE DOMAIN)
コアを選択する
誰がこの作業をやるのか?
蒸留の拡大
汎用サブドメイン(GENERIC SUBDOMAINS)
例15.1——2つのタイムゾーンの物語
汎用とは再利用可能という意味ではない
プロジェクトのリスク管理
ドメインビジョン声明文(DOMAIN VISION STATEMENT)
強調されたコア(HIGHLIGHTED CORE)
蒸留ドキュメント
コアにフラグを立てる
プロセスツールとしての蒸留ドキュメント
凝集されたメカニズム(COHESIVE MECHANISMS)
例15.2——組織図におけるメカニズム
汎用サブドメイン対凝集されたメカニズム
メカニズムがコアドメインの一部である場合
例15.3——一巡:組織図がメカニズムを再び吸収する
蒸留して宣言的スタイルにする
隔離されたコア(SEGREGATED CORE)
隔離されたコアを作成するコスト
チームの意思決定を進化させる
例15.4——貨物輸送モデルのコアを隔離する
抽象化されたコア(ABSTRACT CORE)
深いモデルの蒸留
リファクタリングの対象を選ぶ
14デフォルトの名無しさん
2017/10/24(火) 19:46:30.33ID:jO+jDbIG 第16章 大規模な構造
進化する秩序(EVOLVING ORDER)
システムのメタファ(SYSTEM METAPHOR)
「素朴なメタファ」とそれを必要としない理由
責務のレイヤ(RESPONSIBILITY LAYERS)
例16.1——深く掘り下げる:輸送システムをレイヤ化する
適切なレイヤを選択する
知識レベル(KNOWLEDGE LEVEL)
例16.2——従業員の給料と年金(1)
例16.3——従業員の給料と年金(2)知識レベル
着脱可能コンポーネントのフレームワーク(PLUGGABLE COMPONENT FRAMEWORK)
例16.4——SEMATECH CIMフレームワーク
構造による制約をどの程度厳しくするべきか?
ふさわしい構造へのリファクタリング
ミニマリズム
コミュニケーションと自己規律
再構成によってしなやかな設計がもたらされる
蒸留によって負荷が軽減される
進化する秩序(EVOLVING ORDER)
システムのメタファ(SYSTEM METAPHOR)
「素朴なメタファ」とそれを必要としない理由
責務のレイヤ(RESPONSIBILITY LAYERS)
例16.1——深く掘り下げる:輸送システムをレイヤ化する
適切なレイヤを選択する
知識レベル(KNOWLEDGE LEVEL)
例16.2——従業員の給料と年金(1)
例16.3——従業員の給料と年金(2)知識レベル
着脱可能コンポーネントのフレームワーク(PLUGGABLE COMPONENT FRAMEWORK)
例16.4——SEMATECH CIMフレームワーク
構造による制約をどの程度厳しくするべきか?
ふさわしい構造へのリファクタリング
ミニマリズム
コミュニケーションと自己規律
再構成によってしなやかな設計がもたらされる
蒸留によって負荷が軽減される
15デフォルトの名無しさん
2017/10/24(火) 19:46:47.01ID:jO+jDbIG 第17章 戦略をまとめ上げる
大規模な構造と境界づけられたコンテキストを組み合わせる
大規模な構造と蒸留を組み合わせる
まず評価する
誰が戦略を策定するのか?
アプリケーション開発から現れる構造
顧客に焦点を合わせたアーキテクチャチーム
戦略的設計上の意思決定を行うために欠かせない6つのこと
同じことが技術的なフレームワークにも当てはまる
マスタプランに注意すること
結論
エピローグ
展望
大規模な構造と境界づけられたコンテキストを組み合わせる
大規模な構造と蒸留を組み合わせる
まず評価する
誰が戦略を策定するのか?
アプリケーション開発から現れる構造
顧客に焦点を合わせたアーキテクチャチーム
戦略的設計上の意思決定を行うために欠かせない6つのこと
同じことが技術的なフレームワークにも当てはまる
マスタプランに注意すること
結論
エピローグ
展望
16デフォルトの名無しさん
2017/10/25(水) 19:04:27.51ID:44Xm0aVs 「境界づけられたコンテキスト」が
何のことかよくわからないので教えてください。
何のことかよくわからないので教えてください。
2017/10/25(水) 19:08:44.29ID:aatZ8FSF
>「境界づけられたコンテキスト」
ユビキタス言語の文脈が変わる境界のこと
たとえば「アカウント」は
金融なら口座だけど
Webサービスなら登録情報とか
ユビキタス言語の文脈が変わる境界のこと
たとえば「アカウント」は
金融なら口座だけど
Webサービスなら登録情報とか
18デフォルトの名無しさん
2017/10/25(水) 19:31:11.15ID:44Xm0aVs >17
その境界はパッケージとかディレクトリとかで判断せよ
みたいな感じ?
その境界はパッケージとかディレクトリとかで判断せよ
みたいな感じ?
2017/10/25(水) 19:49:21.67ID:aatZ8FSF
20デフォルトの名無しさん
2017/10/25(水) 20:12:30.45ID:44Xm0aVs >>19
あーそうか、
Webサービスの場合、コンパイルしてバイナリ化しないから、
PHPの場合配備するAppはディレクトリ構造まんまになるんだけど、
システムの境界はどうやって判断するの?
設計図上でしか判断し得ないの?
サーバマシンの区切り? ディレクトリの区切り? URLのドメイン名の
区切り? その「DDDのあるドメイン」って実際のファイルシステム上では
どのように区切るの?
あーそうか、
Webサービスの場合、コンパイルしてバイナリ化しないから、
PHPの場合配備するAppはディレクトリ構造まんまになるんだけど、
システムの境界はどうやって判断するの?
設計図上でしか判断し得ないの?
サーバマシンの区切り? ディレクトリの区切り? URLのドメイン名の
区切り? その「DDDのあるドメイン」って実際のファイルシステム上では
どのように区切るの?
2017/10/25(水) 20:15:43.64ID:aatZ8FSF
>>20
コンテキストの境界をシステムで表現する際には
(Javaなら)パッケージとその名前空間を使う
でもあくまでビジネスのドメインが先にあって
それにシステムを合わせるのであって
システムだけで判断したらダメだからね
コンテキストの境界をシステムで表現する際には
(Javaなら)パッケージとその名前空間を使う
でもあくまでビジネスのドメインが先にあって
それにシステムを合わせるのであって
システムだけで判断したらダメだからね
2017/10/25(水) 21:51:00.68ID:0GYD+24d
「境界づけられたコンテキスト」は組織構造やシステム構成でも変わりうるよ
特に組織構造への依存度は高いのでそれに応じたいくつかの戦略パターンが解説されてる
受注チームと出荷チームでは「商品」という言葉の意味が違ったり
レガシーシステムと新システムでは「商品」の属性やの振る舞いが違ったりするみたいなこと
一つの境界の中ではそういう違いは許されない
企業全体で統一された一つのモデルや用語集を作ろうとするのではなく
コンテキスト境界に閉じた中でモデルや語彙を明確にしようというのがDDDの考え方
特に組織構造への依存度は高いのでそれに応じたいくつかの戦略パターンが解説されてる
受注チームと出荷チームでは「商品」という言葉の意味が違ったり
レガシーシステムと新システムでは「商品」の属性やの振る舞いが違ったりするみたいなこと
一つの境界の中ではそういう違いは許されない
企業全体で統一された一つのモデルや用語集を作ろうとするのではなく
コンテキスト境界に閉じた中でモデルや語彙を明確にしようというのがDDDの考え方
23デフォルトの名無しさん
2017/10/27(金) 20:24:53.95ID:BY+fhh/f 実装とか物理設計の話になってすまないけど、
DBMSの「テーブルが所属するDB名の境界」が
上記の「境界づけられたコンテキストの」「境界」
に当たるのだろうか。
DBMSの「テーブルが所属するDB名の境界」が
上記の「境界づけられたコンテキストの」「境界」
に当たるのだろうか。
24デフォルトの名無しさん
2017/10/27(金) 20:35:29.16ID:NaPnvd1g コンテキストとDBインスタンスを一致させてる
2017/10/28(土) 00:06:52.32ID:EvuLUtue
2017/10/29(日) 22:40:08.05ID:CrDMqcML
ドメインて何ですか
2017/10/29(日) 22:58:36.50ID:RyqL6Q1z
問題領域
2017/10/30(月) 12:05:58.95ID:5RpC60IR
何が問題なんですか?
2017/10/30(月) 12:06:24.63ID:5RpC60IR
トラブルエリアじゃ駄目なんですか?
2017/11/03(金) 08:47:57.76ID:0WQ4WnED
大雑把に言うと、クラス名やメソッド名、変数名を使って仕事の会話を
しましょうと言うだけ。その逆も然り、それで違和感を感じたら設計や
用語を見直す。
しましょうと言うだけ。その逆も然り、それで違和感を感じたら設計や
用語を見直す。
2017/11/03(金) 08:53:45.98ID:0WQ4WnED
バリューオブジェクトやエンティティとかリポジトリィとかは単なる設計/実装テクニック。
2017/11/03(金) 09:43:41.21ID:Ro85MhDs
2017/11/03(金) 10:22:22.91ID:wXWM393A
根本的な正解をヨロシク
34デフォルトの名無しさん
2017/11/03(金) 10:33:38.13ID:BtRYOGnT 俺も宜しく。
35デフォルトの名無しさん
2017/11/03(金) 14:11:54.12ID:CsNI9L5l ビューモデル、データモデルとドメインモデルとの相互変換がめんどくさすぎる
バリューオブジェクトと集約ルートの考え方のせいで自動マッピング全然効かなくなるし
バリューオブジェクトと集約ルートの考え方のせいで自動マッピング全然効かなくなるし
36デフォルトの名無しさん
2017/11/04(土) 03:13:26.11ID:b5UX6G3j 正直O/Rマッパーで取ってきたデータの入れ物をこねくり回す方が100倍楽なんだが、
大規模プロジェクトや長期のメンテが必要な場合以外でDDD使うケースってどれぐらいあるんだろ?
大規模プロジェクトや長期のメンテが必要な場合以外でDDD使うケースってどれぐらいあるんだろ?
37デフォルトの名無しさん
2017/11/04(土) 05:04:45.77ID:7D9PjzRB お前らががO/Rマッパーの中身を作ったことがあるならいいけど
そうじゃないと、その便利なO/Rマッパーに自分の技術者としての
存在価値を食い殺されることになるから気をつけろ。
DIY: 1度は作れ。最初から既存の便利なものは買うな、取り寄せるな。
DRY: 同じモノは2度も作るな。
つまり「自分の力で1度だけ作れ。」
0回もダメ, 2回以上同じモノを何度も作るのもダメ。
そうじゃないと、その便利なO/Rマッパーに自分の技術者としての
存在価値を食い殺されることになるから気をつけろ。
DIY: 1度は作れ。最初から既存の便利なものは買うな、取り寄せるな。
DRY: 同じモノは2度も作るな。
つまり「自分の力で1度だけ作れ。」
0回もダメ, 2回以上同じモノを何度も作るのもダメ。
38デフォルトの名無しさん
2017/11/04(土) 08:52:57.07ID:/k8c/hp8 DDDってこんな感じじゃん?
画面: 集約ルートのメソッドのパラメータを入力させる
コントローラ: 入力をVOに変換してサービスに投げる
サービス: リポジトリから集約ルートとってくる & 集約ルートのメソッド呼び出す ; 集約ルートをリポジトリに保存する
でもユーザーが求めてるものってこれじゃないんだよね
画面: テーブル(データそのもの)を自由に編集 & 入力に間違いあれば警告 & 入力サポート処理
コントローラ: データ層に丸投げ
データ層: 受け取ったデータをそのまま保存する & 場合によりSQLでビジネスロジックを実行して結果を保存
ユーザーはこういうアプリケーションが大好き
とにかくひとつの画面に関連ありそうなものが全部見えて全部入力できないと気が済まない
集約ルートとか関係なしにぶら下がってるエンティティも直接編集したい
理想像はエクセルを機能拡張したようなもの
そのかわり入力に間違いがないようにバリデーションだけは異様にしっかりする
DDDはユーザーが求めてるものとは違うんだよ
エレガントなアプリを作りたいっていう開発者の都合でユーザーの求めているものとは全く異なるものを作ったら、優秀な技術者じゃなくて、ニーズが読めない二流って評価されちまう
MicrosoftもそれがわかってるからASP.NET MVCやEFのようなフレームワークを作った
ビューモデル、データモデルは振る舞いを持たない素朴なデータの集合の方がわかりやすいし楽だと割り切った
そして検証の工数を下げるために属性バリデーションが発達した
これは他の言語でもだいたい同じ
世界のトップレベルの開発者たちがDDDを否定して貧血ドメイン+強力な検証というパターンを選択した
画面: 集約ルートのメソッドのパラメータを入力させる
コントローラ: 入力をVOに変換してサービスに投げる
サービス: リポジトリから集約ルートとってくる & 集約ルートのメソッド呼び出す ; 集約ルートをリポジトリに保存する
でもユーザーが求めてるものってこれじゃないんだよね
画面: テーブル(データそのもの)を自由に編集 & 入力に間違いあれば警告 & 入力サポート処理
コントローラ: データ層に丸投げ
データ層: 受け取ったデータをそのまま保存する & 場合によりSQLでビジネスロジックを実行して結果を保存
ユーザーはこういうアプリケーションが大好き
とにかくひとつの画面に関連ありそうなものが全部見えて全部入力できないと気が済まない
集約ルートとか関係なしにぶら下がってるエンティティも直接編集したい
理想像はエクセルを機能拡張したようなもの
そのかわり入力に間違いがないようにバリデーションだけは異様にしっかりする
DDDはユーザーが求めてるものとは違うんだよ
エレガントなアプリを作りたいっていう開発者の都合でユーザーの求めているものとは全く異なるものを作ったら、優秀な技術者じゃなくて、ニーズが読めない二流って評価されちまう
MicrosoftもそれがわかってるからASP.NET MVCやEFのようなフレームワークを作った
ビューモデル、データモデルは振る舞いを持たない素朴なデータの集合の方がわかりやすいし楽だと割り切った
そして検証の工数を下げるために属性バリデーションが発達した
これは他の言語でもだいたい同じ
世界のトップレベルの開発者たちがDDDを否定して貧血ドメイン+強力な検証というパターンを選択した
2017/11/04(土) 09:24:40.15ID:4lDAx3zT
今の仕事ドメインもどきの実装になってる
サービスは細かく区切ってあるけど
おのおの自分の担当データの整合性が保たれることだけを保証する
読み出しは自由
サービスは細かく区切ってあるけど
おのおの自分の担当データの整合性が保たれることだけを保証する
読み出しは自由
2017/11/04(土) 13:26:31.92ID:O0AU1SEY
>>38
どこでどう勘違いしたらそんな理解になるの?
どこでどう勘違いしたらそんな理解になるの?
41デフォルトの名無しさん
2017/11/04(土) 13:40:02.20ID:/k8c/hp8 >>40
反論は最低限、論理的にお願いします
反論は最低限、論理的にお願いします
42デフォルトの名無しさん
2017/11/04(土) 14:50:46.68ID:7D9PjzRB 論理的推論(ろんりてきすいろん、英: logical reasoning)は、
論理学において演繹、帰納、アブダクション(仮説形成)の3種類に区別されうる。
「前提条件」(precondition)、「結論」(conclusion)、
そして「『前提条件』は『結論』を含意する」という
「規則」(rule)があるとすると、それら3種の推論は次の仕方で説明されうる。
演繹
演繹は「結論」を規定することを意味する。この推論は
「規則」と「前提条件」を用いて「結論」を導くことである。
例えば、「雨がふると芝生は湿る。雨がふっている。したがって、芝生は湿っている。
」数学者は通常、この種の推論にかかわっている。
帰納
帰納は「規則」を規定することを意味する。この推論は「前提条件」の次に起こる
「結論」の諸事例の一部から「規則」を学ぶことである。
例えば、「これまで、雨がふるといつも芝生は湿ってきた。
したがって、雨がふると芝生は湿る。」
科学者は通常、この種の推論にかかわっている。
アブダクション(仮説形成)
アブダクション(仮説形成)は過去事象についての「前提条件」
を推定することを意味する。この推論は現在確定される
「結論」と「規則」を用いて「ある『前提条件』が『結論』を
説明することができるだろう」ということを裏づけることである。
例えば、「芝生が湿っている。雨がふると芝生が湿る。
したがって、雨がふったに違いない。」
歴史科学者や診断専門医、探偵は通常、この種の推論にかかわっている。
https://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E7%9A%84%E6%8E%A8%E8%AB%96
論理学において演繹、帰納、アブダクション(仮説形成)の3種類に区別されうる。
「前提条件」(precondition)、「結論」(conclusion)、
そして「『前提条件』は『結論』を含意する」という
「規則」(rule)があるとすると、それら3種の推論は次の仕方で説明されうる。
演繹
演繹は「結論」を規定することを意味する。この推論は
「規則」と「前提条件」を用いて「結論」を導くことである。
例えば、「雨がふると芝生は湿る。雨がふっている。したがって、芝生は湿っている。
」数学者は通常、この種の推論にかかわっている。
帰納
帰納は「規則」を規定することを意味する。この推論は「前提条件」の次に起こる
「結論」の諸事例の一部から「規則」を学ぶことである。
例えば、「これまで、雨がふるといつも芝生は湿ってきた。
したがって、雨がふると芝生は湿る。」
科学者は通常、この種の推論にかかわっている。
アブダクション(仮説形成)
アブダクション(仮説形成)は過去事象についての「前提条件」
を推定することを意味する。この推論は現在確定される
「結論」と「規則」を用いて「ある『前提条件』が『結論』を
説明することができるだろう」ということを裏づけることである。
例えば、「芝生が湿っている。雨がふると芝生が湿る。
したがって、雨がふったに違いない。」
歴史科学者や診断専門医、探偵は通常、この種の推論にかかわっている。
https://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E7%9A%84%E6%8E%A8%E8%AB%96
43デフォルトの名無しさん
2017/11/04(土) 18:46:52.01ID:/k8c/hp8 反論はないということですね
やっぱりDDDはアンチパターンなんだ
やっぱりDDDはアンチパターンなんだ
44デフォルトの名無しさん
2017/11/04(土) 19:11:47.69ID:KxJ3WBAq 貧血ドメインごとに専用のサービスクラスを作るのはトランザクションスクリプト?
2017/11/04(土) 21:10:36.19ID:Yu+eR6Tn
46デフォルトの名無しさん
2017/11/04(土) 21:21:57.79ID:/k8c/hp847デフォルトの名無しさん
2017/11/04(土) 23:23:48.00ID:b5UX6G3j48デフォルトの名無しさん
2017/11/04(土) 23:34:10.39ID:KxJ3WBAq >>47
Entity Frameworkが使えるよ
DBからエンティティクラスを自動生成できるのさ
トランザクションスクリプトの弱点は機能が重複することだから
エンティティごとにサービスクラス作ればその弱点を補える
現実的な落としどころとして最高だと考えるわけだが
Entity Frameworkが使えるよ
DBからエンティティクラスを自動生成できるのさ
トランザクションスクリプトの弱点は機能が重複することだから
エンティティごとにサービスクラス作ればその弱点を補える
現実的な落としどころとして最高だと考えるわけだが
49デフォルトの名無しさん
2017/11/05(日) 00:21:31.23ID:m9wZGInC2017/11/05(日) 00:23:40.39ID:sDEQ50LK
>>49
EntityFramework使ったことない人?
EntityFramework使ったことない人?
51デフォルトの名無しさん
2017/11/05(日) 00:25:55.15ID:PT/Fh6bI >>50
使ったことない前提でいいから質問に回答が欲しい
使ったことない前提でいいから質問に回答が欲しい
2017/11/05(日) 01:38:13.55ID:sDEQ50LK
>>51
正規化されたテーブルとEntityは必ずしも1:1にはならないし、そのEntityをUIでそのまま使うのはアンチパターン。
正規化されたテーブルとEntityは必ずしも1:1にはならないし、そのEntityをUIでそのまま使うのはアンチパターン。
53デフォルトの名無しさん
2017/11/05(日) 02:01:55.97ID:PT/Fh6bI2017/11/05(日) 02:37:13.36ID:mZtOvkfq
>>38
>理想像はエクセルを機能拡張したようなもの
スマートUIの方が作りやすいが変更に弱い
>世界のトップレベルの開発者たちがDDDを否定して
いやこれは違うぞ
欧米ではDDDのようなドメインモデルを選択してる
日本がガラパゴスで遅れてるだけ
>理想像はエクセルを機能拡張したようなもの
スマートUIの方が作りやすいが変更に弱い
>世界のトップレベルの開発者たちがDDDを否定して
いやこれは違うぞ
欧米ではDDDのようなドメインモデルを選択してる
日本がガラパゴスで遅れてるだけ
2017/11/05(日) 02:42:39.47ID:mZtOvkfq
>>45>>46
CRUDならDB+スマートUIで良いが
複雑なドメインや変更が多いアプリはDDDが向く
>すべてのアプケーションはDDDなしでの高生産で作れる
これは違う
スマートUIやトランザクションスクリプトの方が作りやすいが
変更に弱いので長期的には保守が大変で行き詰まってくる
CRUDならDB+スマートUIで良いが
複雑なドメインや変更が多いアプリはDDDが向く
>すべてのアプケーションはDDDなしでの高生産で作れる
これは違う
スマートUIやトランザクションスクリプトの方が作りやすいが
変更に弱いので長期的には保守が大変で行き詰まってくる
2017/11/05(日) 06:59:58.30ID:FTXfpvRm
>>53
自動生成したものをそのまま使うんならそうだね。普通はそんなことあまりしないけど。
自動生成したものをそのまま使うんならそうだね。普通はそんなことあまりしないけど。
2017/11/05(日) 08:00:27.84ID:Xk9zbmTV
2017/11/05(日) 08:03:34.39ID:Xk9zbmTV
UIでエンティティをそのまま使うってめちゃくちゃなこと言ってそれを批判する自作自演論法を駆使してる人を見て頑張り屋さんだなあと思うなど
2017/11/05(日) 08:05:12.56ID:Xk9zbmTV
ジャパニーズはドメインモデルを天皇か何かだと思っているのではないかと思うなど
2017/11/05(日) 08:06:45.10ID:Xk9zbmTV
欧米マジ凄えからマジ
2017/11/05(日) 08:09:27.54ID:Xk9zbmTV
連投すると書き込めなくなるな
2017/11/05(日) 08:18:06.55ID:ctXS9dFl
天皇ってキーワードが引っ掛かったんじゃね
俺もいろいろ書き込みしてるが
決まって煽ろうとしたときだけ
なんか変ないろんなルールに引っ掛かる
実際はAIが仕込まれていて
都合の悪い書き込みだけルールをこじつけてはじいているのでは
俺もいろいろ書き込みしてるが
決まって煽ろうとしたときだけ
なんか変ないろんなルールに引っ掛かる
実際はAIが仕込まれていて
都合の悪い書き込みだけルールをこじつけてはじいているのでは
63デフォルトの名無しさん
2017/11/05(日) 08:23:12.21ID:pKqy3dxV 日本人のDDDに対する信仰はいったいなんなんだろうな?
DDDを取り入れてない企業の若者ほどDDDに傾倒してる気がする
お前らDDDやったことないやろwww
DDDを取り入れてない企業の若者ほどDDDに傾倒してる気がする
お前らDDDやったことないやろwww
64デフォルトの名無しさん
2017/11/05(日) 08:31:03.39ID:pKqy3dxV データと振る舞いが分離して処理があちこちにばらまかれるって言う奴がいるけど
それって設計が雑でレビューもしてないだけだよね
普通に作ればトランザクションスクリプトでも疎結合高凝集になるし
それって設計が雑でレビューもしてないだけだよね
普通に作ればトランザクションスクリプトでも疎結合高凝集になるし
65デフォルトの名無しさん
2017/11/05(日) 08:35:38.15ID:pKqy3dxV ぶっちゃけ並み以上のスキルと統制力があればDDDでも貧血ドメイントランザクションスクリプトでもうまくいく
そしてそれはシステムの複雑度とは関係ない
それを踏まえて考えるとモダンなフレームワークの恩恵を受けにくいDDDは現代ではアンチパターンなんだな
フレームワークが未成熟な時代に考えられたアイデアだし時間が経って陳腐化するのは仕方がないけど
そしてそれはシステムの複雑度とは関係ない
それを踏まえて考えるとモダンなフレームワークの恩恵を受けにくいDDDは現代ではアンチパターンなんだな
フレームワークが未成熟な時代に考えられたアイデアだし時間が経って陳腐化するのは仕方がないけど
66デフォルトの名無しさん
2017/11/05(日) 14:12:32.46ID:tjXjX3Hx >>65
フレームワークのロックインを避けて移植性を高めたい場合は?
フレームワークのロックインを避けて移植性を高めたい場合は?
2017/11/05(日) 14:25:33.60ID:Qjn7pIjt
トランザクションスクリプト推しとの議論スレにじゃなくて、DDDをうまくやる方法を語れるスレになってほしいな
なんでOO系のスレってアンチが粘着しがちなんだろう
なんでOO系のスレってアンチが粘着しがちなんだろう
68デフォルトの名無しさん
2017/11/05(日) 14:46:35.78ID:pKqy3dxV69デフォルトの名無しさん
2017/11/05(日) 14:51:12.32ID:pKqy3dxV >>67
本当に優れた手法なら批判的な意見を正論で叩き潰せるはず
俺はそれを見てみたいんだよ
実は俺はDDDアンチじゃなく信者だからね
他人の意見は上司を説得して業務に取り入れるための参考になる
はやく論破してくれ
本当に優れた手法なら批判的な意見を正論で叩き潰せるはず
俺はそれを見てみたいんだよ
実は俺はDDDアンチじゃなく信者だからね
他人の意見は上司を説得して業務に取り入れるための参考になる
はやく論破してくれ
2017/11/05(日) 15:09:40.83ID:SLzcUjqk
>>69
論破っていうけどさ、
> 現実的な線で言うとDDDにするコストより地道に移植するコストのほうが安いけどな
みたいな、根拠も示さない意見を論破する労力なんて誰も割きたくないでしょw
いや、うちはDDDで移植のコストは下がったけどな、って返せばいいの?
論破っていうけどさ、
> 現実的な線で言うとDDDにするコストより地道に移植するコストのほうが安いけどな
みたいな、根拠も示さない意見を論破する労力なんて誰も割きたくないでしょw
いや、うちはDDDで移植のコストは下がったけどな、って返せばいいの?
71デフォルトの名無しさん
2017/11/05(日) 15:16:50.90ID:pKqy3dxV >>70
移植先のフレームワークも似たような機能が揃ってるから大した手間にならん
フレームワークに沿って高生産の仕事を2回やるだけ
しかもフレームワークは似てるので2回目はさらに簡単
生産性をあげるのがフレームワークだ
それに逆らってDDDをやっても生産性を下げるだけ
移植するときにもまた他のフレームワークに逆らうことになり生産性を下げざるをえない
苦痛を2回も強いられる
移植先のフレームワークも似たような機能が揃ってるから大した手間にならん
フレームワークに沿って高生産の仕事を2回やるだけ
しかもフレームワークは似てるので2回目はさらに簡単
生産性をあげるのがフレームワークだ
それに逆らってDDDをやっても生産性を下げるだけ
移植するときにもまた他のフレームワークに逆らうことになり生産性を下げざるをえない
苦痛を2回も強いられる
2017/11/05(日) 15:33:43.90ID:SLzcUjqk
まず、DDDはフレームワークに逆らっている、というのがよくわからん
具体的にはどういうこと?
具体的にはどういうこと?
73デフォルトの名無しさん
2017/11/05(日) 15:38:24.62ID:pKqy3dxV >>72
フレームワークを使った開発ではプレーンなオブジェクトに属性を付けて不変条件を守るスタイルが優勢
DDDは余計なメンバを公開しないしインフラから切り離すので属性にも依存したくない
フレームワークの利点を潰してしまう
フレームワークを使った開発ではプレーンなオブジェクトに属性を付けて不変条件を守るスタイルが優勢
DDDは余計なメンバを公開しないしインフラから切り離すので属性にも依存したくない
フレームワークの利点を潰してしまう
2017/11/05(日) 15:58:00.31ID:gkj4dTGN
具体的なフレームワーク名も挙げずに何言ってんのこいつ
75デフォルトの名無しさん
2017/11/05(日) 16:00:49.98ID:pKqy3dxV2017/11/05(日) 16:04:04.40ID:HYpM4i0x
>>75
知らないだけ
知らないだけ
2017/11/05(日) 16:04:32.12ID:X/HC4l5L
>>75
具体例を
具体例を
78デフォルトの名無しさん
2017/11/05(日) 19:48:21.92ID:JcEMXHd2 サービス層とMVCのコントローラは何が違うのか
情弱の俺に教えてくれよ。
情弱の俺に教えてくれよ。
79デフォルトの名無しさん
2017/11/05(日) 20:15:07.05ID:34F4Igvu >>68
最初から予定してる場合は?
最初から予定してる場合は?
80デフォルトの名無しさん
2017/11/05(日) 20:21:57.83ID:hrMLtbbu81デフォルトの名無しさん
2017/11/05(日) 20:29:14.50ID:qSskq3Yv ドメインモデルっていうくらいなんだから
サービスドメインはモデルでしょうな
サービスドメインはモデルでしょうな
2017/11/05(日) 21:16:49.89ID:2uZ0aYp5
2017/11/05(日) 21:20:40.35ID:mZtOvkfq
2017/11/05(日) 22:13:53.69ID:mZtOvkfq
2017/11/06(月) 00:29:31.84ID:P59vPp8D
ここは軽量DDDを議論するところなの?
86デフォルトの名無しさん
2017/11/06(月) 13:22:13.87ID:s60z57bG >>84
リクエストとレスポンスのインタラクションは
コントローラ
データの「加工」「変換」「検索」「演算」「結合」
ここらへんが絡む物はサービス?
DBMSのコネクションの利用はモデルじゃなくてサービスかな
モデルはただ単に「属性」を持っているだけでいい。
それと最低限のゲッターとセッター
こんなところだろうか??
バリデーションや業務ルールのチェックはモデル??サービス??
リクエストとレスポンスのインタラクションは
コントローラ
データの「加工」「変換」「検索」「演算」「結合」
ここらへんが絡む物はサービス?
DBMSのコネクションの利用はモデルじゃなくてサービスかな
モデルはただ単に「属性」を持っているだけでいい。
それと最低限のゲッターとセッター
こんなところだろうか??
バリデーションや業務ルールのチェックはモデル??サービス??
2017/11/06(月) 19:18:41.19ID:9L+ZJ2Xp
考えるな 感じるんだ
じゃなくて
周りに合わせるんだ
どんなくそ設計でも検証通ったコードと一貫性が保たれてるほうが品質高い
サービスだとおもいます
じゃなくて
周りに合わせるんだ
どんなくそ設計でも検証通ったコードと一貫性が保たれてるほうが品質高い
サービスだとおもいます
88デフォルトの名無しさん
2017/11/10(金) 15:55:49.97ID:WtBM3Wp4 他人が構築したドメイン構造を把握するスキルも
重要なのかな?
日本のSIlerの場合常駐先がしょっちゅう変わったりする
んだからそうなるとドメインを構築しようとか
どんなドメインなのかの把握が面倒になってしまう。
重要なのかな?
日本のSIlerの場合常駐先がしょっちゅう変わったりする
んだからそうなるとドメインを構築しようとか
どんなドメインなのかの把握が面倒になってしまう。
2017/11/10(金) 21:17:00.97ID:LsbUks3P
>>86
いろんな考え方があるけど一番シンプルなのは
DDDではドメインが一番大事だからドメインと他を切り分けること
UIとDBは明らかに分かると思うからそれをどけて
残るのはアプリ(サービス)層とドメイン層の区別
両者は混同されやすくサービスの肥大化がよく起こるので
リファクタリングを続けて継続的に
ドメインの知識はドメイン層へと移動させていく
>バリデーションや業務ルールのチェック
たしかにこれはどっちに置くか難しいけど
私ならドメインの知識になってるかどうかで考える
たとえばよくある例では日付でうるう年の判定などは
明らかにドメインの知識だからドメイン層に置く
いろんな考え方があるけど一番シンプルなのは
DDDではドメインが一番大事だからドメインと他を切り分けること
UIとDBは明らかに分かると思うからそれをどけて
残るのはアプリ(サービス)層とドメイン層の区別
両者は混同されやすくサービスの肥大化がよく起こるので
リファクタリングを続けて継続的に
ドメインの知識はドメイン層へと移動させていく
>バリデーションや業務ルールのチェック
たしかにこれはどっちに置くか難しいけど
私ならドメインの知識になってるかどうかで考える
たとえばよくある例では日付でうるう年の判定などは
明らかにドメインの知識だからドメイン層に置く
90デフォルトの名無しさん
2017/11/12(日) 10:23:37.61ID:j0JK3XOe バリデーションはエラーメッセージ、UIの強調表示なども絡むからどう考えたってプレゼンテーション層でしょ
ビューモデル(プレゼンテーションの都合であるモノ)のプロパティ属性にバリデーションルールを書くことが標準的になっている点からもこの事実は明らか
ビューモデル(プレゼンテーションの都合であるモノ)のプロパティ属性にバリデーションルールを書くことが標準的になっている点からもこの事実は明らか
2017/11/13(月) 07:29:43.51ID:XVC/GNte
2017/11/13(月) 08:20:06.77ID:1kxbOfqW
2017/11/13(月) 08:41:32.54ID:vmC6RyQT
目的が違えば両方あってもいいんじゃね?ユーザーの利便のためか自衛のためか。
2017/11/13(月) 09:17:00.78ID:KJNT45pE
>>91
ASP.NETって、ビューモデルのバリデーションをクライアント側のJSで突破できちゃうの?
ASP.NETって、ビューモデルのバリデーションをクライアント側のJSで突破できちゃうの?
2017/11/13(月) 12:08:35.87ID:1LsyXLAY
ジャバオのバリデータだろ
2017/11/13(月) 18:48:33.23ID:1kxbOfqW
97デフォルトの名無しさん
2017/11/13(月) 20:17:19.09ID:IDSFIQtw2017/11/13(月) 22:06:30.64ID:KJNT45pE
プレゼンテーション層でチェック
クライアントでチェックする
一緒にしてる奴がいるね
ちなみにコントローラーもプレゼンテーション層な
クライアントでチェックする
一緒にしてる奴がいるね
ちなみにコントローラーもプレゼンテーション層な
99デフォルトの名無しさん
2017/11/14(火) 05:47:03.90ID:9Gbq8NEA100デフォルトの名無しさん
2017/11/14(火) 07:18:29.77ID:R9xQaEyZ101デフォルトの名無しさん
2017/11/14(火) 19:38:43.49ID:kwaLWx7P セキュリティとか悪意のある攻撃を想定すると
話が厄介になるね
セキュリティ考慮でなければ、情報の源泉に近い
JSでバリデーション1本だけで十分だろう。
セキュリティとか認証が絡むとこういったレイヤの層分け
が狂う要因になるのだろうか?
話が厄介になるね
セキュリティ考慮でなければ、情報の源泉に近い
JSでバリデーション1本だけで十分だろう。
セキュリティとか認証が絡むとこういったレイヤの層分け
が狂う要因になるのだろうか?
102デフォルトの名無しさん
2017/11/15(水) 03:47:42.79ID:3vTQ1KLC >>101
仕事で使うなら想定しないケースも希だと思うけど
仕事で使うなら想定しないケースも希だと思うけど
103デフォルトの名無しさん
2017/11/16(木) 07:24:52.29ID:yg2PUXdS DIのフレームワークとDDDって共存できるの
DDDってMVCみたいなレイヤードアーキテクチャからドメイン抜き出したもの程度しか認識ない人間だけど
DDDってMVCみたいなレイヤードアーキテクチャからドメイン抜き出したもの程度しか認識ない人間だけど
104デフォルトの名無しさん
2017/11/16(木) 07:30:52.62ID:DVV+REXJ >>103
MVCはレイヤードアーキテクチャじゃないよ
MVCはレイヤードアーキテクチャじゃないよ
105デフォルトの名無しさん
2017/11/16(木) 12:33:04.40ID:i9LdlFRoレスを投稿する
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
