
SEKKEIYA
Gallery
Vision
About
Services
Products
Marketplace
Articles
Pricing
Download
Log in
DESIGN & 3D
空間をかたちにする

S.Model
3Dモデルをブラウザ上で高速に共有し、ウォークスルーや注釈付けでレビューできるクラウド共有アプリ。

S.Layout
登録済みの3Dアセットを使い、ブラウザ上で直感的に空間レイアウトを組み立てる配置シミュレータ。

S.Create
画像やテキストから独自の3Dアセットを素早く生成するAIモデリングジェネレーター。

S.Slide
BETA
シネマティックなスクロール型プレゼンテーションを自動構築・配信するPresentsビルダー。

S.Material
IN DEVELOPMENT
木材・金属・ファブリックなどのマテリアルを在庫として管理し、家具や空間へワンクリックで適用する素材管理アプリ。
DRAWING & VISUAL
図面とビジュアル資料

S.Diagram
ゾーニングや動線、システム構成などの設計ダイアグラムを作成・共有するドローイングツール。

S.Drawing
平面図・立面図などの図面をセット単位でアップロード・管理し、チームと共有する図面管理アプリ。

S.Image
パース・動画・AI生成画像などのビジュアル成果物を横断的に集約・管理するイメージライブラリ。

S.Movie
IN DEVELOPMENT
レンダリングしたクリップから、カット構成まで自動編集エンジンが組み立てる建築・インテリア向け動画ツール。
LEARNING & SHOWCASE
学び、貯め、発信する

S.Quest
BETA
建築・インテリア向けの学習プラットフォーム。動画講座やステップ式のコースでスキルを体系的に習得。

S.Portfolio
IN DEVELOPMENT
プロジェクトの成果物をまとめ、実績として発信できるポートフォリオ&ナレッジベース。

S.Library
本・PDF・Web記事・メモといった知識資源をローカルで一元管理し、AIの知識源にもなるナレッジライブラリ。

S.Blog
AIと議論しながら記事を執筆し、自分の知識庫とSEOに強い公開サイトの両方へ同時配信するブログ執筆ハブ。
すべてのプロダクトを見る(Marketplace)
2025/11/25
By SEKKEIYA
Firebase Cloud Functions上に構築されたS.Models API(旧3DSS-API)の設計思想・エンドポイント・実装方法を開発者向けに解説。プラットフォーム層とアプリ層の分離で、整合性と開発効率を両立します。
この記事では、複数のアプリケーション間で3Dモデルデータを効率的に共有するための S.Models API(旧 3DSS-API / 3D Shape Share API) について解説します。API 設計の考え方から実装方法まで、開発者向けに包括的にお伝えします。
現代のアプリケーション開発において、データの一元管理と共有は重要な課題です。特に3Dモデルのような複雑なデータを扱う場合、複数のアプリケーション間で整合性を保ちながら効率的に共有する仕組みが必要になります。
S.Models API は、この課題を解決するために設計されたプラットフォーム API です。Firebase Cloud Functions 上に構築され、Firestore に保存された3Dモデルのメタ情報を JSON 形式で提供します。
主なメリット:
https://us-central1-shapeshare3d.cloudfunctions.net/api
GET /models/v1 — モデル一覧取得(limit:任意、デフォルト 10)GET /models/v1/:id — 単一モデル取得(id:必須)S.Models の Firestore に保存されているモデル情報を JSON で返す「窓口」として機能します。将来的には /users/v1、/boards/v1、/articles/v1 なども追加予定です。
S.Models API はプラットフォーム層とアプリ層の2層構造で設計されています。この設計により、効率的なデータ共有とアプリケーション間の疎結合を実現しています。
このアプローチにより、どのアプリからも同じ Base URL で共通3Dデータにアクセスでき、整合性が保たれ、アプリ間連携が容易になり、データ更新時の影響範囲を最小化できます。
API レスポンスに含まれる主要フィールドは以下の通りです。
id — モデルの一意識別子(string)slug — URL 用識別子(string)title — モデル名(string)thumbnailUrl — サムネイル URL(string)category — カテゴリパス(string)modelFormats — 提供フォーマット(array)dimensions — サイズ情報(object)tags — 関連タグ(array){
"items": [
{
"id": "0052b495-4cf6-42be-b597-ea83340a86c9",
"slug": "0052b495-4cf6-42be-b597-ea83340a86c9",
"title": "ハンギングポット",
"thumbnailUrl": "https://firebasestorage.googleapis.com/...",
"category": "lighting/pendant",
"modelFormats": [],
"dimensions": null,
"tags": []
}
]
}
const BASE_URL =
import.meta.env.VITE_3DSS_API_BASE_URL ||
"https://us-central1-shapeshare3d.cloudfunctions.net/api";
// モデル一覧取得
async function fetchModels({ limit = 10 } = {}) {
const res = await fetch(`${BASE_URL}/models/v1?limit=${limit}`);
if (!res.ok) {
throw new Error(`Failed: ${res.status} ${res.statusText}`);
}
return await res.json(); // { items: [...] }
}
// 単一モデル取得
async function fetchModelById(id) {
const res = await fetch(`${BASE_URL}/models/v1/${encodeURIComponent(id)}`);
if (!res.ok) {
throw new Error(`Failed: ${res.status} ${res.statusText}`);
}
return await res.json(); // { id, title, ... }
}
import { useState, useEffect } from 'react';
import { fetchModels } from './threeDssApi';
export default function ModelList() {
const [items, setItems] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetchModels({ limit: 20 })
.then(data => setItems(data.items))
.catch(err => console.error(err))
.finally(() => setLoading(false));
}, []);
return (
<div>
{loading ? '読み込み中...' : `${items.length}個のモデルを表示中`}
</div>
);
}
S.Models API は現在、公開モデルを誰でも読めることを目的として設計されています。
origin: true)const functions = require("firebase-functions/v2/https");
const express = require("express");
const cors = require("cors");
const app = express();
app.use(cors({ origin: true }));
app.use(express.json());
// ここに /models/v1 などのルートを定義
exports.api = functions.onRequest(app);
将来のセキュリティ強化予定:
threeDssApi.js / .ts を置き、SDK として統一した呼び出し方を実現するVITE_3DSS_API_BASE_URL、Next.js なら NEXT_PUBLIC_3DSS_API_BASE_URL などで切り替えるmodelId を参照フィールドとして持たせるS.Models API は今後、以下の機能拡張を計画しています。
/models/v1/search — キーワード・タグ・カテゴリによる検索/models/v1/:id/files — GLB / 3DM 等のダウンロード URL やメタデータ提供/users/v1/:id — ユーザーの公開プロフィール取得/boards/v1/:id — 公開ボードのサマリ情報取得将来的には Unity、Unreal Engine、Rhino といった外部ツールからのアクセスも想定しています。共通データは API 側に集約し、各アプリは ID を持つだけで詳細を動的取得する——この運用ポリシーで、整合性とスケーラビリティを最優先に設計を進めます。
S.Models API は、複数アプリケーション間での3Dモデルデータ共有を効率化するプラットフォーム API です。プラットフォーム層とアプリ層を明確に分離することで、整合性を保ちながら開発効率を大幅に向上できます。現在は3Dモデルデータの取得機能が中心ですが、今後はユーザー管理・ボード管理・検索機能など、より包括的なプラットフォーム API へと発展させていきます。