
はじめに
こんにちは。新卒3年目の岡崎です。
アドベントカレンダー10日目の記事です。
BB事業部では、2025年12月現在、リビルドを進めています。その事例を今回は紹介していきたいと思っています。
なぜリビルドをするのか
BB事業部でリビルドを進める背景には、いくつかの課題があります。
まず、プロジェクト自体がかなり古くなっており、不要なコードが大量に残っている状態になっています。その結果、「どのコードが使われていて、どれが使われていないのか分からない」といった状況が発生しています。
また、使用しているライブラリの中にはEOL(サポート終了)を迎えているものもあり、バージョンアップができないケースもあります。これはセキュリティ面でのリスクにつながるだけでなく、アップデートによるパフォーマンス向上や新機能といった技術的な恩恵を受けられないという問題もあります。
さらに、BB事業部にはLaravelを使用したプロジェクトがある一方で、BEARというPHPフレームワークを使用しているプロジェクトもまだ残っています。BEARは現在では利用機会が少なく、新しく入ったメンバーほど馴染みがなくなっています。そのため、「今後あまり使うことのない技術を、このプロジェクトのためだけに集中的に学ぶ必要がある」という状況が生まれてしまっています。
このような不健全な状態は、結果として開発効率の低下や属人化を招く可能性が高いと考えています。
以上の理由から、BB事業部ではシステムのリビルドを進めていく流れとなりました。
どんな構成を目指すのか
BB事業部では現在、多くのリポジトリが存在しています。そのため、まずはこれらを1つのリポジトリに集約し、モノレポ構成を採用する方針としました。
モノレポとは
モノレポとは、複数のプロジェクトやサービスを1つのリポジトリで管理する開発手法です。
モノレポの例
repo/ ├── frontend/ ├── backend/ ├── batch/
モノレポを採用することで、コードを一元管理でき、変更の影響範囲を把握しやすくなります。 一方で、リポジトリが肥大化しやすいといったデメリットもあります。
しかし、現状ではリポジトリが増え続けていること自体が課題となっているため、これ以上リポジトリを増やさないための対策として、今回はモノレポ構成を選択しました。
アーキテクチャー
今回の設計方針的には、主にリポジトリーパターンを採用しています。
リポジトリーパターンとは
リポジトリパターンでは、Controller → Service → Repositoryという責務分離の構成を取ります。
• Controller:リクエストの受け取り・レスポンスの返却
• Service:ビジネスロジックの実装
• Repository:データベースや外部サービスとのデータのやり取り
このように役割を明確に分けることで、各層の責務がはっきりした設計になります。
リポジトリパターンを採用した理由
この構成を採用した理由は以下の通りです。
• 層を意識した開発ができ、コードの見通しが良くなる
• クリーンアーキテクチャやDDDは、Web開発の現場ではオーバースペックになる場合があり、設計を保ったまま運用し続けるのが難しいことがある。そのため、できるだけシンプルで、チーム全体が理解しやすい構成を選択した
• Repositoryを切り出すことで依存関係が分離され、Unit Testを導入しやすくなる
まずはチーム全体ができるだけシンプルな形で、みんなで開発できることを目指して、この設計を採用しています。
インフラ
インフラの構成管理(IaC)には Terraform を採用しています。
Terraformは、クラウドに依存しにくいという特徴があり、コードベースでインフラを管理できる点や、初学者でも比較的取り組みやすい点を評価して採用しました。
一方で、既存リソースとの整合性を取る作業が想像以上に難しく、特に既存環境がある状態からの導入では、運用面で考慮すべき点が多いことも分かりました。
そのため、現在振り返ると、既存リソースが多い環境ではCloudFormationを選択する判断もあり得たと感じています。
現在、やってみてよかったこと
リビルドを進める中で、開発効率が向上していると実感しています。 実際に、これまで3日ほどかかっていた実装が、1日で完了するケースも出てきました。
また、インターン生にも同じ設計方針で実装を行ってもらいましたが、大きくつまずくことなく、比較的短期間で構成に慣れ、開発に取り掛かることができていました。
設計をある程度揃えたことで、新しく参加したメンバーでも理解しやすい状態になってきていると感じています。
最後に
今回、「今後も開発を続けていくために必要な改善を行いたい」と考え、リビルドを始めました。 しかし、現時点ではまだ道半ばです。
リビルドは短期間で終わるものではなく、継続的な取り組みが必要になります。 それでも、少しずつ改善を積み重ねていくことで、開発しやすい環境や、チーム全体の生産性向上につながっていくと考えています。
今後も地道な改善を続けながら、より良い形を目指していきたいと思います。