SHOEISHA iD

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

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

Developers Summit 2026 セッションレポート

とっても大きく育った「楽天e-NAVI」でモジュラーモノリスを実現するまで

【20-A-7】とっても大きく育ったプロダクトを整頓しよう ~ モジュラーモノリスへ向けた段階的アプローチ方法~

「システム稼働の安全性を担保する」+「システムの境界を明確にする」、4つのステップから成るロードマップとは

 この仮説に基づき、深見氏のチームではモジュラーモノリスへの移行に向けた4つのステップからなるロードマップを策定した。これは単なるコードの書き換えではなく、安全性を担保しながら徐々にシステムの境界を明らかにしていく綿密なエンジニアリングのプロセスだ。

 1つ目のステップは、単体テストの拡充によるリファクタリング基盤の強化である。既存のコードベースには、システムを安全に変更するために不可欠なテストコードが決定的に不足していた。

 そこで、ビジネスロジックの入り口となるエンドポイントからデータベースのアクセスに至るまでを一気通貫で網羅するテストケースの作成に着手。深見氏らは、ソースコードをステップバイステップでデバッグ実行しながら、処理の流れと仕様を解読し、外部システムへの依存などコントロールできない部分は随時モック化しながら、現在のシステムの振る舞いを固定化する「ベストケース」を作り上げていった。

 手動でのカバレッジ向上に加え、AIの力も活用して未到達の条件分岐を埋めていくなど、現代的な手法も駆使してリファクタリングのための強固な安全網を構築したのである。

単体テストを拡充させてリファクタリング基盤を強くする
単体テストを拡充させてリファクタリング基盤を強くする

 続いて、2つ目のステップは「正しい置き場へのコード移動と境界線の設定」。強固なテスト基盤が整備された後は、システム内に散り散りになっている処理を、業務上の正しい境界線の内側に物理的・論理的に整理していく作業を進めた。

 外部からのAPIリクエストを受け付ける部分はプレゼンテーション層へ、ビジネスロジックはアプリケーション層のユースケースクラスへと移動。データベースへのアクセスを担うDAO層については、移動が困難な構成であったため、「リポジトリ」という名前のクラスを新たに作成してラップし、所属する業務領域を明示的に宣言するアプローチをとった。

 さらに、他ドメインからの呼び出しを整理するため、「Expose」という外部公開用のパッケージを定め、そこにアクセスを集中させる設計を採用。これにより、将来的なマイクロサービス化を見据えたAPIエンドポイントの原型をシステム内部に作り上げたのだ。

正しい置き場に移動し、業務知識の境界線を決める
正しい置き場に移動し、業務知識の境界線を決める

 そして、ステップの3つ目が「DDDの文脈を用いた業務知識の集約」だ。ドメイン駆動設計(DDD)の文脈を取り入れ、引かれた境界線の中に「業務知識を集約」していく土台作りを行った。

 最初から完全なモデリングを目指すのではなく、機械的に判断できる部分から着手したのが実践的なポイントだ。あちこちに散らばって定義されていたプリミティブな変数を「バリューオブジェクト」として再定義し、影響範囲が読めない無数のリスト操作を「ファーストクラスコレクション」という専用クラスにカプセル化して処理を集約した。

ドメイン駆動設計の文脈で業務知識をドメインに集約する
ドメイン駆動設計の文脈で業務知識をドメインに集約する

 「まずはその業務知識を集約するための土台を作り上げていくということを目的に、まずここまでの土台を作り上げよう」という深見氏の言葉通り、これはシステムの振る舞いを読み解きやすくするための極めて効果的な戦術であった。

 そして、最後のステップが「隠れビジネスロジックの統合」だ。これは、楽天e-NAVI固有の課題への対処である。通信の通り道に過ぎないはずのAPIの受け口層に紛れ込んでいた「隠れビジネスロジック」を発見したチームは、これらをステップ1と同様にテストで厳重に保護した上で、本来あるべきビジネスロジックの層へと集約し、関連する機能を1つの整頓されたモジュールへと統合する作業を行った。

次のページ
並行開発によるコンフリクト……巨大システムゆえの辛みと解決策

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

Developers Summit 2026 セッションレポート連載記事一覧

もっと読む

この記事の著者

中野 佑輔(編集部)(ナカノ ユウスケ)

 日本総合研究所を経て2025年よりCodeZine編集部所属。

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

山出 高士(ヤマデ タカシ)

雑誌や広告写真で活動。東京書籍刊「くらべるシリーズ」でも写真を担当。

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/23836 2026/05/13 09:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング