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

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

> Application クラスを通じてアプリケーションを確認、制御、操作します。ステータス、ログ、メトリクス、ライフサイクル（起動、停止、再起動）、削除に対応します。

このページのすべての操作は、まず `Application` インスタンスを取得することから始まります。

```typescript theme={null}
import { SquareCloudAPI } from "@squarecloud/api";

const api = new SquareCloudAPI(process.env.SQUARE_API_KEY!);
const app = await api.applications.fetch("abc123def456abc123def456");
```

`api.applications.fetch(id)` は `Application` を返します。アプリに Web ドメインがバインドされている場合は `WebsiteApplication` として返されます。`.network` を使用する前に、実行時に `app.isWebsite()` で型を絞り込んでください（[Network](/ja/sdks/js/network) を参照）。

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

| Property      | Type             | Description                                                                                                       |
| ------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------- |
| `id`          | `string`         | アプリケーション ID（24 桁の 16 進数）                                                                                          |
| `name`        | `string`         | 表示名                                                                                                               |
| `description` | `string?`        | `squarecloud.app` に記載された説明                                                                                        |
| `url`         | `string`         | Web ダッシュボードの URL                                                                                                  |
| `ram`         | `number`         | 割り当てられた RAM（MB 単位）                                                                                                |
| `cluster`     | `string`         | アプリが動作している Cluster                                                                                                |
| `language`    | `string`         | `javascript` \| `typescript` \| `python` \| `java` \| `elixir` \| `rust` \| `go` \| `php` \| `dotnet` \| `static` |
| `domain`      | `string \| null` | デフォルトの `<subdomain>.squareweb.app` ホスト（Web 以外のアプリでは `null`）                                                       |
| `custom`      | `string \| null` | 設定されている場合、アプリにバインドされたカスタムドメイン                                                                                     |
| `createdAt`   | `Date`           | 作成日                                                                                                               |

<Note>
  v4 では、カスタムドメインが設定されていない場合 `app.custom` は `null` になります（v3 では `undefined` でした）。
</Note>

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

`app.getStatus()` は、ライブの実行状態を持つ `ApplicationStatus` インスタンスを返します。

```typescript theme={null}
const status = await app.getStatus();

console.log(status.status);          // "running" | "starting" | "restarting" | "exited" | "created" | "deleting"
console.log(status.running);         // boolean
console.log(status.usage.cpu);       // "0.22%"
console.log(status.usage.ram);       // "70MB"
console.log(status.usage.network);   // { total: "0 KB ↑ 0 KB ↓", now: "0 KB ↑ 0 KB ↓" }
console.log(status.usage.storage);   // "0B"
console.log(status.uptime);          // Date | undefined
console.log(status.uptimeTimestamp); // number | undefined
```

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

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

```typescript theme={null}
const list = await api.applications.statusAll();

for (const summary of list) {
    console.log(`${summary.applicationId} → running=${summary.running}`);
    if (summary.running) {
        console.log(`  cpu=${summary.usage.cpu}, ram=${summary.usage.ram}`);
    }

    // Promote a summary to the full status with .fetch()
    const full = await summary.fetch();
    console.log(full.uptime);
}
```

## ログの取得

`app.getLogs()` は、直近のログ出力を `string` として返します。

```typescript theme={null}
const logs = await app.getLogs();
console.log(logs);
```

## メトリクスの取得

`app.getMetrics()` は、直近 24 時間の CPU、RAM、ネットワークのサンプル（最大 **288 ポイント**、5 分ごとに 1 つ）を返します。

```typescript theme={null}
const metrics = await app.getMetrics();

console.log(metrics.length, "data points");
console.log(metrics[0]);
// { timestamp: 1717084800000, cpu: 12.3, ram: 187, network: { ... } }
```

<Warning>
  `getMetrics()` を使用するには、アプリケーションに **少なくとも 512MB の RAM** が割り当てられている必要があります。
</Warning>

## リアルタイムイベントストリーム

`app.realtime()` は [Server-Sent Events](https://developer.mozilla.org/docs/Web/API/Server-sent_events) ストリームを開きます。完全な例については専用の [Realtime](/ja/sdks/js/realtime) ページを参照してください。

## ライフサイクル

すべてのライフサイクルメソッドは `boolean`（成功時は `true`）へと解決されます。

```typescript theme={null}
await app.start();
await app.restart();
await app.stop();
```

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

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

```typescript theme={null}
const deleted = await app.delete();
console.log(deleted); // true | false
```

## アプリケーションデータの更新

`app.fetch()` は API からアプリケーションを再取得し、まったく新しい `Application` インスタンスを返します。キャッシュされたデータが古くなっていると思われる場合に使用してください。

```typescript theme={null}
const fresh = await app.fetch();
```
