SHOEISHA iD

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

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

Developers Summit 2024 Summer レポート

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

 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を使うにしても事業の内容や組織に合わせて、使い方を考える必要がある。

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2024 Summer レポート連載記事一覧

もっと読む

この記事の著者

笹田 仁(ササダ ヒトシ)

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

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

丸毛 透(マルモ トオル)

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

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

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20110 2025/04/03 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング