ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

設計の楽しさを伝えたい!「Mix Leap Study 特別編 レガシーをぶっつぶせ。現場でDDD!」を開催しました

こんにちは、ヤフーの大阪オフィスでサービスを支えるプラットフォームの開発をしている辻(@crossroad0201)です。

2019年8月31日(土)、グランフロント大阪にある大阪オフィスで「Mix Leap Study 特別編 - レガシーをぶっつぶせ。現場でDDD! コラボカンファレンス」を開催しました。
今回のイベントはDDD(ドメイン駆動設計)をテーマとしたカンファレンスで、関東と関西から17名の登壇者陣、参加者も164名(ヤフー社員含む)もの方々にご来場いただき、懇親会まで大盛況のうちに閉幕となりました。

この記事では、イベントを主催させていただいたひとりとして、このイベントに込めた思いをお伝えしたいと思います。

DDDとは

DDDはドメイン駆動設計(Domain Driven Design)の略で、書籍「エリック・エヴァンスのドメイン駆動設計」によって紹介されているソフトウエアの設計手法です。

ソフトウエアが対象とする業務(問題領域=ドメインと呼びます)を分析してモデル化し、そのモデルを中心としてソフトウエアの設計・開発を進めていきます。
書籍の副題「ソフトウエアの核心にある複雑さに立ち向かう」の通り、モデルを中心にすることでその業務が本来持っている複雑さを浮き彫りにし、それを解決することに注力できるようにすることで、より顧客価値の高い・競争力のあるソフトウエアを作り出すことができます。

昨今の社会やビジネスの変化のスピードとクラウドなどの技術進歩のスピード、これらに対応するためには業務的な関心事と技術的な関心事は分けて考えなければなりませんが、DDDはこれらの関心事を分離し業務的な関心事に注力するための手法として注目を集めています。

開催までの経緯

今回開催したイベントはそのDDDをテーマとしたカンファレンスです。
2019年5月11日(土)にヤフーの東京・紀尾井町オフィスを会場として開催された「レガシーをぶっつぶせ。現場でDDD!」の大阪再演として企画しました。

私と、同じく大阪オフィスでYahoo!天気・災害の開発を行っている山崎(@44x1carbon)の2人で東京でのイベントに参加し、登壇者の皆さまに大阪でご登壇いただけないかお声かけさせていただいたのですが、皆さまから二つ返事で快諾していただき実現させることができました。

さらに大阪での再演にあたっては、東京からの登壇者陣に加えて関西でご活躍されているエンジニアにも登壇をお願いし、大阪オフィスからも2名登壇しています。

豪華セッションリスト!

総勢17名の登壇者をお迎えし、現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法 の著者でもある 株式会社ギルドワークスの増田 亨さんによる基調講演や、実際にDDDでの設計・プログラミングを体験できるハンズオンなど、非常に充実したセッションリストとなりました。

スピーカー集合写真

タイトル 登壇者 ※敬称略
ドメイン駆動設計という設計スタイル ギルドワークス株式会社 増田 亨
現場でドメイン駆動設計を広げるには何をすれば良いか? 株式会社チームボックス 安西 剛
抽象的な教えを試行錯誤しながら解釈した DDD の実践レポート ビッグローブ株式会社 ほげさん
劇的ビフォーアフター 〜BIGLOBEのDDDの昔と今〜 ビッグローブ株式会社 曽根 大作
DDDモデリングハンズオン 株式会社チームボックス 安西 剛、ビッグローブ株式会社 西 秀和、藤田 直、村上 英誉
設計人材を育てるために DDD をどう使うべきか? 株式会社レヴィ 萩原 利士成
DDDのモデリングとは何なのか、そしてどうコードに落とすのか 株式会社ビズリーチ 松岡 幸一郎
過去の失敗例から再考するモデル駆動設計 Chatwork株式会社 かとじゅん
ドメインエキスパートと行う業務システム開発 @haljik
設計可視化するツール Jigの実演デモ irof + 株式会社ギルドワークス 増田 亨
QualityとDeliveryを両立させるために僕らがやったこと 〜トラベルシステムの技術全面刷新〜 ヤフー株式会社 関口 岳志
ドメイン駆動設計とマイクロサービス ヤフー株式会社 三石 広樹
手探りで始めるDDD ~ 成功と失敗 ~ ヤフー株式会社 薮内 聖也
ドメイン駆動設計でモブワークしました ヤフー株式会社 辻 陽平

参加者写真1 参加者写真2 参加者写真3 ハンズオン写真 懇親会写真

今回のイベントに込めた思い

今回のイベントの大きな目的のひとつは、関西圏のエンジニアにDDDについて理解を深める場を作ることでしたが、私個人的に最も伝えたかったのはソフトウエアの「設計」の楽しさを共有したいと言うことでした。

昨今、SNSなどを通じてIT業界の話題を見ていると、やはり「最新の技術」に注目が集まるのは当然です。
最近であれば、DockerやKubernetesに代表されるコンテナ技術、AWS・Microsoft Azure・Google Cloud Platformなどのクラウドプラットフォーム、そしてデータを使った機械学習やAI...
また、スクラムなどのアジャイル開発プロセスも継続してホットなテーマかと思います。

私はこれらの「技術」「プロセス」に加えて、今こそ「設計」が非常に重要だと考えています。
「技術」をうまく使うにはその使い方を知るだけではなく、その特性をビジネス価値につなぐための「設計」が必要不可欠です。
また、アジャイルな「プロセス」を回そうにも、ソフトウエアがそれに対応していけるだけの変更容易性を備えた「設計」がなければ回りません。

DDDは「設計」をする上での重要な視点を与えてくれ、ビジネスの本質を見抜く洞察力を鍛えてくれるものだと思います。
プログラムを書いて動くソフトウエアを作ることはもちろん楽しいですが、混沌として曖昧な世界をさまざまな視点から見て、悩み、分析し、やりたかったことがキレイに設計できたときの気持ちよさもまたソフトウエア開発の醍醐味かなと思います。

このイベントを通じて、参加していただいたエンジニアの皆さんと設計の楽しさを共有できていれば幸いです。

ヤフーのDDD事情は?

ところで、ヤフーのDDD事情はどうでしょうか?

現在、ヤフーではより早くより多くの便利さを届けるために全社的な技術刷新を行っています。
マイクロサービス化によるアーキテクチャの見直し、PaaS(Paltform as a Service)・CaaS(Container as a Service)・FaaS(Function as a Service) と言ったクラウドプラットフォームへの移行、継続的デリバリーなどの開発環境のモダン化...これらを通じてエンジニアがビジネスやサービスの価値創出に集中できるようにすることを目指しています。

その中で「設計」の重要性も認知されてDDDへの注目度も高まっており、導入事例も増えつつあります。
今回のイベントでも東京から2名、大阪から2名のヤフーエンジニアが登壇させていただきました。

QualityとDeliveryを両立させるために僕らがやったこと

東京・紀尾井町オフィスの関口から、ヤフーが進めている技術刷新においてさまざまな制約の中で品質の高いソフトウエアを開発するためにDDDを導入したお話しです。

DDDはある種の文化的な側面があると思いますが、エンジニアだけではなく、営業部門などの関係するステークホルダーも巻き込んでその文化を作っていく必要があります。
セッションでは設計やプログラミングに関する事例から、関係者との合意をどうやって取り付けていったのかと言う戦略的な事例も紹介されていました。

DDDは一見すると初期投資が高く付く印象があるため、ビジネス側から見た期待値にDDDがどう寄与するのかを説明することが重要だと思いました。

ドメイン駆動設計とマイクロサービス

東京・紀尾井町オフィスの三石から、コマース系コンテンツの入稿システムでDDDとマイクロサービスを組み合わせたお話しです。

マイクロサービスと言う言葉は非常によく使われていますが、そのサービスをどういう粒度でどのように分割するのかは非常に難しいところです。 このセッションではその問題に対するひとつのアプローチとしてDDDのドメインを切り口として使うことが紹介されていました。

ドメインごとにマイクロサービスを分けることで、個々のマイクロサービスは独立してサービスを提供できるのではないかと思います。

手探りで始めるDDD ~ 成功と失敗 ~

大阪オフィスの薮内から、Yahoo!ダイニング のリプレースでDDDを採用したお話しです。

従来の構造化設計ではなく、DDDの「サブドメイン」や「集約」によってビジネスの観点から凝集度の高い設計を目指したそうです。
発表では「まだまだ改善できる余地がある」とのことでしたが、まさにその通りでソフトウエア開発で最初からいきなり完璧な答えを出すことは現実的ではないと思います。
DDDはフィードバックと学びの機会を与えてくれ、改善のサイクルを回すことにも有効だと思いました。

ドメイン駆動設計でモブワークしました

私、大阪オフィスの辻が発表しました。
DDD経験の浅い新規チームで、DDDとモブワークを組み合わせたお話しです。
いかにモブワークでドメインに集中するか、そのためにソフトウエアの構成やモブワークの進め方を工夫した、というお話しさせていただきました。

DDDでは業務(ドメイン)に対する共通理解を作ることがポイントになると思いますが、モブワークは共通認識を作り・育てていくのに有効だと思います。

おわりに

集合写真

イベント後に回答いただいたアンケートでは95%もの参加者の方々に「有意義であった」との回答をいただきました。
「東京での開催には参加できなかったので、大阪で開催されてよかった」と言ったコメントもいただいており、大阪で再演できてよかったと思うとともに今後も関心の高そうなイベントを大阪招致できればと思います。

大阪オフィスでは、Mix Leap という場を通して、関西圏のエンジニア・クリエイターが共に学び、成長できる場をこれからも提供していきます。 毎回、さまざまなテーマでイベントを開催していますので、ご興味のある回にはぜひお気軽に参加いただければと思います。

最後に、多くの登壇者の皆さま、参加してくださった皆さま、そしてイベントの計画・準備・運営をサポートしてくれたスタッフのおかげで今回のイベントを開催することができました。
この場を借りて皆さまに感謝の気持ちをお伝えしたいと思います。ありがとうございました。

Photo Credit : 岡田 信夫

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました


辻 陽平

サービスプラットフォームエンジニア

ヤフーのさまざまなサービスを支えるプラットフォームの開発・運用をしています。

このページの先頭へ