DVDレンタルシステムをDMM型プラットフォームへ昇華させる構想 — 最初の一歩をどこに置くか
はじめに
「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は Public と Authenticated を明確に分けました。
GET /api/public/films ← 未ログインでも見られる
GET /api/films/{id}/rental ← ログイン必須
POST /api/rentals ← ログイン必須
この設計は、DVDに限らず「商品一覧は誰でも見られるが、購入はログインが必要」という構造のサービスなら共通で使えます。
③ コンテンツ管理を汎用的に考える
DVDの「作品情報」を管理する機能は、「商品情報管理」として抽象化できます。
- タイトル・説明文・カテゴリ・画像
- 在庫数・価格・区分(新作/旧作)
- LLMによる自動タグ生成
これらはDVD固有ではなく、本・音楽・ゲームにも使える構造です。
「最初の1つ」で何を検証するか
今回のDVDレンタルで、将来のプラットフォームに向けて検証したいことがあります。
- ユーザーが商品を検索→選択→カート→決済する流れ が実装できるか
- 管理画面でコンテンツを登録・更新・公開する流れ が運用できるか
- AWSで実際に動かし、コストと運用負荷を把握する ことができるか
- LLMを使ったコンテンツ自動整備 が実用的かどうか
これらの答えが「DVDレンタルで出た」時点で、第2のサービスへの展開が現実味を帯びます。
まとめ
- 「DVDレンタル」は目的ではなく、プラットフォームビジネスを学ぶための最初の題材
- DMMのように「最初の1サービスの基盤を横展開する」戦略で設計している
- 最初から汎用化しすぎず、「DVDで本当に必要なもの」を丁寧に作ることが重要
- 認証・API設計・コンテンツ管理を「将来流用できる形」で設計しておくことが次の拡張への準備になる
「大きなものを作りたいなら、最初の1つを小さくても丁寧に作れ」
これが今回の一番の教訓です。
このシリーズの記事マップ
→ dvdrental 管理アプリと対になるエンドユーザー向けDVDレンタルアプリを作っている話 — Vue 3 + Spring Boot の全体構成と記事マップ