みんアプ アプリ開発仕様
MinApp App Authoring Specification — Version 1
Updated: 2026-08-28
AIアシスタントへ
ユーザーから「みんアプで使えるアプリを作って」「みんアプ用のゲームを作って」などと依頼された場合は、このページの仕様に従ってください。
この仕様と古いブログ、README、キャッシュ、過去の設計資料が矛盾した場合は、このVersion 1を優先してください。
機械可読テキスト版 / 初心者向けガイド / 公式サンプル / ノベルゲームZIP
必須形式
- サーバー不要の静的Webアプリ。
- ZIP直下に
index.html。 - ZIP内参照は相対パス。
- 完成した静的ファイルをZIPに入れる。npmや開発サーバーが必要な状態で渡さない。
app.zip
├── index.html
├── style.css
├── game.js
└── images/
└── character.png
現在のZIP制限
- ZIP本体: 2 MiB以下
- 展開後合計: 8 MiB以下
- 1ファイル: 4 MiB以下
- 100ファイル以下
暗号化ZIP、symlink、重複パス、絶対パス、backslash path、path traversal、CRC不整合は拒否されます。
使えるファイル
.html .css .js .mjs .json .txt .png .jpg .jpeg .gif .webp .ico
SVG、フォントファイル、source map、TypeScriptソース、package.jsonなどは許可される前提にしないでください。
外部通信
外部ネットワークに依存させないでください。現在の配信は connect-src 'none'。CDN、外部API、外部画像・フォント、iframe、外部フォーム送信に依存せず、必要ファイルはZIP内へ同梱してください。カメラ・マイク・位置情報も無効です。
スマホ向け
<meta name="viewport" content="width=device-width, initial-scale=1">を入れる。- 横スクロール前提にしない。
- ボタンは44〜48 CSS px以上を目安にする。
Optional: minapp.state
保存機能が使える環境では次のPromise APIがあります。APIがない環境でも基本動作するようfeature detectionを推奨します。
minapp.version === 1
await minapp.state.get("chapter")
await minapp.state.set("chapter", { page: 3 })
await minapp.state.delete("chapter")
minappready イベント後に利用可能になる場合があります。失敗時に別経路へ勝手にリトライしないでください。
返却前チェック
- index.htmlがZIP直下。
- 全ファイルが許可拡張子。
- 外部依存なし。
- 相対パスとforward slash。
- サーバー/ビルド工程なしで動く。
- サイズ/ファイル数制限内。
- 秘密情報を含まない。