見出し画像

全社員ユビキタス言語で話す!?ドメイン勉強会レポート

こんにちは。アルプのnote編集部です。

アルプではDDDを採用していて、不定期にドメイン勉強会を開催しています。7月は新しいメンバーが5名入社したこともあり、ドメイン勉強会を開催することになりました。

本日は、7月に行われたドメイン勉強会の様子をかい摘んでレポートしていきます。

ドメイン勉強会とは

会社の成長とともにメンバーが増えていくと、ドメイン知識の差が生まれます。また既存のメンバーの中でも、ドメインモデルの更新やブラッシュアップにより知らない仕様が少しずつ生まれています。

これらを解消するために、アルプではドメイン勉強会を開催しています。アルプのドメイン勉強会では各コンテキスト毎に詳しいエンジニアが講師となり、そのコンテキストの説明と説明の後にクイズ形式でメンバーに答えてもらうというような形式を取っています。

ドメイン勉強会の参加者は全社員となるため、事前知識や専門的な知識をほとんど必要としない内容にしています。

オープニング

画像1

オープニングとして、今回のドメイン勉強会を主催した前川からDDDの説明があり、その後各コンテキストに詳しい講師から説明するという流れになります。

ドメイン勉強会 (8)

アイスブレイク

前川: 今日の流れはこのようになります。時間があれば改定以下の部分もやろうと思います。

ドメイン勉強会

前川: いきなりですが問題です。僕らが行っているDDDとはどれですか?参加者さんお答えください。

参加者: えーっと3番ですか?

ドメイン勉強会 (1)

前川: 正解は1つ目! Domain Driven Design というものです。3番目はジリノール酸ジイソステアリルという化合物でした。

(参加者一同笑い)

ドメイン勉強会 (2)

前川: DDDは、エリック・エヴァンスが考えたソフトウェア技法の一つです。現実世界の複雑な問題領域をドメインと呼んでいて、それをソフトウェアに落とし込むためにどうしたら良いかというのを体系立てたものになります。

前川: 開発者だけがDDDを使うわけではなくて、プロダクトに関わるメンバー全員で実践するものです。例えば、ドメイン領域の専門家、これをドメインエキスパートというのですが、アルプなら社員の公認会計士の方と連携することでドメイン理解を深めてプロダクトを作っています。

前川: DDDの中には色々技法や用語があるのですが、これだけは覚えて欲しいものが3つあります。

1つ目に僕らがソフトウェアに落としこんでいる現実世界の概念をドメインモデルと呼び、振る舞いを定義しています。

2つ目は、僕らが扱っているドメインの範囲を決めているのがコンテキストです。DDDでは境界づけられたコンテキストと呼んでいますが、コンテキストで覚えていただければ問題ないです。

3つ目は、僕らのドメインに対して、同じ言葉を使い、同じモノを認識するための定義がユビキタス言語です。これは毎週の※週報でもユビキタス言語表に更新があればお伝えしています。

※週報: アルプでは毎週金曜日に週報という、今週リリースしたものや、各チームの状況を共有する会があり、その中でユビキタス言語の更新について共有を行っています。Notionをうまく使うことで、更新のあった言語のみが共有されるようになっています。

画像12

ドメインモデルの紹介

ドメイン勉強会 (7)

前川: さてScalebaseの扱っているドメインをみていこうと思います。

ドメイン勉強会 のコピー (1)

前川: プロバイダーはある会社、オペレーターはプロバイダーの従業員、顧客/担当者はプロバイダーの先のお客さんのこととして、この用語を使っています。この辺はかなり現実世界に近いモデルなので、あまり違和感なく覚えられるし普段から使っている言葉かと思います。

前川: プロバイダーの中には会社名など色々な情報があるのですが、各社毎にカスタマイズされたデータもここには保存されています。

ドメイン勉強会 のコピー (2)

前川: プロバイダーの下には顧客が居て担当者が居ます。元々は顧客と担当者は分かれていなくて一つの顧客というオブジェクトの中にいました。顧客は契約や請求など色々な情報に紐付いて参照されているのでデータ構造を変更するのは大変になります。

~~中略~~

このような形で各講師からドメインについて説明を行っています。

クイズ形式で理解を深める

いくつかのドメインの説明が終了した後にその内容を振り返るためにクイズ形式を取っています。そちらの風景もご紹介します。

ドメイン勉強会 のコピー (3)

前川: 契約を作るときに利用周期は変更可能であるかどうか?この問題に答えていただくのは参加者さんお願いします。

参加者: 不可能ですかね。

前川: では答えを見ていきましょう。(実際にScalebaseの画面を見せながら)利用周期は変更できません!

参加者: よし!

前川: そのうち可変になるそうです。現状は不可能ということで正解です!

前川: 続いて次の問題です。ディスカウントの適用単位はどのオブジェクトか?参加者さんお願いします。

参加者: 課金項目単位かな。

前川: 契約課金項目単位です。契約だけというところもポイントです。

前川: もう一つくらい問題いきましょうか。自動更新設定は以下のどちらの単位で設定が可能か?参加者さんお願いします。

参加者: 契約アイテム、Aですかね。

前川: 正解です。

ドメイン勉強会 (3)

前川: みなさん契約の概念に関してはバッチリですかね。ここで聞いてみたいことがある人があればお願いします。

参加者: 最後の問題のAとCの違いってなんですか?

前川: 出題者(問題を考えた人)の方お答えください

出題者: Cは契約オブジェクトで、Aはその下にぶら下がるアイテムです。仮にCが答えだとするとカタログや契約のアイテムに対して統一的な自動更新の設定になってしまいます。そうではなくて、同じ契約の中でもこのプランは自動更新するけど、このアドオンは自動更新しないような設定ができるようになっています。

参加者: なるほど、ありがとうございます。

振り返り

久しぶりのドメイン勉強会ということもあり定期的に開催して欲しいという声が多かったです。これまでは、メンバーが一気に増えたタイミングで不定期に開催していましたが、開発チームも大きくなり、開発速度も上がっているため一度に紹介できる情報に限界が見えてきました。今後は、開催のフォーマットを整理しつつ定期的に開催していきます。

終わりに

アルプでは積極的にメンバーを募集しています。今回の記事を見てご興味を持ちましたら、是非以下の採用ページからご応募お待ちしております!




この記事が気に入ったらサポートをしてみませんか?