共有アプリ

共有アプリは、自分以外の人が使うものです。リンクを送るアンケート、出欠表、予約ページ、 チームが作業を取りにくるボード。セルの中でエージェントに頼むと、リポジトリの中のフォルダと、 誰にでも渡せる URL が返ってきます。


先に知っておく3つ

1フォルダ=1アプリ。 セルが開いているディレクトリがそのままアプリになります。宣言は ルートの app.json 1枚で、書くのはエージェントであって、あなたではありません。

定義はコミットされ、回答はされない。 スキーマとページは読めて差分が取れてプルリクエストに できるファイルです。人が送信したレコードはアプリのクラウド保管庫に入るので、台数ぶんの コピーではなく1つの表になります。ただし全員が同じものを見るという意味ではありません — 誰が何を読めるかは、その人のロールと公開されたルールが決めます。参加者は自分の行だけが見えます。

公開したあと、あなたのパソコンは経路に入りません。 ノートを閉じても、MulmoTerminal を 終了しても、旅行に出ても、リンクを持っている人にはアプリが動き続けます。これが「渡せるもの」と 「立ち会わないと見せられないデモ」を分けている性質です。

3つ目から2つのことが従います。ここで作るものは、サーバー上であなたのコードを動かしません — スクリプトを置く場所が無いので、アプリが「計算する」ものは、あらかじめレコードに書いてあるか、 訪問者のブラウザの中でページが求めるかのどちらかです。そして誰が何をしてよいかは、あなたの パソコンではなくプラットフォーム自身のセキュリティ規則が守ります。MulmoTerminal がする検査は 早めの警告であって、最後に守っているものではありません。


何が作れるか

7つの型がテンプレートとして書き下ろされています。欲しいものを自分の言葉で言えば、 エージェントが型を選びます — ただし存在を知っていると、何を頼むのが安いか分かります。

欲しいもの 型 何が特別か
アンケート、クイズ、応募フォーム、定員なしの申し込み survey 一番短い。集めるだけで、無くなるものが無い
名前のついた人が承認する予約(美容室・面談・修理) salon 1枠1予約。数を数えるのではなくプラットフォームが決める。assignee ロールはこのためにある
先着順とキャンセル待ち(ジムのクラス、ワークショップ) gym 到着時刻をサーバーが打ち、開放時刻があり、待ち行列が自分で繰り上がる
前もって並べておける枠(会議室、席、貸出機材) meeting-room 枠がレコードとして存在し、取るとはその id を押さえること
見ている間に動くページ(ライブ投票、講義、その場クイズ) live-poll 票が入ると聴衆の画面が、再読み込みなしで描き変わる
名簿つきの作業ボード(登録してから作業を取る) project-board 持ち主用の机があり、「自分はもう登録したか」をきちんと答える例でもある
足すだけで書き換えない記録(引き継ぎ、障害の時系列、質問板、チャット) append-feed 行は追加されるだけで、消せるのは書いた本人だけ

テンプレートは見た目も持っています。 訪問者が見るのはページだけなので、1つの色相から 導いた配色・可変の字送り・余白まで含めて入っています。素のままの箱で届いたページは 「簡素」ではなく「未完成」に見え、人は未完成に見える予約フォームを閉じます。


通しで一度だけ — 出欠をとる

ここまでは部品です。これは一番多い用件を、端から端まで1回だけ通したものです。 「誰が来るのか、席は空いているのか」。

何と言うか。 空のフォルダを開いたセルで:

10月の勉強会の申し込み。30席。名前とメールと、来られない場合に録画が欲しいかどうか。 30人埋まったらキャンセル待ちに回して。

定員とキャンセル待ちがあるので、これは survey ではなく gym の型になります。 型の名前を言う必要はありません — 「30席」「キャンセル待ち」と言えば十分です。

何が返ってくるか。 読めるフォルダと、3つの住所。フォルダには app.json(宣言)、 申し込みを入れるコレクションが .claude/skills/ の下に1つ、そしてページが入ります。 秘密は何も入っていません — コミットして、差分を見て、プルリクエストにできます。

それぞれが何を見るか。

誰 どこを開くか 何が見えるか
リンクを送られた人 /a/<slug> フォーム。書いて送ると「12番の席が取れました」か「キャンセル待ち3番です」
あなた /m/<slug> 受付。全部の行、人数、待っている人
申し込んだ人が後で来たとき /p/<slug> 自分の行だけ。 自分の席番号か、待ち行列での位置

3行目が、たいていの人の予想と違うところです。 戻ってきた参加者に、申し込んだ人の一覧は 見えません。これを決めているのはページではなくプラットフォームなので、ページが間違っていても 守られます。

なぜ人数が狂わないか。 席はページが行を数えて配っているのではありません。到着時刻は サーバーが打ち、キャンセル待ちからの繰り上げもそこで起きます。2人が同じ秒に送信ボタンを 押しても、返る答えは別々で、31席目は出ません。

ノートを閉じたらどうなるか。 何も起きません。アプリはあなたのパソコンが配信しているのでは なく、プラットフォームに公開済みで、フォルダはそれを編集するための原本です。あなたが寝ている 間も申し込みは進みます。

来月のを作るには。 同じフォルダを開いて、変わったところを言って(「11月、40席」)、 もう一度公開するだけです。宣言はファイルなので、差分が何が動いたかを正確に見せます。


共有アプリとコレクションが出会うところ

MulmoClaude を使ったことがあれば、コレクションには既に出会っています — データモデルとその画面を宣言したスキーマを、ホストが専用のコードなしで描くもの。 共有アプリは、それに2つ足したものです。他の人と、公開された住所。

重なりは偶然ではありません。共有アプリのレコードはコレクションに入ります — 上の .claude/skills/ の下のフォルダがコレクションで、manageCollection は両方で同じ道具です。 共有アプリが足しているのは、名簿とロールと、行が自分のディスクではなくクラウドの保管庫に いることです。

つまり個人のコレクションは、共有アプリの出発点として妥当です。すでに何かをコレクションとして 持っていて、それを他の人にも書き込んでほしくなったなら、ゼロからやり直す必要はありません。

他の人が公開したコレクションは公開レジストリにあります — receptron/mulmoclaude-collections。 MulmoClaude の中で Discover を開くと一覧して取り込めますし、GitHub で直接スキーマを読めば、 他人がデータモデルと画面をどう宣言したかが分かります。いまは4つ — カメラのレンズ図鑑、映画リスト、気象庁の天気予報板、上京の転居先を比べる台帳。 自分のものを公開するのは、スキーマを含むプルリクエストを出すことです。


3つの入口

ページ 住所 誰が開けるか
公開 https://mulmoserver.web.app/a/<slug> アプリが受け入れる人なら誰でも
メンバー https://mulmoserver.web.app/m/<slug> アプリのロールを持っている人 — 受付
参加者 https://mulmoserver.web.app/p/<slug> 名簿に載っている人。自分の行が見える

ロール

ロール できること
owner 全部。公開も含む
editor レコードを読み書きする
viewer レコードを読む
participant 名簿に載り、自分の行だけ見える
assignee 全部の行を読み、自分に割り当てられた行だけ書ける

誰かに見せる前に試す

公開は即座に効きます — ただし必ずしも公に、ではありません。公開ページを宣言していない アプリは名簿の中だけに公開され、メンバーと参加者しか開けません。公開ページがある場合は、 公開した瞬間から知らない人の前にあります。

エージェントがページを自分で動かせます。 本物のヘッドレスブラウザで全ページを読み込み、 本番と同じ枠・同じ制限で、アプリの実レコードを渡してボタンらしきものを押します。読み込みが 終わらなかったページ、どこにも繋がっていないボタン、宣言に拒否された送信を報告します。 ページを変えたあとは毎回これを頼んでください。既定では何も書き込みません。

報告がきれいでも、試験済みという意味ではありません。 押すのはボタンなので、チェックボックスや 選択リストに保存がぶら下がっているページはその経路が一度も走りません。しかも報告には そう書かれません。予算の範囲で動いて、飛ばしたものを申告します。「6ページ動かした」を 「アプリを動かした」と読まずに、その数字を読んでください。

残り半分はあなたが見ます。 アプリのフォルダを開いたセルで コレクションペインを開き、 ヘッダーの Previews を使います。ページが作業ツリーから描かれ、公開サイトと同じコードが 動きます。本番より甘くはしていません。

そこで4つ確認します。ページがデータを描くか(「読み込み中…」で止まっていたら受け渡しが 終わっていない)、送信で確認ダイアログが出て正しい値が入っているか、拒否されるべきものが 拒否されるか、そして見た目が仕上がって見えるか。


他の人のアプリに参加する

リンクをもらった側になることもあります。MulmoTerminal は要りません — ブラウザだけで足ります。

公開ページ(/a/<slug>)はそのまま開けます。名簿に載せてもらったら、参加者ページ (/p/<slug>)で自分の行が見えます。サインインを求められるのは、あなたが誰かを アプリが知る必要があるときだけです。


詳しいところ

この文書は全体像です。型ごとの罠まで書いたものは、同梱スキルの server/skills/mulmoterminal-shared-app/templates/ にあります。どの型も、うまくいく道筋より 罠のほうに紙幅を使っています。 欲しいものがどれかに近いなら、そう言ってください — テンプレートから始めるかどうかが、「動くアプリ」と「公開できただけのアプリ」を分けます。


This site uses Just the Docs, a documentation theme for Jekyll.