3Dモデルの閲覧
Three.jsとLDraw形式のデータを利用し、ブラウザ上で作例やパーツを回転・拡大して確認できます。
PROJECT 01 / WEB APPLICATION
レゴの作例を3Dで閲覧し、構成パーツと販売情報を一元管理するカタログ型ECサイトです。

作例(Kit)、パーツの形状(Part)、色別パーツ(PartVariant)を分けて管理し、作例に必要なパーツと数量をレシピとして登録しています。閲覧機能に加え、商品管理・カート・注文処理までをLaravelで実装しました。
Three.jsとLDraw形式のデータを利用し、ブラウザ上で作例やパーツを回転・拡大して確認できます。
形状と色を分離して登録。作例ごとの必要パーツ・数量や、画像の取得状態を管理します。
作例と単品パーツを共通の商品モデルで扱い、販売価格・在庫・カート・注文処理につなげています。
LDrawデータからのサムネイル生成と、市場価格取得を想定した模擬価格更新処理に取り組んでいます。


PHP / Laravel / MySQL 8 / JavaScript / Three.js / LDraw / Docker / Nginx / Git
作例・パーツ・色・商品情報を分離し、Eloquentのリレーションで関連付けています。外部キー、複合UNIQUE制約、CHECK制約によって、データベース側でも整合性を保つ構造にしています。
※ 図は主要テーブルと代表的なカラムに絞っています。カート・注文・撮影履歴などのテーブルは省略しています。
作例(Kit)と色別パーツ(PartVariant)は異なるデータ構造ですが、販売に必要な価格・在庫・販売設定はProductに集約しています。Productはどちらか一方だけを参照するようCHECK制約を設け、各外部キーにUNIQUE制約を設定しています。
形状と色の組み合わせ、および作例と色別パーツの組み合わせには複合UNIQUE制約を設け、重複登録を防止しています。
外部APIによる価格取得を想定し、疑似的な市場価格を扱う処理を実装しています。市場価格と更新日時を保持し、販売価格の設定につなげています。実際の外部市場APIから価格を取得しているわけではありません。