EC-CUBE 4.3 を Be Framework + BEAR.Sunday へ移植したデモプロジェクトです。
Entity・Controller・Twig に散らばっていた業務ルールを ALPS プロファイル(SSOT)に集約し、
そこからドメイン・リソース・SQL・HTML・テストを生成しています。外から見える振る舞いは EC-CUBE 互換。
Be ドメイン層(be/src/)は契約からの独立実装、HTML テンプレートと DB スキーマは EC-CUBE からの移植です。
EC-CUBE source → ALPS contract → Be / Resource / SQL / HTML / Test
https://131.186.41.241.sslip.io/ — Oracle Cloud Always Free 上で常時稼働中です。
ストアフロントは https://131.186.41.241.sslip.io/、管理画面は https://131.186.41.241.sslip.io/admin/login。
デモ用のログイン資格情報は公開していません。ログインを伴う動作確認は下の Docker 手順でローカルに立ち上げてください。
誰でも書き込めるデモなので、定期的に seed 状態へリセットしています。
運用手順は docs/demo-operation.md。
docker compose up --build # 初回はビルド + シード。完了後 http://localhost:8080MySQL 8.0 とアプリが立ち上がり、約 3,000 商品のカタログとデモ会員・管理者が自動投入されます。
Docker 以外に必要なものはありません。停止は docker compose down(データ保持)/ down -v(初期化)。
会員は login-test@example.com、パスワードは BEMART_DEMO_MEMBER_PASSWORD(未設定ならローカル開発用の既定値)。
管理者は test-admin で、BEMART_DEMO_ADMIN_PASSWORD 未設定ならシードのたびにランダム生成され
docker compose logs app に 1 度だけ表示されます。管理画面は 2 要素認証必須で、初回ログイン後の
設定画面に表示される鍵を認証アプリに登録してください(固定コードはありません)。
デモ専用構成です(DB はパスワードなし root、アプリは
php -S)。本番では使わないでください。
ホストで直接動かす手順(malt / DATABASE_URL / composer serve など)は
docs/ と sql/README.md を参照してください。
コードを更新したら composer clean で DI キャッシュを消してから起動してください。
vendor/bin/phpunit # テスト(非 SQL スイートは DB 不要)
vendor/bin/psalm # 静的解析 + taint tracking
composer fake -- get '/products' # DB 不要の Fake context で動作確認ALPS の検証と再生成:
asd --validate alps.json
asd -f html -o alps.json.html alps.json最新の規模はリポジトリから自動算出(composer stats)。すべては 1 つの ALPS 契約 に集約され、そこから各層へ展開される。
| レイヤー | 数 | 役割 |
|---|---|---|
| 契約 — ALPS profile | 1 | 全実装の基準となる唯一の契約(536 descriptor・208 transition) |
| ドメイン入力 — Be Input | 154 | 操作の起点(doXxx の意図) |
| ドメイン出力 — Be Final | 155 | 確定状態(=完了の証明) |
| 意味語彙 — Be Semantic | 163 | 制約付き値オブジェクト |
| ドメイン作用 — Be Reason | 179 | 注入される問い合わせ/コマンド |
| 中間状態 — Be Being | 14 | becoming の途中相 |
| HTTP リソース — BEAR | 149 | page:// / app:// の JSON 表現 |
| 永続化 — SQL | 161 | .sql ファイル(166 #[DbQuery]) |
| 入出力契約 — JSON Schema | 236 | request / response 検証 |
| HTML — Twig | 143 | テンプレート |
| 検証 — PHPUnit | 2516 | test methods(全スイート緑) |
| 結合試験 — EC-CUBE | 248 | 17 領域 → implementation-status |
- 全体像:
docs/(公開版は GitHub Pages) - 証拠の入口:
docs/feature-evidence.md - ALPS HTML:
alps.json.html/ API docs:docs/api/ - 管理者メンテナンス(2FA 解除など):
bin/admin.php(composer admin -- listで一覧)
alps.json # SSOT: ALPS profile
be/src/ # Be Framework domain
src/Resource/ # BEAR.Sunday Resource
var/sql/ # Ray.MediaQuery SQL files
sql/ # EC-CUBE schema / seed
var/templates/ # Twig HTML ports
public/ # HTTP entrypoints
tests/ # Resource / SQL / HTML / HTTP / workflow tests
docs/ # ドキュメント
生成物(alps.json.html、openapi.yaml など)は手で編集しません。
リポジトリは GPL-2.0-only。EC-CUBE 4.3 と同じ条項です。
ただし Be ドメイン層 be/(パッケージ my-vendor/be-mart-be)だけは MIT です。
| 場所 | 由来 | 条項 |
|---|---|---|
be/ |
ALPS 契約からの独立実装。EC-CUBE 由来の表現を含まない | MIT |
src/Resource/ src/Module/ src/Form/ |
契約を移植済み HTML に束ねる BEAR レイヤー。EC-CUBE の文言に接する | GPL-2.0-only |
var/templates/ |
EC-CUBE のマークアップを逐語移植した Twig(移植手順) | GPL-2.0-only |
sql/ |
EC-CUBE のスキーマと初期データ | GPL-2.0-only |
public/template/admin/assets/ |
EC-CUBE 管理テーマのアセット。28 ファイル中 14 は上流とバイト一致 | GPL-2.0-only |
docs/eccube-spec-coverage/ |
EC-CUBE 画面のキャプチャ(同梱の CSS/JS を含む) | GPL-2.0-only |
be/ の MIT は測定に基づく主張です。EC-CUBE の messages.ja.yaml から逐語コピーした文言は
tests/Resource/Admin/*JaMessages.php に集約されており、be/ の日本語リテラルとの一致は
短い語彙だけで、文はひとつもありません。この境界は
tests/License/BeLicenseBoundaryTest.php が検査します。
MIT のコードを GPL の作品から利用するのは互換(インバウンド)で、be/ は単体で取り出せます。
公式 EC-CUBE ロゴは含みません。public/template/admin/assets/img/logo{,2,@2x}.png と
pdf/logo.png は上流とバイト・寸法とも異なる差し替えで、本プロジェクトの IDEA STORE
ブランド(public/assets/idea-store/logo/)に置き換えてあります。EC-CUBE の公式ブランドアセットは
GPL とは別に CC BY-NC-ND 2.1 JP で提供されますが、
同梱していないためその条件は適用されません。
