> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI で最初のアプリをデプロイする

> Square Cloud CLI をインストールしてログインし、squarecloud upload でプロジェクトをデプロイ。ログの確認から squarecloud commit による更新までを説明します。

このガイドでは、手元のプロジェクトを Square Cloud 上で動くアプリケーションにし、その後の変更を反映する方法までを説明します。所要時間は数分です。

<Steps>
  <Step title="CLI をインストールする">
    <CodeGroup>
      ```bash macOS、Linux、WSL theme={"system"}
      curl -fsSL https://cli.squarecloud.app/install | bash
      ```

      ```bash Windows（Node.js が必要） theme={"system"}
      npm install -g @squarecloud/cli
      ```
    </CodeGroup>

    `squarecloud --version` で動作を確認します。コマンドが見つからない場合は、[インストール](/ja/cli-reference/installation#インストールの確認)を参照してください。
  </Step>

  <Step title="ログインする">
    ```bash theme={"system"}
    squarecloud auth login
    ```

    CLI が短いコードを表示し、ブラウザで認証ページを開きます。そのページでコードを入力して承認してください。API キーや CI での使い方は[認証](/ja/cli-reference/authentication)ページで説明しています。
  </Step>

  <Step title="設定ファイルを追加する">
    プロジェクトのルートに `squarecloud.app` ファイルを作成します。このファイルで、実行するファイル、確保するメモリ量、使用するランタイムのバージョンを Square Cloud に伝えます。

    ```systemd squarecloud.app theme={"system"}
    MAIN=index.js
    MEMORY=512
    VERSION=recommended
    DISPLAY_NAME=My first app
    ```

    Web サイトの場合は `SUBDOMAIN=<name>` を追加すると、`<name>.squareweb.app` で公開されます。各キーの説明は[設定ファイルのガイド](/ja/getting-started/config-file)にあります。
  </Step>

  <Step title="プロジェクトをアップロードする">
    プロジェクトのフォルダで次を実行します。

    ```bash theme={"system"}
    squarecloud upload
    ```

    CLI はフォルダを zip にまとめ（[`squarecloud.ignore`](/ja/getting-started/squarecloud-ignore) に記載されたものと、デフォルトで除外される `node_modules`、`.git`、ロックファイルは含めません）、新しいアプリケーションを作成します。

    ```bash 出力 theme={"system"}
    Compressing the current directory.
    Uploading the zip file to Square Cloud.

    ✓ Application uploaded to Square Cloud!
      Open it at https://squarecloud.app/dashboard/applications/<appID>
    ```

    さらに、新しいアプリケーションの ID を設定ファイルに書き込むため、以降のコマンドはどのアプリを指しているかを判断できます。

    ```systemd squarecloud.app theme={"system"}
    MAIN=index.js
    MEMORY=512
    VERSION=recommended
    DISPLAY_NAME=My first app
    ID=<appID>
    ```
  </Step>

  <Step title="動作を確認する">
    ```bash theme={"system"}
    squarecloud app status
    squarecloud app logs
    ```

    ID の指定は不要です。どちらも `ID=` 行を読み取ります。出力をリアルタイムで追うには `squarecloud app realtime` を実行し、止めるときは `Ctrl+C` を押します。
  </Step>

  <Step title="変更を反映する">
    コードを編集したら、フォルダを同じアプリケーションに送信して再起動します。

    ```bash theme={"system"}
    squarecloud commit --restart
    ```

    `upload` は実行するたびに新しいアプリケーションを作成します。`commit` は既存のアプリケーションを更新し、その ID、ドメイン、設定を維持します。
  </Step>
</Steps>

## CLI がアプリを特定する仕組み

1 つのアプリケーションを操作するコマンドは、使い方に `[appID]` と表示されます。この ID は省略できます。CLI は次の順序でアプリケーションを決定します。

1. **指定した ID。** 最初の引数として渡すか、引数が別の用途に使われるコマンドでは `--app <appID>` で渡します。対象は `app env set`、`remove`、`replace`、すべての `app file` コマンド、`app deploy webhook`、`app deploy github link` と `unlink`、`app network domain` です。
2. 現在のフォルダにある `squarecloud.app` ファイル（または `squarecloud.config`。両方ある場合は `squarecloud.app` が優先されます）の **`ID=` 行**。
3. CLI がターミナルで実行されている場合に表示される、アプリケーションの一覧から選ぶ**選択画面**。矢印キーと `Enter` で選び、`Esc` でキャンセルします。

一部のコマンドは動作が異なります。

* `commit` は選択画面を開きません。引数も `ID=` 行もない場合は、終了コード 1 で停止し、ID の指定を求めます。
* `app snapshot restore` は、常に最初の引数としてアプリケーション ID を受け取ります。
* データベースには設定ファイルがないため、`db` コマンドはデータベース ID を受け取るか、データベースの選択画面を開きます。
* ワークスペースを操作する `workspace` コマンドは、常にその ID を受け取ります。

ID を調べるには [`squarecloud app list`](/ja/cli-reference/apps#squarecloud-app-list) を実行します。スクリプトや CI では、選択画面に対話型ターミナルが必要なため、必ず ID を渡すか `ID=` 行を残しておいてください。

### アプリ ID の保存場所

`upload` が `ID=<appID>` を書き込むのは、フォルダにすでに設定ファイルがある場合だけです（設定ファイルはアップロードにも必要です）。変更するのはその 1 行だけで、ほかのキーやコメントはそのまま残ります。Square Cloud はファイルを読み込むときにこの行を無視するため、zip に含めたままでも問題ありません。

同じフォルダで `upload` を再度実行すると、別のアプリケーションが作成され、`ID=` 行はそちらを指すようになります。既存のアプリケーションを更新するには `commit` を使ってください。このフォルダから別のアプリケーションを操作したい場合は、この行を編集するか削除します。

## 次のステップ

<CardGroup cols={2}>
  <Card title="アップロードとコミット" icon="upload" href="/ja/cli-reference/deploy">
    upload、commit、zip のすべてのフラグと、zip に含まれる内容。
  </Card>

  <Card title="環境変数" icon="key" href="/ja/cli-reference/environment-variables">
    ターミナルから変数を設定したり、.env ファイルから読み込んだりします。
  </Card>

  <Card title="GitHub デプロイ" icon="github" href="/ja/cli-reference/github-deploys">
    Square Cloud GitHub App を通じて、push のたびにデプロイします。
  </Card>

  <Card title="グローバルフラグと CI" icon="terminal" href="/ja/cli-reference/global-flags-and-ci">
    JSON 出力、終了コード、パイプラインでの CLI の実行。
  </Card>
</CardGroup>
