Tech Blog

DVDレンタルシステムをDMM型プラットフォームへ昇華させる構想 — 最初の一歩をどこに置くか

Architecture Design

はじめに

「DVDレンタルシステムを作っている」と言うと、「今の時代にDVD?」と思われることがあります。

でも、このプロジェクトの本質はDVDではありません。

「DVDレンタル」は、プラットフォームビジネスの最初の一歩として選んだ題材です。

DMMも最初はビデオテープの販売・レンタルから始まりました。
そこで培った決済・物流・会員管理の基盤を横展開することで、現在の巨大プラットフォームに成長しました。

この記事は、「最初の1つのサービスをどう設計するか」という話です。


プラットフォームの構成要素を整理する

複数のサービスを展開するプラットフォームを作るとき、共通して必要になる基盤があります。

共通インフラ層

機能役割
会員管理・認証ユーザーの登録・ログイン・権限管理
決済システムクレジットカード・電子マネー処理
通知システムメール・プッシュ通知
ファイルストレージ画像・動画・ドキュメント管理
エラー監視本番障害の検知・アラート

ドメイン固有層(今回のDVDレンタル)

機能役割
在庫管理どのDVDが何本あるか
レンタル管理誰がいつ借りて返したか
配送管理宅配でどこに送るか
コンテンツ管理作品情報・カテゴリ・説明文

最初の1つを「小さくても正確に」作る理由

よくある失敗パターンがあります。

「将来の拡張を見越して、最初から汎用的に作ろう」

この考えは表面上は正しく聞こえますが、多くの場合は「作りすぎ」になります。

最初から汎用決済基盤を作ろうとした結果、1年経っても動くものが何もない…というケースを何度も見てきました。

「最初の1つのサービスで本当に必要な機能だけを実装する」

これが今回の設計方針です。

DVDレンタルで必要な会員管理を、丁寧に作る。
DVDレンタルで必要な決済フローを、丁寧に作る。
それが後のサービス展開の「型」になります。


設計時に考えた「横展開しやすい構造」

DVDレンタルを作りながら、常に「これは別サービスでも使えるか?」を意識しました。

① 認証を独立させる

管理画面の認証と顧客向けアプリの認証は、完全に別のシステムとして設計しました。

dvd-rental-admin/    ← Spring Security(管理者用)
dvd-rental-customer/ ← JWT + カスタム認証(顧客用)

管理画面はセッションベースのSpring Securityで十分。
顧客向けはモバイルアプリからも呼べるように、ステートレスなJWT認証にしました。

将来「音楽ダウンロードサービス」を追加するときも、顧客認証の仕組みをそのまま流用できます。

② APIの責任範囲を明確にする

顧客向けのREST APIは PublicAuthenticated を明確に分けました。

GET /api/public/films          ← 未ログインでも見られる
GET /api/films/{id}/rental     ← ログイン必須
POST /api/rentals              ← ログイン必須

この設計は、DVDに限らず「商品一覧は誰でも見られるが、購入はログインが必要」という構造のサービスなら共通で使えます。

③ コンテンツ管理を汎用的に考える

DVDの「作品情報」を管理する機能は、「商品情報管理」として抽象化できます。

  • タイトル・説明文・カテゴリ・画像
  • 在庫数・価格・区分(新作/旧作)
  • LLMによる自動タグ生成

これらはDVD固有ではなく、本・音楽・ゲームにも使える構造です。


「最初の1つ」で何を検証するか

今回のDVDレンタルで、将来のプラットフォームに向けて検証したいことがあります。

  1. ユーザーが商品を検索→選択→カート→決済する流れ が実装できるか
  2. 管理画面でコンテンツを登録・更新・公開する流れ が運用できるか
  3. AWSで実際に動かし、コストと運用負荷を把握する ことができるか
  4. LLMを使ったコンテンツ自動整備 が実用的かどうか

これらの答えが「DVDレンタルで出た」時点で、第2のサービスへの展開が現実味を帯びます。


まとめ

  • 「DVDレンタル」は目的ではなく、プラットフォームビジネスを学ぶための最初の題材
  • DMMのように「最初の1サービスの基盤を横展開する」戦略で設計している
  • 最初から汎用化しすぎず、「DVDで本当に必要なもの」を丁寧に作ることが重要
  • 認証・API設計・コンテンツ管理を「将来流用できる形」で設計しておくことが次の拡張への準備になる

「大きなものを作りたいなら、最初の1つを小さくても丁寧に作れ」

これが今回の一番の教訓です。


このシリーズの記事マップ

dvdrental 管理アプリと対になるエンドユーザー向けDVDレンタルアプリを作っている話 — Vue 3 + Spring Boot の全体構成と記事マップ

気軽にメッセージください

技術相談・ご感想・ご質問があればメッセージをお願いします。