> ## 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.

# Commit and upload

> 新しいアプリケーションを Square Cloud にアップロードするか、既存のアプリケーションに新しいファイルを commit します。

```go theme={null}
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)
```

## 新しいアプリケーションのアップロード

`api.PostApplications(reader)` は任意の `io.Reader` から zip をアップロードし、まったく新しいアプリケーションを作成して `*squarecloud.ApplicationUploaded` を返します。

```go theme={null}
file, err := os.Open("app.zip")
if err != nil {
	panic(err)
}
defer file.Close()

uploaded, err := api.PostApplications(file)
if err != nil {
	panic(err)
}

fmt.Println(uploaded.ID)               // 新しく作成されたアプリケーション ID
fmt.Println(uploaded.Name)             // 表示名
fmt.Println(uploaded.RAM)              // 割り当てられた RAM (MB)
fmt.Println(uploaded.CPU)              // 割り当てられた CPU シェア
fmt.Println(uploaded.Language.Name)    // 例: "go"
fmt.Println(uploaded.Language.Version) // 例: "1.24"
```

`Description` と `Subdomain` は、設定ファイルで指定されている場合にのみ含まれます。

<Note>
  zip には、アプリケーションのエントリーポイント、依存関係ファイル、そして `squarecloud.app`/`squarecloud.config` 設定ファイルが含まれている必要があります。[設定ファイルガイド](/ja/getting-started/config-file) を参照してください。
</Note>

## 既存のアプリケーションへのファイルの commit

`api.PostApplicationCommit(appID, reader)` は、デプロイ済みのアプリケーションに zip をアップロードし、一致するファイルを置き換えます。

```go theme={null}
file, err := os.Open("dist.zip")
if err != nil {
	panic(err)
}
defer file.Close()

err = api.PostApplicationCommit("abc123def456abc123def456", file)
if err != nil {
	panic(err)
}
```

アプリケーションのルートではなくサブディレクトリに commit するには、`rest.WithQueryParam` で `path` クエリパラメータを渡します:

```go theme={null}
err = api.PostApplicationCommit(
	"abc123def456abc123def456",
	file,
	rest.WithQueryParam("path", "src"),
)
```

commit してもアプリケーションは再起動されません — 変更に再起動が必要な場合は、後から再起動シグナルを送ってください:

```go theme={null}
err = api.PostApplicationSignal("abc123def456abc123def456", squarecloud.ApplicationSignalRestart)
```
