Semantic SSOT

意味を、一箇所に置く。

コードは安くなりました。けれど「何を作るべきか」という意味は、いまも高いままです。同じ業務上の事実が、仕様書・コード・テスト・DB制約・FAQへ、別々の方言で何度も書き写される。ALPSは、その意味だけを書く小さな仕様です。BEAR.Sundayは、ここから実装・ドキュメント・AIの道具を射影します。

The thin waist

蜂の腰。多くの入口と多くの出口を、一点で結ぶ。

源泉(物語・レガシーコード・ドメイン)を成果物(図・スキーマ・コード・道具)へ素朴につなぐと、 組み合わせは N×M になります。あいだに意味だけの腰を一つ通せば、N+M に畳まれ、すべての変換が 一点で合流します。インターネットの IP、コンパイラの LLVM IR と同じ形。ALPSは 「アプリケーションの意味」の腰です。

N個の源泉

user stories ・ legacy code ・ domain ・ requirements

収束 ↓

ALPS — 蜂の腰 / thin waist

意味のSSOT

語彙 ・ 状態 ・ 遷移(safe・idempotent・unsafe)

射影 ↓

M個の射影

図 ・ OpenAPI ・ JSON Schema ・ llms.txt ・ Fake ・ Tests ・ Code ・ MCP/Tool ・ Hypermedia

素朴に繋ぐと N×M。腰を一つ通せば N+M

What ALPS writes (and won't)

語彙・状態・遷移だけ。あえて退屈に。

ALPS(Application-Level Profile Semantics)は、RESTとハイパーメディア設計の系譜から生まれた、 Amundsenらによる小さな仕様です。書けるのはほぼ三種類だけ。意図的に退屈で、その退屈さは 設計されたものです。

{ "id": "Cart", "type": "semantic", "title": "買い物カゴ",
  "tag": "flow-checkout",
  "descriptor": [{ "href": "#doAddItem" }] },

{ "id": "doAddItem", "type": "unsafe", "rt": "#Cart",
  "doc": "商品をカゴに追加する" }

どのテーブルに保存されるかも、どの画面に出るかも書かれていません。書く場所がないからです。

語彙

このアプリケーションで cart とは何を指すのか。業務の言葉(ユビキタス言語)を、人にも機械にも読める形で置きます。

状態

アプリケーションにどんな状態があるのか。画面ではなく、意味としての状態です。

遷移と、その性質

状態から状態への遷移と、それが safe(観測するだけ)か idempotent(繰り返しても同じ)か unsafe(やり直せない変更)か。RESTの意味論がそのまま語彙になります。

書けないこと=競合しないこと

画面レイアウトも、永続化方式も、性能要件も書けません。書けないからこそ、どの成果物とも競合せず、共通の通り道になれます。書けないことの一覧こそが、ALPSの設計です。

Projection & tags

一つのモデルへの、三つの問い。

各記述子には自由なタグを付けられます。チェックアウトのフローに flow-checkout、ゲストに許す操作に actor-guest、レガシー由来の概念に src-legacy。すると「チェックアウトだけの状態遷移図」や 「ゲストから見えるシステム」は、新しく書き起こす文書ではなく、同じモデルへの射影クエリになります。

営業に見せる図、セキュリティレビューの図、移行計画の図は、三つの別文書ではなく、一つのモデルへの 三つの問いです。「一つのモデル、多くのビュー」——意味だけをモデルに入れ、残りを射影に任せたから、 モデルは小さいまま、人間が統治できます。

Three doors

モデルは一つ、扉が三つ。

意味が一箇所に在るとして、誰がどう触れるのか。答えは、フェーズごとに違うプロトコルで、です。

設計 — MCP

AIエージェントが照会・検証・編集する。全文を渡さず「この状態から出る遷移は?」と問い、必要な200トークンだけを受け取る。モデルについて読むのではなく、モデルと対話する。

編集 — LSP

人間が同じ知能に触れる。壊れた参照はその場で警告され、概念の改名はすべての参照へ波及する。意図の表明から意味の確定まで、構文という中間業者が消える。

実行 — Hypermedia

動くアプリケーション自身が、意味で構造化された応答を運ぶ。本番を操作するエージェントは、そのシステムを設計したのと同じ意味モデルに接地する。

The reader arrived

HATEOASが待っていた読み手は、いま来た。

2000年に定式化されたHATEOASが想定したのは、意味を読んで自律的に次の遷移を選ぶ「機械クライアント」 でした。その読み手は二十年あまり現れなかった。人間にはUIが要り、機械は愚かすぎたからです。

その読み手が、いま到着しました。しかも、コードを安くしたのと同じ技術として。大規模言語モデルは、 意味のドリフトを危機に変えた当のものであり、同時に、意味を機械可読にしておくことを、ついに報われる 投資に変えた読み手でもあります。危機と、解決の条件が、同じ技術で同時に届いた。

Where BEAR sits

BEAR.Sundayは、腰の射影側に乗る。

BEAR.Sundayが強いのは、腰の下半分——射影です。ResourceObjectから、HALやハイパーメディア(実行時)、 ApiDoc・OpenAPI・JSON Schema・llms.txt(ドキュメント)、ToolUse/MCP(AIの道具)が生まれます。 ALPSをSSOTに置けば、コードも文書も道具も、同じ意味から射影され、実装とドキュメントがずれません。 CIで「ずれが無い」ことさえ証明できます。

意味を取り込んで作り直すのではなく、独立した標準として腰に置き、そこへ繋ぐ。これは 「取り込まず、つなぐ」の到達点です。意味の発掘そのもの(上半分)は、ALPSと専用ツールの仕事です。

Start with one resource

まずは小さく作り、構造を残す。