Uzzu::Blog

Software Design, and my life.

ドメインを定義づけて問題をアスペクトに分離する、とはどういう意味だったのか

この記事はハワイアンAdvent Calendar 2020 11日目の記事です。嫌いなブログの冒頭は「TL;DR」です。既に今回のAdvent Calendarで書いたブログでも使ってしまいましたが、本当は3行まとめも嫌いなんですよね。でも実際、現場においても3行でってよく言われます。時代に求められているのだと思います。読まれる文章を目指すためにはトレンドってやつも利用する必要があって、アーキテクチャも同じ様にトレンドというものは考慮しなければなりません。トレンドに乗っかるのもまた人の営み。(この続きはカットされました。)

ソフトウェア開発の最中で共通性を導き出す行為は2パターンに分けられます。

  • 帰納的
    • アナロジーや自分たちの過去の経験から抽象を定式化しようと試みる
  • 演繹的
    • いままで見たことのない構造を認知する
    • ドメイン自身を観察して抽象・分割のための鍵を探す

現在、世に広く浸透している設計パターンや抽象化テクニックは帰納的なものに近いです。一方で我々が開発するソフトウェアというのはなまものであり、共通化というトピックに関してはじっくりとソフトウェアを観察してソフトウェアの特性を掴み、演繹的に導きだす事になるでしょう。これらの営みを進めていくためには、ドメインの定義づけが必要になります。定義づけていった個別のドメインが全体としてのドメインに帰属します。それぞれのドメインに独立性をもたせつつ、最終的に1つのサービスとして成長させていく、というのが現代のソフトウェア開発なのかなと思います。

数日前のブログから言っている事は変わってないし、進化的アーキテクチャでも語られている内容だよな、というとそうなんですが、この本より以前に同じ内容について語られている本があるのをふと思い出して、その語彙を思い出しながら自分の今の言葉に落とし込む試みをしたくなったのです。 その本はマルチパラダイムデザインという本で、初版が2001年なんですがとにかく語彙が難しいし、自分が初めて読んだのが2009年だったか2010年だったか忘れてしまったんですが経験不足で正直全部は分からなかった。最近の技術書がラノベに見える。…比喩があんまり良くなかったですが、本当に最近の技術書は言葉選びまで含めてわかりやすい。当時から見解というのは大きく変わっていなくても、時代が進んで語彙が整理されていくとこんなに分かりやすくなるんだなあと改めて関心したのでした。既にこんなに分かりやすいのに、最終的に3行になるのかなあ。仮に3行になったとして、本当の意図は伝わるのかなあ。

comments powered by Disqus