SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社では、「独習」「徹底入門」「スラスラわかる」「絵で見てわかる」「一年生」などの人気シリーズをはじめ、言語や開発手法、最新技術を解説した書籍を多数手がけています。プロジェクトマネジメントやチームビルティングといった管理職向けの書籍も豊富です。

ITエンジニアとしてのスキルアップ・リスキリングに、ぜひお役立てください。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
Developers Summit 2024 Summer レポート

「バランス大事」で終わらない設計の話~DDDを実践し、クリーンアーキテクチャに至る~

【23-B-5】DDDを志して3年経ったら「DDDの皮を被ったクリーンアーキテクチャ」になった話

 設計がまずいと、開発が遅々として進まなかったり、当初思い描いていたものとはまるで別物のシステムができてしまったり、保守や拡張が面倒なシステムになってしまうなどの問題が発生する。しかし、設計にこだわりすぎてしまうと、教科書に従うばかりで、開発現場の置かれている現実を無視した設計になってしまうこともある。このセッションでは、オンライン家庭教師サービス「マナリンク」を開発運営しているNoSchoolでCTOを務めるmeijin氏が、ドメイン駆動設計(Domain-Driven Design:DDD)を基本としながら、現実に合わせて柔軟に手法を変えて、サービスを開発していった過程を明かした。

「良い設計」は分からない。では、どうする?

 NoSchoolは2018年設立の新しい会社だが、設立当初からマナリンクに取り組んでいたわけではない。別の事業を進めていたが2020年に行き詰まり、方針を転換してマナリンクの事業を始めた。meijin氏は当時を振り返り「元々の事業の後始末をしながらマナリンクを立ち上げなければならなかったが、エンジニアは3~4人しかいなかった。割り切りが必要だと判断した」と語る。

 競合の参入や、そもそもの事業計画が良くなかったなど、失敗の原因は色々考えられるものの、当初は「コードの品質が悪かったためにバグが入ってしまったのか」とか「DDDに基づく実装を突き詰め過ぎたのか」と失敗の原因をいろいろ考えてしまったという。

株式会社NoSchool CTO 名人氏
株式会社NoSchool CTO meijin氏
株式会社NoSchool EM 近藤 裕輝氏
株式会社NoSchool EM 近藤 裕輝氏

 meijin氏は、こういうときエンジニアが考えることは3つに分かれると言う。1つ目は、事業失敗の経験から「立ち上げ期の設計で頑張るのはもう止めよう」という考え。2つ目は「どんなに事業が良くないものでも、設計だけは頑張ろう」という考え。3つ目は「どの設計が良いのかは、そんなに簡単には分からないのだから、その時々で最善と思う判断をしていこう」という考えだ。当時のmeijin氏の頭の中には、3つ目の考えがあった。

 またmeijin氏は、DDDについてさまざまな論争が巻き起こっていることに気付いたという。例えば「DDDはこうあるべきだ」という意見と、「そんなことにこだわる暇があるなら機能を作れ」という意見がぶつかり合っていたと振り返る。また、「DDDに従わないとまともなプロダクトは作れない」という意見もあったと紹介しながら、「設計を学び始めた人が陥りがちな落とし穴。良いものを作るなら、これに従わなくてはならないと考えてしまいがち」と指摘する。

DDDについてさまざまな論争が巻き起こっていたが、そもそもの前提を書いたままの議論になっていた
DDDについてさまざまな論争が巻き起こっていたが、そもそもの前提を欠いたままの議論になっていた

 このような論争を眺めたmeijin氏はあることに気付く。「こういう組織、こういう事業でやったら上手くいった」という前提がないまま議論が進んでしまっていることと、前提が無いまま議論をしてしまうと論争になりやすい。良いものを作るためにDDDを活用することは良いことだが、がんじがらめに縛られてしまうと何もできなくなる。そしてDDDを使うにしても事業の内容や組織に合わせて、使い方を考える必要がある。

 また、この時期から「削除しやすい設計」を意識するようになった。どんどん機能を作って、試してみて、不要なものはどんどん捨てていくという、スタートアップ企業によく見られる仕事の進め方を意識してのことだ。つまり、自然と機能を削除しやすい疎結合な設計を意識していたのだ。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます
  • ・翔泳社の本が買える!
    500円分のポイントをプレゼント

メールバックナンバー

次のページ
DDDにおける設計方針を4つの観点で整理し、実践に移す

この記事は参考になりましたか?

Developers Summit 2024 Summer レポート連載記事一覧

もっと読む

この記事の著者

笹田 仁(ササダ ヒトシ)

 フリーランスのライター、編集者。IT、特にソフトウェア開発の話が好きです。 趣味はドラムを叩くこと。コロナ騒ぎでリハーサルスタジオに入りにくくなり、ちょこちょこと楽器を買うことでストレスを解消していたら、いつの間にか置き場所に困るほどになってしまいました。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/20110 2025/04/03 11:00
" ); }

おすすめ

アクセスランキング

  1. 1
    GitHub Copilot BusinessとProでClaudeとCodexが利用可能に
  2. 2
    Google Workspaceで直近発表された新機能をまとめて紹介 NEW
  3. 3
    ITエンジニア本大賞 2026の最終プレゼンをレポート 栄冠に輝いた著者が語る本の魅力
  4. 4
    パナソニックはなぜ開発環境の「文房具化」に挑んだのか──グループ横断で進めた開発環境改革の舞台裏
  5. 5
    「REPL」 ~マンガでプログラミング用語解説
  1. 6
    VSCodeでPHP開発環境を構築しよう
  2. 7
    Notion、ページをフルスクリーンプレゼンテーションにする新機能を発表 NEW
  3. 8
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  4. 9
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  5. 10
    OpenAIがAmazonと協業し、Amazon Bedrock上でネイティブに動作する基盤を提供 NEW

アクセスランキング

  1. 1
    GitHub Copilot BusinessとProでClaudeとCodexが利用可能に
  2. 2
    Google Workspaceで直近発表された新機能をまとめて紹介 NEW
  3. 3
    ITエンジニア本大賞 2026の最終プレゼンをレポート 栄冠に輝いた著者が語る本の魅力
  4. 4
    パナソニックはなぜ開発環境の「文房具化」に挑んだのか──グループ横断で進めた開発環境改革の舞台裏
  5. 5
    「REPL」 ~マンガでプログラミング用語解説
  6. 6
    VSCodeでPHP開発環境を構築しよう
  7. 7
    Notion、ページをフルスクリーンプレゼンテーションにする新機能を発表 NEW
  8. 8
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  9. 9
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  10. 10
    OpenAIがAmazonと協業し、Amazon Bedrock上でネイティブに動作する基盤を提供 NEW
  1. 1
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  2. 2
    【速報】ITエンジニア本大賞 2026、技術書部門とビジネス書部門の大賞が決定!
  3. 3
    「LTSとSTS」 ~マンガでプログラミング用語解説
  4. 4
    GitHub、Markdownで目標を記述することでタスクを自動実行する「Agentic Workflows」公開
  5. 5
    「否定された」と感じさせないコードレビューの作法。チームを育てるテキストコミュニケーションとは?
  6. 6
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  7. 7
    C++の新機能を理解する──静的なoperator()/operator[]と多次元対応operator[]など言語仕様の強化
  8. 8
    「REPL」 ~マンガでプログラミング用語解説
  9. 9
    Apple、2026年4月からiOSアプリの新SDK対応を必須化
  10. 10
    最新バージョン.NET 10/Visual Studio 2026の登場が、開発者にいかなる価値をもたらすか──「ECHO 2025」開催

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    GitHub Copilot BusinessとProでClaudeとCodexが利用可能に
  2. 2
    Google Workspaceで直近発表された新機能をまとめて紹介 NEW
  3. 3
    ITエンジニア本大賞 2026の最終プレゼンをレポート 栄冠に輝いた著者が語る本の魅力
  4. 4
    パナソニックはなぜ開発環境の「文房具化」に挑んだのか──グループ横断で進めた開発環境改革の舞台裏
  5. 5
    「REPL」 ~マンガでプログラミング用語解説
  1. 6
    VSCodeでPHP開発環境を構築しよう
  2. 7
    Notion、ページをフルスクリーンプレゼンテーションにする新機能を発表 NEW
  3. 8
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  4. 9
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  5. 10
    OpenAIがAmazonと協業し、Amazon Bedrock上でネイティブに動作する基盤を提供 NEW

アクセスランキング

  1. 1
    GitHub Copilot BusinessとProでClaudeとCodexが利用可能に
  2. 2
    Google Workspaceで直近発表された新機能をまとめて紹介 NEW
  3. 3
    ITエンジニア本大賞 2026の最終プレゼンをレポート 栄冠に輝いた著者が語る本の魅力
  4. 4
    パナソニックはなぜ開発環境の「文房具化」に挑んだのか──グループ横断で進めた開発環境改革の舞台裏
  5. 5
    「REPL」 ~マンガでプログラミング用語解説
  6. 6
    VSCodeでPHP開発環境を構築しよう
  7. 7
    Notion、ページをフルスクリーンプレゼンテーションにする新機能を発表 NEW
  8. 8
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  9. 9
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  10. 10
    OpenAIがAmazonと協業し、Amazon Bedrock上でネイティブに動作する基盤を提供 NEW
  1. 1
    GitHub CopilotがClaude Opus 4.1、GPT-5、GPT-5-Codexの非推奨を発表
  2. 2
    【速報】ITエンジニア本大賞 2026、技術書部門とビジネス書部門の大賞が決定!
  3. 3
    「LTSとSTS」 ~マンガでプログラミング用語解説
  4. 4
    GitHub、Markdownで目標を記述することでタスクを自動実行する「Agentic Workflows」公開
  5. 5
    「否定された」と感じさせないコードレビューの作法。チームを育てるテキストコミュニケーションとは?
  6. 6
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  7. 7
    C++の新機能を理解する──静的なoperator()/operator[]と多次元対応operator[]など言語仕様の強化
  8. 8
    「REPL」 ~マンガでプログラミング用語解説
  9. 9
    Apple、2026年4月からiOSアプリの新SDK対応を必須化
  10. 10
    最新バージョン.NET 10/Visual Studio 2026の登場が、開発者にいかなる価値をもたらすか──「ECHO 2025」開催