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

# サービス比較

> 特定の要件に基づいてS3互換ストレージとWalrusパブリッシャーRaw APIのどちらを選択するかを決定するのに役立つガイド

<Note>
  Nami Cloudは、分散ストレージと対話するための2つの方法を提供しています。両方のサービスはWalrusを基盤としたストレージレイヤーを使用していますが、異なるインターフェースと機能セットを提供します。このガイドは、特定の要件に基づいてS3互換ストレージとWalrusパブリッシャーRaw APIのどちらを選択するかを決定するのに役立ちます。
</Note>

## サービス比較概要

| 機能          | S3互換ストレージ          | WalrusパブリッシャーAPI       |
| ----------- | ------------------ | ---------------------- |
| レイテンシ       | 数百ミリ秒              | \~10秒のアップロード + 10秒の可用性 |
| ストレージ更新     | 自動（ハンズフリー）         | 手動エポック管理               |
| APIスタイル     | 標準S3 REST API      | カスタムWalrusプロトコル        |
| 学習曲線        | 最小（馴染みのあるS3）       | 中程度（新しい概念）             |
| 既存ツールサポート   | 完全なAWS SDKサポート     | カスタム統合が必要              |
| パフォーマンス     | Railgunによる高速化（ベータ） | 直接ネットワークアクセス           |
| 分析とモニタリング   | メトリクスをサポート         | メトリクスをサポート             |
| ストレージエポック制御 | 自動化（ハンズフリー）        | 手動制御が可能                |
| Web3統合      | 抽象化されたレイヤー         | 直接ブロックチェーンアクセス         |

## 詳細サービス分析

### **S3互換ストレージ**

#### S3互換を選ぶべき時

* **AWS S3からの移行** - コード変更はゼロ
* **迅速なプロトタイピング** - 馴染みのあるツールですぐに開始
* **シンプルなストレージニーズ** - 複雑さなしにファイルをアップロード/ダウンロード
* **チームの馴染み** - 開発者はすでにS3 APIを知っている
* **サードパーティ統合** - S3エンドポイントを期待するツールを使用

#### 利点

<div className="border border-green-200 rounded-lg p-4 bg-green-50 mb-4">
  <ul className="text-sm text-green-700 space-y-2">
    <li>**移行の摩擦ゼロ** - 既存のS3コードとツールで動作</li>
    <li>**自動管理** - 組み込みの暗号化、更新、最適化</li>
    <li>**馴染みのあるインターフェース** - 標準S3オペレーション（PUT、GET、DELETE、LIST）</li>
    <li>**Railgun加速**（ベータ） - 組み込みのパフォーマンス最適化</li>
    <li>**SDKサポート** - すべての主要言語でAWS SDKと連携</li>
    <li>**迅速なセットアップ** - 数分でデータの保存を開始</li>
  </ul>
</div>

#### 欠点

<div className="border border-red-200 rounded-lg p-4 bg-red-50 mb-4">
  <ul className="text-sm text-red-700 space-y-2">
    <li>**限られた可視性** - 基盤となるWalrusオペレーションへの洞察が少ない</li>
    <li>**S3の制限** - S3 API設計パターンに制約される</li>
  </ul>
</div>

### **WalrusパブリッシャーRaw API**

#### パブリッシャーAPIを選ぶべき時

* **Web3アプリケーション** - 直接的なブロックチェーン検証と制御が必要
* **カスタムワークフロー** - 専門的なストレージ統合を構築

#### 利点

<div className="border border-green-200 rounded-lg p-4 bg-green-50 mb-4">
  <ul className="text-sm text-green-700 space-y-2">
    <li>**マルチエンドポイント管理** - 複数のパブリッシャーを地域ごとに制御</li>
    <li>**包括的な分析** - 詳細なメトリクス、ログ、パフォーマンスデータ</li>
    <li>**直接Walrusアクセス** - ストレージエポックとブロックチェーンオペレーションの完全な制御</li>
    <li>**柔軟な設定** - 特定のユースケースに合わせたカスタム設定</li>
  </ul>
</div>

#### 欠点

<div className="border border-red-200 rounded-lg p-4 bg-red-50 mb-4">
  <ul className="text-sm text-red-700 space-y-2">
    <li>**高いレイテンシ** - 10秒のアップロード + 10秒の可用性</li>
    <li>**手動管理** - ストレージエポックを管理する必要がある</li>
    <li>**急な学習曲線** - Walrusプロトコルの概念を理解する必要がある</li>
    <li>**カスタム統合** - 既存のSDKサポートがなく、自分のクライアントを構築する必要がある</li>
    <li>**より複雑なセットアップ** - エンドポイントとモニタリングの設定が必要</li>
    <li>**S3ツールサポートなし** - 既存のS3 CLIツールやライブラリを使用できない</li>
    <li>**高い開発コスト** - 実装により多くの時間が必要</li>
  </ul>
</div>

## パフォーマンスとスケーラビリティの比較

### レイテンシとスループット

<CardGroup cols={2}>
  <Card title="S3互換ストレージ" icon="clock">
    * **Railgun加速**（ベータ）：グローバルで100ms未満
    * **シングルエンドポイント**：シンプルさのために最適化
    * **自動キャッシング**：組み込みのエッジ加速
    * **標準オペレーション**：S3セマンティクスでのPUT/GET
  </Card>

  <Card title="WalrusパブリッシャーAPI" icon="rocket">
    * **直接ネットワークアクセス**：ネイティブWalrusパフォーマンス
    * **マルチエンドポイント**：パブリッシャー間での負荷分散
    * **地理的最適化**：最寄りのパブリッシャーへのルーティング
    * **バッチオペレーション**：効率的な一括アップロード/ダウンロード
  </Card>
</CardGroup>

### コード例の比較

<CodeGroup>
  ```javascript S3互換ストレージ theme={null}
  import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

  const s3Client = new S3Client({
  endpoint: "https://my-bucket.storage.nami.cloud",
  credentials: {
  accessKeyId: "your-access-key",
  secretAccessKey: "your-secret-key"
  }
  });

  // ファイルをアップロード - 標準S3 API
  await s3Client.send(new PutObjectCommand({
  Bucket: "my-bucket",
  Key: "file.jpg",
  Body: fileBuffer
  }));
  ```

  ```javascript WalrusパブリッシャーAPI theme={null}
  // Walrusパブリッシャーへの直接HTTP API呼び出し
  const endpointKey = 'your-endpoint-key';
  const response = await fetch(
    `https://walrus-mainnet-publisher.nami.cloud/${endpointKey}/v1/blobs?epochs=5`, 
    {
      method: 'PUT',
      body: fileBuffer
    }
  );

  const result = await response.json();
  if (result.newlyCreated) {
    console.log(`保存先: ${result.newlyCreated.blobObject.blobId}`);
    console.log(`エポックまで有効: ${result.newlyCreated.blobObject.storage.endEpoch}`);
    console.log(`ストレージコスト: ${result.newlyCreated.cost}`);
  } else if (result.alreadyCertified) {
    console.log(`すでに存在: ${result.alreadyCertified.blobId}`);
    console.log(`エポックまで有効: ${result.alreadyCertified.endEpoch}`);
  }
  ```
</CodeGroup>
