天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます

【ドメイン駆動設計勉強会】事業活動を理解して設計しよう!に参加してきた

modeling-how-to-learn.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていきます。

会の概要

エンジニアが事業活動を理解する視点を増やすための発表と座談会(雑談)を生々しく語っていこうという会です。

会の様子

以下、時系列順に会で話されていたことを書いていきます。なお、雑談とQ&Aにはプライベートの都合上参加することができませんでした。。

COOのおしごと ~COOって結局何を考え、何をやっているの?~

ライフストーリーチャート

松田さんの半生を紹介するという目的でライフストーリーチャートが紹介されていました。
松田さんが所属する会社でもライフストーリーチャートをチームビルディングの一環としてやられるということで、面白かったです。

COOになぜなったか

一言でいうと「なりたいと言ったからなった」ということでした。
組織が厳しい状態だと感じた時、そのような状態から自らが救おうと考えて社長になりたいと直談判した結果、結果的にCOOになったということでした。

COOが考えること

こういうことを考えるというのはなく、何から何まで考えているということでした。
そういった状況に耐えられるように、無茶ぶりを楽しみ、変化は当たり前だと考えるようにしているということです。

実例として、今日実際に考えていたことが紹介されていたのですが、社員からの退職相談の話や人間関係性が悪く仕事が進まない話など、かなりリアルな事例紹介がされていました。

組織と戦略の関係

戦略が組織に影響を及ぼすのと同様に、組織も戦略に影響するという話をチャンドラーの話を引用しながらお話してくれました。
ただ、戦略は組織とすぐに変えることができるので、この変化のタイミングをよく考えているということでした。

市場の調べ方

戦略を考える際には色々なFWがありますが、実際はほとんど使わないということで、具体的にどのように市場を調べているのか?というお話を聴きました。

その後は、ブログに載せることができないような、松田さんが所属する会社の具体的な数値をもとに、どのように分析をしているのかが紹介されていました。
実際問題としては、3CとSWOTがあれば十分分析ができるということです。

オズビジョンの組織トラブル

ティール組織の考え方を紹介しつつ、勿論理想とは開きがあるものの理想の状態に向かってどのようなことをやっているのかを紹介してくれました。

2on1やもやもや会(なんとなくもやもやしていることを出し合う)、立ち止まり会、360度フィードバック、ジョハリの窓エクササイズといったチームビルディングエクササイズに加えて、完全自律型勤務制度(働く時間・場所・日数を自由に決められる)の導入をしているということでした。

経営を理解するために勉強したこと

スタートアップの取締役をされている田中さんから、経営に関してどのような知識を学んだのか、それはどのような本から学んだか?というのを伺っていきました。
具体的には、経営指標や採用、OKR、システム開発(要求分析、モデリング、要件定義...)についてを学んだということです。

田中さんは要求を、事業要求・業務要求・システム要求・ソフトウェア要求という3種類に分けているということです。
なお、これは、コアドメイン(事業要求)と汎用ドメイン(業務要求)を区別できるようになることでモデリングをしやすくするためにしているということです。
田中さんが実際にモデリングをする際には、RDRAを使っているということですが、event stormingでもなんでもやりさえすればいいと考えているというお話でした。(ただしRDRAが一番分かりやすいと考えている)

※参考文献もいくつも上がっていたのですが、スライド変わる前にメモが間に合わず取り逃してしまいました。。

事業活動のモデリング【入門編】

ドメイン駆動設計を使うポイント

増田さんは、事業活動を理解することに加え、差別化のポイントとなるコアドメインに集中するために設計改善を続けているということでした。

商取引

事業活動を理解するための視点として、まず商取引の考え方が紹介されていました。
事業には売り手と買い手がいるはずで、持続性がある関係も必要なので、互恵やWin-Winの考え方がどこかにあるはずだという前提を置いているということでした。
また、売り手と買い手を結び付けるための要素として、契約と履行が挙がっていました。

また、この商取引はチャネルを介して連鎖しているということで*1、自社とチャネル、チャネルと顧客で契約と履行が発生しているということでした。

価値連鎖

続いて、マイケル・ポーターの価値連鎖の話をしてくれました。
計画駆動の活動(支援活動)と契約駆動の活動(主活動)の2種類が存在するということで、自分たちが開発する機能はどのあたりの機能をどのような活動背景でやっているのかを理解することが重要だということでした。

サービスブループリント

続いて、サービスブループリントの考え方が紹介されていきました。
アジャイルの文脈で行われるユーザーストーリーマッピングは、主活動(カスタマーアクションやフロントステージアクション)を理解することにはつながるものの、実際に見えない部分であるバックステージアクションやプロセスといった解像度で捉えることはできないため、サービスブループリントを使用する意義があるというお話でした。(もちろんこの形式に沿って書くことが重要だというわけではないものの、このように解像度を上げて捉えることが重要だということです)

ドメイン駆動設計のアプローチ

ドメイン駆動設計では、サブドメインを中核サブドメインと支援サブドメイン、汎用サブドメインの3つに分けるというのがポイントだということでした。
分けるために、ビジネスロジックの複雑度や差別化/非差別化の重要度で分類するというポイントも紹介されていました。

差別化と競争

ソフトウェアの重要な要求としては、他社との差別化をすることがまず挙げられますが、実際の企業活動は増田さんの肌感覚だと非差別化の方が重要視されている印象があるということでした。(別に悪いことではなく、それは企業活動として自然なことだと考えているということです)

事業活動をバランスよく理解する

短期/長期×結果/行動の4軸で、事業活動を理解する視点を定期的に変え、どのような活動をしているのか?というのを定期的に立ち返ることが重要だというお話がありました。

全体を通した感想

これまでの増田さんの会とは一味違った話題で、面白かったです。
事業活動をどのように解像度上げて捉えるかという観点で、増田さんの話は特に学びになりました。

*1:勿論チャネルを介さないこともある