共有アプリ
共有アプリは、自分以外の人が使うものです。リンクを送るアンケート、出欠表、予約ページ、 チームが作業を取りにくるボード。セルの中でエージェントに頼むと、リポジトリの中のフォルダと、 誰にでも渡せる 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/ にあります。どの型も、うまくいく道筋より 罠のほうに紙幅を使っています。 欲しいものがどれかに近いなら、そう言ってください — テンプレートから始めるかどうかが、「動くアプリ」と「公開できただけのアプリ」を分けます。