一般社団法人 全国個人事業主支援協会

COLUMN コラム

はじめまして。
50代でWebアプリケーション開発をしている、小渕と申します。

今回はじめてブログを書いてみることになりました。

エンジニアを長くやっていると、例えば20年ぐらい前の開発時のソースコードの読みづらさと、最近の整理されたソースコードの読みやすさを比較して、雲泥の差があるなとしみじみ思うことがあります。

以前は、他の人が作ったプログラムのバグを修正する際に、至る所に「フラグ」の役割をする変数が定義されていて、一体何をしようとしているのかがさっぱり分からなかったり、バグがどのぐらい残っているのかも想像できないプログラムにも度々出くわしたものです。おかげで仕事の終わりも見えず、当たり前のようにみな残業をしているという光景が半ば日常的になっていました。IT業界自体も「3K」と言われてあまり人気がなかった時代がありました。

それに比べたら、今のIT業界の現場はいかに平和なことか。。
githubなどの使い勝手のよいサービスや、VS Codeなどの便利なフリーの開発環境が使えるようになったりしたことも、もちろんそうなのですが、オブジェクト指向設計やドメイン駆動設計などの設計手法が出現し、洗練されてきたこともIT業界の発展に大きく貢献したことは間違いないでしょう。

ところでみなさんの現場では、ドメイン駆動設計を取り入れているでしょうか?うまく機能していますか?

「まだ」という人の中には、「やってみたいけど、正直メリットや効果がよく分からない」という人もまだ多いのではないかと想像しています。そんな方に、「ドメイン駆動設計がやっていることをとてもイメージしやすいフレーズ」が以前読んだ書籍の中にあったので、紹介したいと思います。

 

ドメイン駆動設計で言う「モデル」は「鉄道模型(モデル・トレイン)」における「模型(モデル)」と近いものがあります。鉄道模型の愛好家は鉄道模型のいくつかの要素に対してリアリティを求める一方、他の要素についてはリアリティをまったく求めません。どの部分にリアリティを求め、どの部分が曖昧であっても構わないのかが鉄道模型を作る上で非常に重要なことであり、これについてはドメイン・モデルも同じです。
(セキュア・バイ・デザイン p.78   https://amzn.asia/d/55zy9ar

どうでしょうか?
本物の鉄道を、システム化する対象であるドメイン(領域)、鉄道模型をソフトウェアに置き換えてみてください。つまり、どのような鉄道模型を作れば愛好家が満足するのか、すなわち、ドメイン駆動設計とは、どのようなソフトウェアを作ればステークホルダーが満足するのか、を考える作業だということです。

鉄道模型に対して鉄道模型愛好家が満足する条件というのは、見た目がリアル(でもサイズは実際と違って構わない)、ちゃんと自走する(でも動力は実際と異なっても構わない)などがあります。一言で言えば、「よくモデル化された模型であること」が条件になります。

ソフトウェア開発においては、ステークホルダー(利害関係者)として、顧客側と開発側がいます。その両方が満足するものを作ることを目指すのがドメイン駆動設計ということになりますが、ソフトウェアの部品であるモジュールや構成などが、実際のシステム化対象ドメインの特徴をよく表したものになっているということが条件になってくるでしょう。ソフトウェアがモジュール名、クラス名、関数名、変数名など名前の集合体であることを考えると、一つ一つのネーミングにこだわるという作業が欠かせない作業の一つということになります。

今日はこのへんで。。

 

The following two tabs change content below.

小渕 進之介

最新記事 by 小渕 進之介 (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア