モデルを実装するための手段で、私が良く使っているのは、Java, SQL, XML ですね。
XML は、ミドルウェアのセッティング, ant の build 定義、データ交換フォーマット、などいろいろな目的に使っている。
いわゆる言語ですね。
ここで、質問。
「実装する作業」をなんてよぶか?
コーディング
昔から使われているコーディング。今も、HTML コーディングとかは言うらしい。
code a message
というと、メッセージを暗号化するとか、符号化するとかという意味になりそう。
無電のモールス信号も、たしか、 Morse code だったような気がする。
ドメイン駆動設計的には、実装作業をコーディングする、というのは、よくなさそうですね。
関係者で共通の言葉・表現を、モデリングでも、実装でもどこでも使おう、というユビキタス言語の意図からはずれる。
プログラミング
番組の予定表とか、式次第とかで使われるように、「時系列」に順番にならべるという感じで使われる。
スクリプティングなども近い感じですかね。
プログラミングは、手続き型の言語では、ぴったりのような気がする。
Java なんかでも、手続き的に書く場合は、プログラミングでしょうね。
ドメイン駆動設計的には、ドメインロジックをトランザクション・スクリプトとして実装すれば、プログラミングという言葉も悪くはない感じ。
ライティング
個人的には、ドメイン駆動設計の実装は、ライティングだと思っている。
「書き物」という感覚ですね。
ドメインの知識、業務のルールをまとめた、業務マニュアルは、「ラインティング」する。
ドメイン駆動設計の実装は、業務マニュアルのライティング作業そのものなんだと思います。
マニュアルも、ステップ・バイ・ステップ式の手続き型ではない。
「○○とは◇◇と△△の合計である」というような用語の定義が中心にしたマニュアルのイメージ。
技術的には、宣言型ということですかね。
そのオブジェクト(対象物)が何であるかとか、ドメインの知識、業務のルールを、手続き的にはではなく宣言的に書く。
Kent Beck も、 Implementation Patterns の中で、「宣言的」ということを強調していましたね。
---
プログラミング言語という呼び方がかわるとは思えないけど、ドメイン駆動設計の実装は、コーディングやプログラミングでなく、ライティングでやるべきでしょう。 それも、できるだけ宣言的に。
XML は、ミドルウェアのセッティング, ant の build 定義、データ交換フォーマット、などいろいろな目的に使っている。
いわゆる言語ですね。
ここで、質問。
「実装する作業」をなんてよぶか?
コーディング
昔から使われているコーディング。今も、HTML コーディングとかは言うらしい。
code a message
というと、メッセージを暗号化するとか、符号化するとかという意味になりそう。
無電のモールス信号も、たしか、 Morse code だったような気がする。
ドメイン駆動設計的には、実装作業をコーディングする、というのは、よくなさそうですね。
関係者で共通の言葉・表現を、モデリングでも、実装でもどこでも使おう、というユビキタス言語の意図からはずれる。
プログラミング
番組の予定表とか、式次第とかで使われるように、「時系列」に順番にならべるという感じで使われる。
スクリプティングなども近い感じですかね。
プログラミングは、手続き型の言語では、ぴったりのような気がする。
Java なんかでも、手続き的に書く場合は、プログラミングでしょうね。
ドメイン駆動設計的には、ドメインロジックをトランザクション・スクリプトとして実装すれば、プログラミングという言葉も悪くはない感じ。
ライティング
個人的には、ドメイン駆動設計の実装は、ライティングだと思っている。
「書き物」という感覚ですね。
ドメインの知識、業務のルールをまとめた、業務マニュアルは、「ラインティング」する。
ドメイン駆動設計の実装は、業務マニュアルのライティング作業そのものなんだと思います。
マニュアルも、ステップ・バイ・ステップ式の手続き型ではない。
「○○とは◇◇と△△の合計である」というような用語の定義が中心にしたマニュアルのイメージ。
技術的には、宣言型ということですかね。
そのオブジェクト(対象物)が何であるかとか、ドメインの知識、業務のルールを、手続き的にはではなく宣言的に書く。
Kent Beck も、 Implementation Patterns の中で、「宣言的」ということを強調していましたね。
---
プログラミング言語という呼び方がかわるとは思えないけど、ドメイン駆動設計の実装は、コーディングやプログラミングでなく、ライティングでやるべきでしょう。 それも、できるだけ宣言的に。