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

# アプリケーションの管理

> Applications インターフェースを通してアプリケーションを検査、制御、運用します — ステータス、ログ、メトリクス、ライフサイクル（起動、停止、再起動）、削除。

このページのすべての操作は `rest.Rest` クライアント上にあります:

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

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

## アプリケーションの取得

`api.GetApplication(appID)` は、完全な `squarecloud.Application` レコードを返します。

```go theme={null}
app, err := api.GetApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(app.ID, app.Name, app.Cluster, app.CreatedAt)
```

### アプリケーションのプロパティ

| Field         | Type      | Description                                                                                                                 |
| ------------- | --------- | --------------------------------------------------------------------------------------------------------------------------- |
| `ID`          | `string`  | アプリケーション ID（24 文字の 16 進数）                                                                                                   |
| `Name`        | `string`  | 表示名                                                                                                                         |
| `Description` | `string`  | 設定ファイルに記述された説明                                                                                                              |
| `Owner`       | `string`  | オーナーのユーザー ID                                                                                                                |
| `Cluster`     | `string`  | アプリが稼働しているクラスター                                                                                                             |
| `RAM`         | `int`     | 割り当てられた RAM（MB）                                                                                                             |
| `Language`    | `string`  | `javascript` \| `typescript` \| `python` \| `java` \| `elixir` \| `go` \| `rust` \| `ruby` \| `php` \| `dotnet` \| `static` |
| `Domain`      | `*string` | デフォルトの `<subdomain>.squareweb.app` ホスト — ウェブアプリでない場合は `nil`                                                                 |
| `Custom`      | `*string` | アプリに紐付けられたカスタムドメイン — 未設定の場合は `nil`                                                                                          |
| `CreatedAt`   | `string`  | 作成日                                                                                                                         |

`Domain` と `Custom` はポインタです — 参照解決の前に必ず nil チェックを行ってください:

```go theme={null}
if app.Domain != nil {
	fmt.Println("running at", *app.Domain)
}
```

## アプリケーションステータスの取得

`api.GetApplicationStatus(appID)` は、**人間が読みやすい形式**の値でライブのランタイム状態を返します。

```go theme={null}
status, err := api.GetApplicationStatus("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(status.Status)  // "running" | "starting" | "restarting" | "exited" | "created" | "deleting"
fmt.Println(status.Running) // bool
fmt.Println(status.CPU)     // "0.50%"
fmt.Println(status.RAM)     // "120/512MB"
fmt.Println(status.Network) // フォーマット済みの合計値
fmt.Println(status.Storage) // 例: "0B"

if status.Uptime != nil {
	fmt.Println(time.UnixMilli(*status.Uptime)) // 起動時刻
}
```

`Uptime` は起動タイムスタンプを Unix ミリ秒で保持する `*int64` です — アプリケーションが停止している場合は `nil` になります。

### Raw ステータス

`api.GetApplicationStatusRaw(appID)` は同じエンドポイントを `?rawData=true` 付きで呼び出し、フォーマット済み文字列の代わりに **数値** を返します — CPU/RAM は数値、ネットワークは `[in, out]` のバイトペアです。表示ではなく計算やグラフ描画をしたい場合に使用してください。

```go theme={null}
raw, err := api.GetApplicationStatusRaw("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(raw.CPU)     // 0.5
fmt.Println(raw.RAM)     // 120
fmt.Println(raw.Network) // { Total: [in, out], Now: [in, out] } 単位はバイト
```

<Note>
  フォーマット済みステータスは表示に便利です（`"120/512MB"`）。ダッシュボード、アラート、あるいは何らかの計算には raw ステータスを使ってください — フォーマット済み文字列を数値にパースし直すのは壊れやすい方法です。
</Note>

### すべてのアプリケーションの概要ステータス

アプリごとに 1 リクエストを送るのを避けるには、`api.GetApplicationListStatus()` を呼び出します:

```go theme={null}
list, err := api.GetApplicationListStatus()
if err != nil {
	panic(err)
}

for _, summary := range list {
	fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
```

CPU と RAM の数値は、現在稼働中のアプリケーションにのみ含まれます。

## ログの取得

`api.GetApplicationLogs(appID)` は、最新のログ出力を返します。

```go theme={null}
logs, err := api.GetApplicationLogs("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(logs.Logs) // string
```

## メトリクスの取得

`api.GetApplicationMetrics(appID)` は、直近 24 時間の CPU、RAM、ネットワークのサンプル（5 分ごとに 1 点、最大 **288 ポイント**）を `[]squarecloud.MetricPoint` として返します。

```go theme={null}
metrics, err := api.GetApplicationMetrics("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(len(metrics), "data points")
for _, point := range metrics {
	fmt.Println(point.Date, point.CPU, point.RAM, point.Net)
}
```

## ライフサイクル

`api.PostApplicationSignal(appID, signal)` は、アプリケーションを起動、停止、再起動します。シグナルは `squarecloud.ApplicationSignal*` 定数のいずれかです:

```go theme={null}
err := api.PostApplicationSignal("abc123def456abc123def456", squarecloud.ApplicationSignalStart)
if err != nil {
	panic(err)
}

// squarecloud.ApplicationSignalStop
// squarecloud.ApplicationSignalRestart
```

## アプリケーションの削除

<Warning>
  `DeleteApplication` はアプリケーションを完全に削除します。[snapshot](/ja/sdks/go/snapshots) がない限り、データを **復元することはできません**。
</Warning>

```go theme={null}
err := api.DeleteApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}
```
