TRACERY Lab.(トレラボ)

TRACERY開発チームが、要件定義を中心として、システム開発で役立つ考え方や手法を紹介します。

書籍の魅力と翻訳の舞台裏〜「ドメイン駆動設計をはじめよう」翻訳者・レビュアー対談その1

TRACERYプロダクトマネージャーの haru です。

2024年8月29日(木)に開催された勉強会「BPStudy#204〜ドメイン駆動設計をはじめよう」では、書籍ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法(以降、LDDD*1)の翻訳者とレビュアーをお招きし、パネルディスカッションを実施しました。その時の様子をお伝えします。翻訳者とレビュアーの見解を通じて、書籍をより深く理解し、実践に役立つヒントを得られるでしょう。

シリーズ記事index

パネルディスカッション参加者
  • パネラー
    • 増田 亨(ますだ とおる) 氏(翻訳者:以下、増田)
    • 綿引 琢磨(わたびき たくま) 氏(翻訳者:以下、綿引)
    • 佐藤 匡剛(さとう ただよし) 氏(レビュアー:以下、匡剛)
  • モデレータ
    • haru(本記事の執筆者)

現場感覚に溢れ、分かりやすく伝える工夫が施されている

haru:LDDDの魅力を教えてください。

増田:大きく2つあって、1つ目は著者のホノノフ*2さんの経験値、実践経験豊かな体験から得た設計の考え方が生々しく伝わってくる現場感覚に溢れた本だということ。2つ目は、分かりやすく説明することを工夫している本だということです。

「エリック・エヴァンスのドメイン駆動設計」(以降、エヴァンス本*3)もエヴァンスさんの体験談なのですが、分かりやすく伝えようとしてないだろうと(笑)。

LDDDは、どう説明したら伝わるんだろうということがとても意識されていて、構成や具体例、関連付けなどが工夫されている本であるというのは魅力に感じましたね。

haru:分かりやすいというのは私も感じました。LDDDを読んだ後に、エヴァンス本を読んでみたんですね。そうしたらなかなか読み進まないぞと思ったんですよね(笑)

増田さんもドメイン駆動設計について、人にいかに分かってもらうかということでずっと活動されてきてると思いますが、そのようなところが共通しているのかなと読んでいて感じました。

増田:方向感とか、大切にしているところはとても共感があったのと、この本を読んで、自分はこんなにちゃんと伝えようと工夫してなかったなと反省しきりという感じです。説明の仕方が非常にうまいとおもいます。

haru:原書の説明の仕方がうまいというのもあると思いますけれども、翻訳で、たとえば「ユビキタス言語*4」が「同じ言葉」と訳されていて、分かりやすい、伝わりやすいということに重きを置いているというのを感じました。

増田:そう言っていただけると嬉しいですね。分かりやすさというのは、今回の翻訳の大きなテーマだったので。

匡剛:私は増田さんから昨年の2023年にレビュアーとしてお声がけいただきました。それまでは正直言って、LDDDの原書はいくつも出版されているドメイン駆動設計の書籍の1つでしかないと思っていてノーマークでした。

レビューの話をいただいてチェックしてみたらネットで評判が良くて、実際に翻訳を読ませていただいたら、これは分かりやすくてすごい本だなと。エヴァンス本のモヤモヤした難解なところが消えてすっきりした印象です。こんなにドメイン駆動設計って分かりやすかったんだ、と。

さらに、翻訳の方針として大胆な訳語にするということも伺って、実際に翻訳を読んでみると日本語として機能して馴染んでいました。たとえば「同じ言葉」とか「区切られた文脈*5」とかですね。2023年の11月にレビューした段階で、これは出版されたらすごいことになるかぁと思い、出版を待ち望んでいました。出版後、さまざまな方のポジティブな意見をブログなどで拝見して、届くところに届いてるんだなぁという気がします。

ドメイン駆動設計の再解釈

綿引:いろいろ物議はあるとは思いますが、読みやすさは突出してると思います。ドメイン駆動設計の再解釈というか、エヴァンス本の出版(2003年)から時間が経ってあらためてドメイン駆動設計について考えなきゃいけないよねとか、技術も含めて現代版として整理された感覚があります。本の構成として網羅的に技術的なことも書いてありますし、事業への理解の大切さも書いてある。私は第1部「設計の基本方針」がとても好きなんですが、本当に良い本だなぁと。

haru:増田さんのスライドに設計の選択肢がリストアップされていたのを見て、LDDDにはこんなに設計手法について書かれていたのか*6、と感じました。それでも読みやすいので圧倒されないんですよね。

増田:そうなんですよ。順序立てた説明がうまいんですよね。

haru:再解釈されたという点でいうと、この書籍は「令和時代のドメイン駆動設計本」だと思ったんですよね。今の時代のシステムに必要な設計手法とドメイン駆動設計の関係が説明されていますよね。

戦略的設計から説明する意義

匡剛:エヴァンス本の良くなかった点をあえて言うと、書籍の最初で戦術的ドメイン駆動設計の話を始めてしまったことだと思います。第1部「ドメインモデルを機能させる」、第2部「モデル駆動設計の構成要素」で戦術的設計から説明を始めていて、いちばん大事な戦略的設計、LDDDでいう第Ⅰ部「設計の基本方針」の内容をエヴァンス本は最後に持ってきたので、日本のコミュニティのドメイン駆動設計の議論で、戦略的設計はあまり触れられなかったんですよ。

それがLDDDでは、戦略的な話を最初に持ってきているので、読んだ人は否が応でもそこから入ることになります。ドメイン駆動設計の説明としてそのような構成が正しいと思いますし、本来のドメイン駆動設計ですし、そこがLDDDの魅力なのかなと思います。

haru:ソフトウェアが事業と結びつくというところですよね。エヴァンス本でも熱心に語られてますが、後ろの方に書かれている。

匡剛:そうなんですよ。ほとんどの人は読んでないと思います(笑)

haru:この書籍を読んで、戦略的な部分を初めて理解できたと感じました。私も、LDDDを読むまでは、ぼんやりとした印象しか持てていなかったように思います。

日本語の表現力はコーディング力につながった

haru:翻訳にあたり、大変だったことや印象的なエピソードなどありますか。

綿引:日本語の知見や表現力をどのように身につけるかが課題でした。翻訳を通じて身につけたことがコーディングにも反映されるというか、表現に対して敏感になるような感覚がありました。日本語の表現力が、開発の仕事にもフィードバックされていると感じています。

haru:文章もプログラムコードもコミュニケーションの手段ですからね。

増田:いちばん難しかったのは日本語ですね。国語力。言葉を選んで文章として伝える。英語の解釈も大変といえば大変だったのですが、日本語にこんなに苦労するとは思いませんでしたね。

エヴァンス本とLDDDの内容の違いによる翻訳時の混乱

増田:エヴァンス本と考えが違ってるところがあるんですね。私自身はエヴァンス本を相当読み込んだし、いろいろ調べてきてるんで、エヴァンスがしている定義とか説明が無意識のうちに体に入ってるんですよ。エヴァンス本の内容とLDDDの内容が違っていてハレーションを起こす場所が結構あったんですよ。言ってること違うんじゃない?と。

それをレビュアーの匡剛さんが「違って当たり前で後知恵*7みたいなものなんですよ」と。エヴァンス本から20年以上経っていろいろ知見が集まって、コミュニティ含めて、本人の経験も含めて、後知恵でドメイン駆動設計ってこういうものなんだよね、と見直した本だと思えばよいんじゃないですか、と言ってくれて、ぱっと大きな転換点になりました。そうか、そういう見方をして読めば、わかりやすく書いてあるなと。あの一言があったからこそ、この内容になったんだなと思いますね。

匡剛:技術書の一般的な翻訳と違って大胆に日本語訳するところに力が入っていて、翻訳から学べることが非常に多かったのが、レビュアーとして携わることができて本当に良かったと思うところです。

レビューに限らず、本を熟読するというところはとても大事で、単に表から裏まで通しで読むのと、レビューのために1文1文読んでいくのではだいぶ読み方も違いますし、得られる理解の深さも違いました。勉強会や読書会などをみんなで開催して少しずつ読んでいくと、近い経験を得られるのですが、勉強会や読書会に近い読み方が今回できたなと思います。

次回のエヴァンス本との相違点〜「ドメイン駆動設計をはじめよう」翻訳者・レビュアー対談その2 - TRACERY Lab.(トレラボ)では、LDDDとエヴァンス本の相違点についてお伝えします。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:原書のタイトルは "Learning Domain-Driven Design"

*2:Vlad Khononov

*3:エリック・エヴァンスのドメイン駆動設計: ソフトウェアの核心にある複雑さに立ち向かう。ドメイン駆動設計の原典として広く認知されている。

*4:システム開発において、開発チームとドメインエキスパートが共通の言語を使ってコミュニケーションするためのドメイン駆動設計の概念。

*5:特定のモデルが定義される境界のこと。従来は、「境界づけられたコンテキスト」と訳されることが一般的だった。

*6:トランザクションスクリプト、アクティブレコード、ドメインモデル、イベント履歴式ドメインモデル、レイヤード、ポートとアダプター、CQRS、Web API メッセージング、送信箱、サーガ、プロセスマネージャー、テスト戦略、イベントストーミング、大きなリファクタリング、マイクロサービス、イベント駆動型アーキテクチャ、データメッシュ

*7:物事が終わってしまってから出てくる知恵。