---
title: "基本の考え方"
description: "KUMODeckは、バイブコーディングのためのフラットなバックエンドです（Webアプリ・ゲームなど）。ホスティング・データベース・ログインは、いつも使っているAIエージェントに言葉で頼むと、エージェントが用意します。"
url: "/ja/docs/concepts/"
lang: ja
index: "/ja/llms.txt"
---
# 基本の考え方

KUMODeckは、**バイブコーディングのためのフラットなバックエンド**です（Webアプリ・ゲームなど）。ホスティング・データベース・ログインは、いつも使っているAIエージェントに言葉で頼むと、エージェントが用意します。中身は**プロジェクト**、**環境**、**鍵**、**プレイヤー**（利用者のこと。APIの名前ではplayers）、**マスターデータ**の5つで説明できます。その上に3つの約束があります。使いたい部分だけを選べること、利用者に見えるのはKUMODeckではなくあなたのアプリであること、そして作ったものはあなたのものであることです。

## フラットなバックエンド

KUMODeckは、Webアプリやゲームに要る部品を用意し、アプリの前には何も置きません。データベースと自分のサーバーのプログラム（[Functions](/ja/docs/guides/functions/index.md)）、[マルチプレイ](/ja/docs/guides/multiplayer/index.md)、[ログイン](/ja/docs/guides/auth/index.md)（ゲストを含む）、[クラウドセーブ](/ja/docs/guides/saves/index.md)、独自ドメインでの[ホスティング](/ja/docs/guides/hosting/index.md)、[Xでのシェア](/ja/docs/guides/sharing/index.md)、そしてそのすべてを[AIエージェント](/ja/docs/claude-code/index.md)（Claude Code・Codexなど）から操作できること。アプリの上に何かをかぶせることはありません。ストアの入口も、利用者の前に出るKUMODeckの名前もありません。マルチプレイのルームやゲーム向けのSkillはゲームのためのもので、アプリなら使わなければよいだけです。

## だれが何を受け持つか

| KUMODeckが守るもの | あなたが決めるもの |
|---|---|
| ほかのクリエイターとの分離（データ・鍵・コード） | アプリやゲームのルール |
| ログイン・鍵・アカウントの乗っ取り対策 | スコアのずるの防ぎ方 |
| 利用料の請求（前払い残高から原価で。使った分のほかにあなたの負担はありません） | ゲームのアイテムや通貨の設計 |
| KUMODeckの仕組みそのもののセキュリティ | それ以外の、アプリがすること全部 |

KUMODeckが守るのは、壊れたときにあなたや利用者が困るところです。何をどう作るかはあなたのものなので、自由に作れます。KUMODeckがその良し悪しを決めることはありません。

## ランキングなどのゲーム向けの機能は、Skillで作る

ランキングのようなゲーム向けの機能は、KUMODeckのサービスではありません。自分のデータベースと[Functions](/ja/docs/guides/functions/index.md)の上に作ります。AIエージェントに頼めば、テンプレートに入っているランキングのSkill（`.claude/skills/leaderboard/SKILL.md`）がコードを組み立てます。コードもデータもルールもあなたのものなので、ゲームに合わせて好きなように変えてください。

## 必要なものだけを選ぶ

どの機能も単独で動きます。ホスティングだけ、セーブだけ、データベースだけを使うこともできますし、アプリを自分でホスティングして何も使わないこともできます。課金されるのは使ったものだけで、原価どおりです（[料金](/ja/docs/pricing/index.md)）。

データの置き場所: **守るものは D1 に。saves には入れない。** 利用者が自分で書き換えてはいけないもの（スコアとランキング・コイン・クレジット・アイテム・購入・バッジ・利用者どうしで共有するもの）は、プロジェクト自身の Functions + D1 に置く。`saves` に置くのは、利用者が自由に書いてよいもの（設定・下書き・1 人で遊ぶゲームの進み具合）だけ。
迷ったら: 利用者が手で書き換えると困るなら、自分のデータベースです。どこに何を置くかの表は[セーブ](/ja/docs/guides/saves/index.md)と[Functions](/ja/docs/guides/functions/index.md)にあります。

使うたびにお金がかかるもの、またはプレイヤーに見えるものを変えるものは、**ONにするまで動きません**。

| 機能 | ONにする方法 |
|---|---|
| Google / Discord / Apple / Xでログイン | `kumo.config.json`の`auth.providers.<name>.enabled`（[ガイド](/ja/docs/guides/auth/index.md)） |
| Xのカード画像、カードタグ、共有リンク、流入の計測、アプリ内ブラウザからの引き継ぎ | `share.images` / `share.tags` / `share.links` / `share.tracking` / `share.inAppBrowser`（[ガイド](/ja/docs/guides/sharing/index.md)） |
| 自分のサーバーのプログラムとデータベース | `kumodeck functions enable`（[ガイド](/ja/docs/guides/functions/index.md)） |
| ホスティング | `kumodeck deploy`（[ガイド](/ja/docs/guides/hosting/index.md)） |

それ以外（セーブ、ルーム）は、アプリが呼び出すか設定で宣言したときにだけ動きます。

## KUMODeckではなく、あなたのアプリ

KUMODeckはCDNのようなインフラです。利用者に見えるのは、あなたのアプリやゲーム、あなたのURL、Xでのあなたのカードです。利用者に見えるものにKUMODeckの名前は出ません。配信するページ、カード画像、共有リンク、Functionsの応答、ログインのメール（プロジェクトの名前で届きます）、利用者が目にしうるエラーメッセージには、KUMODeckのブランド表示がありません。

## プロジェクト

プロジェクトは1つのアプリやゲームです。`kumodeck init`かダッシュボードで作ります。名前と**slug**（URLに使う名前。英小文字・数字・ハイフン1つずつ。`--`は予約済み）を持ち、1つの開発者アカウントに属します。`kumodeck init`はコードの隣に`kumo.json`（`projectId`、`slug`、`api`）を書きます。秘密情報は含まないので、コミットしてかまいません。

## 環境

どのプロジェクトにも**development**と**production**の2つの環境があり、実行時には何も共有しません。

| | development | production |
|---|---|---|
| プレイヤー・セーブ | 別々 | 別々 |
| ルーム・部屋コード | 別々 | 別々 |
| マスターデータ（`kumo.config.json`） | 別々にpush | 別々にpush |
| 配信URL | `https://<slug>--dev.kumodeck.app/` | `https://<slug>.kumodeck.app/` |

テストの操作が本物の利用者のデータに混ざることはなく、設定の試行錯誤もproductionにpushするまで本物の利用者には届きません。

## 鍵

環境ごとに2種類のAPIキーがあります。環境は鍵そのものに含まれるので、鍵が別の環境を操作することはありません。

| 鍵 | 接頭辞 | 置き場所 | できること |
|---|---|---|---|
| 公開鍵（publishable） | `pk_dev_…` / `pk_live_…` | アプリの中（ブラウザ）。公開される前提 | ログインした**プレイヤー**が**自分の**データにできることだけ |
| 秘密鍵（secret） | `sk_dev_…` / `sk_live_…` | CLI・CI・自分のサーバー。**ブラウザには絶対に入れない** | 設定のpush・デプロイ・自分のサーバーからのKUMODeckの呼び出し |

SDKは秘密鍵を渡されるとその場でエラーにします。鍵が平文で表示されるのは作成時の**一度だけ**で、サーバーはハッシュしか保存しません。入れ替えはダッシュボードで行います（新しい鍵を作る→デプロイする→古い鍵を失効させる）。

開発者本人（ダッシュボードとCLI）は、これとは別の開発者セッション（`kds_…`）で認証します。

## プレイヤー

プレイヤーは、あなたのアプリやゲームの利用者1人のことです（APIとSDKでは`players`・`playerId`のようにplayerと呼びます）。**1つのプロジェクトの1つの環境**の中だけに存在し、KUMODeckがプロジェクトをまたいで利用者を追跡することはありません。

- `Kumo.init()`は初回に自動で**ゲスト**としてログインし、次回からは同じゲストを復元します（リフレッシュトークンは公開鍵ごとに`localStorage`へ保存）。
- ゲストは後から**メールを連携**（`auth.linkEmail`）でき、セーブはそのまま残ります。以後は別の端末から`auth.signInWithEmail`でログインできます。
- セッションは15分のアクセストークン（JWT）と、90日の**回転式**リフレッシュトークンです。使用済みのリフレッシュトークンが再提示されると系列ごと失効します（盗難対策）。SDKは更新を自動で行い、ブラウザのタブ同士でも調整します。
- BANされたプレイヤーは、ログイン・更新・書き込みのたびに拒否され、接続中のリアルタイム通信も切断されます。

## マスターデータ（`kumo.config.json`）

サーバーがプロジェクトに守らせるルールは、コードではなく**宣言**で書きます。

| セクション | 定義するもの |
|---|---|
| `features` | この環境でONにする機能（はじめはすべてOFF） |
| `stats` | プレイヤーごとの数値と、その集計方法（`sum`・`max`・`min`・`latest`） |
| `multiplayer.modes` | ゲーム向け: ルームの人数とクイックマッチのルール |

`kumodeck config push`（またはダッシュボードの編集）で反映します。pushのたびに全体を検証して版を付けます。内容が同じなら版は増えません。アプリは公開部分（`GET /v1/gamedata/definitions`）を読めますが、**適用するのはサーバーだけ**です。改造されたクライアントがそれを変えることはできません。詳細は[設定リファレンス](/ja/docs/reference/config/index.md)を参照してください。
