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

# TypeScript SDK

> @raydium-io/raydium-sdk-v2 エンドツーエンド — インストール、4 つのモジュールファサード、トランザクション構築、そしてすべての新規統合者が直面する落とし穴。

<Info>
  **このページは AI による自動翻訳です。すべての内容は英語版を正とします。**

  [英語版を表示 →](/sdk-api/typescript-sdk)
</Info>

<Info>
  **バージョン情報。** このページは `@raydium-io/raydium-sdk-v2@0.2.42-alpha` を対象としています。このバージョンは本サイトのすべてのコード例で検証済みです（2026-04）。SDK は 1.0 未満であり、型サーフェスはリリース間で進化しています — バージョンをピンで固定してください。
</Info>

## インストール

```bash theme={null}
npm install @raydium-io/raydium-sdk-v2 @solana/web3.js @solana/spl-token
# または
pnpm add @raydium-io/raydium-sdk-v2 @solana/web3.js @solana/spl-token
```

SDK は TypeScript で書かれており、JS アーティファクトと一緒に `.d.ts` を提供しています。最小ツールチェーン：Node 18+、TypeScript 5.0+、`moduleResolution: "bundler"` または `"node16"`。

## 初期化

エントリーポイントは `Raydium.load` です：

```ts theme={null}
import { Raydium } from "@raydium-io/raydium-sdk-v2";
import { Connection, Keypair, clusterApiUrl } from "@solana/web3.js";

const connection = new Connection(process.env.RPC_URL ?? clusterApiUrl("mainnet-beta"));
const owner      = Keypair.fromSecretKey(/* ... */);

const raydium = await Raydium.load({
  owner,
  connection,
  cluster: "mainnet",           // "mainnet" | "devnet"
  disableFeatureCheck: true,    // SDK のスタートアップ機能検出 API 呼び出しをスキップ
  blockhashCommitment: "confirmed",
});
```

`Raydium.load` は非同期です。スタートアップ時に `api-v3.raydium.io` から小さな `/config` ペイロードを取得します（現在の `AmmConfig` アカウント、フィーティアなどをリスト）。オフライン環境では `disableFeatureCheck: true` を設定してください。これらの値をいくつかのビルダーに手動で供給する必要があります。

## 4 つのモジュールファサード

ロード後、`raydium` オブジェクトは 4 つのモジュールファサードを公開します（製品サーフェスごとに 1 つ）：

```ts theme={null}
raydium.cpmm       // CPMM プール：createPool、addLiquidity、withdrawLiquidity、swap、...
raydium.clmm       // CLMM プール：createPool、openPositionFromBase、increasePositionFromBase、
                   //             decreaseLiquidity、harvestAllRewards、swap、...
raydium.liquidity  // AMM v4 プール：computeAmountOut、swap、addLiquidity、removeLiquidity、...
raydium.farm       // ファーム v3/v5/v6：deposit、withdraw、harvestAllRewards、create、setRewards
raydium.launchpad  // LaunchLab：createLaunchpad、buyExactIn、sellExactIn、graduate、...
raydium.trade      // マルチプール ルーティング：quotes、route-execution（0.2.41 ではベータ版）
raydium.token      // ヘルパー：トークンリスト取得、メタデータ、ATA 作成
```

（実は 5 つのファサードが合計で存在します — 「4 つ」は Raydium が公開でグループ化する方法で、`trade` と `token` は補助ユーティリティとしています。）

## トランザクション ビルダー

変更する関数はすべてビルダーを返し、即座には実行しません：

```ts theme={null}
const { execute, builder, transaction, innerTransactions, extInfo } =
  await raydium.cpmm.addLiquidity({
    poolInfo,
    amountInA,
    amountInB,
    slippage: 0.005,
    txVersion: TxVersion.V0,
  });
```

返されたフィールド：

* **`execute`** — 署名と送信を行う便利関数。`builder.execute` と同等です。
* **`builder`** — 累積されたすべての命令と署名者を持つ `TxBuilder` インスタンス。`.build()` を呼び出して `VersionedTransaction[]` を取得します。独自の命令を挿入したり、外部署名者で署名する必要がある場合に便利です。
* **`transaction` / `innerTransactions`** — 生の命令配列。複合マルチプログラム トランザクションを構築するときに使用します。
* **`extInfo`** — 製品固有のエクストラ。たとえば、`createPool` は `extInfo.poolId` を返します。`createLaunchpad` は新しいローンチ状態 PDA を返します。

`txVersion` はレガシー vs V0 トランザクション フォーマットを制御します。V0（アドレス参照テーブル）がデフォルトの推奨です — より大きなスワップを 1 つのトランザクションに収めることができます。

### なぜ非同期ビルダーなのか？

ほぼすべてのビルダーは内部的にオンチェーン状態を取得します：プール情報（見積もり用）、トークン プログラム所有権（Token-2022 vs SPL ルーティング）、アカウント ソル払い例外（ATA 作成用）など。SDK は積極的にキャッシュしていますが、新しいプール用の最初の呼び出しは RPC ラウンドトリップを伴います。再取得を避けるために、長寿命の `raydium` インスタンスを保持してください。

## CLMM モジュール追加（最新リリース）

CLMM ファサードは、新しい動的フィー、単一方向フィー、リミットオーダー機能のサーフェスを獲得しました：

* **`raydium.clmm.createCustomizablePool`** — `collectFeeOn`、`enableDynamicFee`、`dynamicFeeConfigId` を受け入れる `createPool` のスーパーセット。新しいノブが必要な新しいプールにこれを使用してください。クラシック `createPool` は引き続きデフォルトフィーのプールで機能します。
* **`raydium.clmm.openLimitOrder`** — リミットオーダーをサポートするプール上に単一ティック リミットオーダーを開きます。`poolInfo`、`poolKeys`、`limitOrderConfig`（`/main/clmm-limit-order-config` から）、`inputMint`、`inputAmount`、およびターゲット `tick` をとります。
* **`raydium.clmm.increaseLimitOrder` / `decreaseLimitOrder`** — 既存オーダーの未約定部分を調整します。完全に約定したオーダーで減少すると `InvalidOrderPhase` でリバートします。
* **`raydium.clmm.settleLimitOrder` / `settleAllLimitOrder`** — 約定済み出力をオーナーの ATA に確定します。オーダーのオーナーまたはプールの `limit_order_admin` キーパーが呼び出すことができます。
* **`raydium.clmm.closeLimitOrder` / `closeAllLimitOrder`** — 完全に決済されたオーダーを閉じてレントを回復します。
* **`raydium.api.getClmmDynamicConfigs()` / `getClmmLimitOrderConfigs()`** — 新しい `/main/clmm-dynamic-config` と `/main/clmm-limit-order-config` エンドポイントをヒットする REST ヘルパー。

小規模な再構成により、`utils/` を `libraries/` に移動しました。`@raydium-io/raydium-sdk-v2/utils/...` からインポートしたコードは `@raydium-io/raydium-sdk-v2/libraries/...` に切り替える必要があります。トップレベル パッケージ バレルは変更されていないため、ほとんどのユーザーは名前変更を認識しません。

エンドツーエンド TypeScript ウォークスルーは [`products/clmm/code-demos`](/ja/products/clmm/code-demos) にあります。

## よくある落とし穴

### 1. クラスター不一致

SDK のスタートアップ設定はクラスター固有です。`cluster: "mainnet"` を devnet `Connection` と混ぜると、サイレント ミスルーティングが発生します：SDK は mainnet `AmmConfig` に対して見積もりを取得しますが devnet に送信します。両方を常に渡してください。

### 2. ATA の事前作成を忘れる

ミントとの初回インタラクション時に、ユーザーの関連トークン アカウントが存在しない場合があります。SDK は、欠落 ATA を検出すると自動的に `AssociatedTokenAccount::create` 命令を先頭に追加します。これにより少量のレント費用が発生します。ウォレットが SOL 不足の場合、これはサイレント失敗します。再試行する前にチェックして資金を提供してください。

### 3. 古い `poolInfo`

`poolInfo` はキャッシュされたスナップショットです。取得後、プール状態が変わった場合（大きなトレードが価格を動かしたなど）、スワップの `minAmountOut` は古い状態に対して計算され、オンチェーンの amoount-out を下回り、リバートする可能性があります。高額トランザクション構築前に直ちに `poolInfo` を再取得するか、SDK の `computeAmountOut` を使用してください。これにより準備金が再クエリされます。

### 4. プライオリティ フィー

SDK はデフォルトでは計算ユニット価格を追加しません。高容量ウィンドウ（新規プール発表、ミーム コイン イベント）では、トランザクションは多くのものと競争し、着地しない可能性があります。明示的な `computeBudgetConfig` を提供してください：

```ts theme={null}
const { execute } = await raydium.cpmm.swap({
  poolInfo,
  inputAmount: new BN(...),
  swapResult: ...,
  slippage: 0.005,
  txVersion: TxVersion.V0,
  computeBudgetConfig: {
    units: 250_000,          // CU リミット
    microLamports: 50_000,   // CU あたりのプライオリティ フィー
  },
});
```

サイジング ガイダンスについては [`integration-guides/priority-fee-tuning`](/ja/integration-guides/priority-fee-tuning) を参照してください。

### 5. スリッページ許容度はプール タイプと一致する必要があります

CPMM と AMM v4 は CPMM 数学です（通常のトレードの影響が低い）。CLMM は区分別です（ティック クロッシングで影響がジャンプ）。CPMM の例から 0.5% スリッページ許容度をコピーして、複数のティックをクロスする CLMM スワップに入れると、トランザクションはリバートする可能性が高いです。SDK の `computeAmountOut` は `priceImpact` を返します。許容度をそれより大きくサイズしてください。

### 6. `BN` vs `number`

SDK 内のすべての金額フィールドは `bn.js` `BN` インスタンスです — JavaScript `number` ではありません。`.toNumber()` 経由で金額値を変換すると `2^53` でサイレント切り詰めが発生します。約 9 クアドリリオン以上の値（9 進プール上では一般的）の場合、これは間違った結果を生成します。最終 UI レンダーまですべてを `BN` で保持してください。

## バージョニング ポリシー

* `@raydium-io/raydium-sdk-v2` は Raydium が保守する唯一の SDK です。すべてのドキュメント、デモ、統合ガイダンスはこれを対象とします。
* 古い v1 パッケージ（`@raydium-io/raydium-sdk`）は歴史的理由で npm に存在します。メンテナンスは CPMM と LaunchLab が出荷した後に終了しました（v1 はどちらもサポートされていません）。2024 年以降 v1 のリリースはありません。v1 をライフエンド扱いにしてください：新規コードに使用しないでください。残っている v1 統合を v2 に移行してください。
* SDK v2 は 1.0 未満です。0.x マイナー リリース間でいくつかの破壊的変更が可能です。検証されたバージョンをピンで固定し、アップグレード時に GitHub リリース ノートを確認してください。

## アップグレード

SDK マイナー バージョン間でアップグレードする場合：

1. 変更する呼び出しのすべての戻り値の型を再確認してください — シェイプの変更（例：`extInfo`）は頻繁に発生します。
2. `poolInfo` フェッチシグネチャを再生成してください — フィールドは名前変更されている可能性があります。
3. スリッページ処理を再検証してください。SDK はリリース間で自動バウンドとオプトイン バウンド動作の間で切り替わっています。
4. `raydium.trade`（ルーティング）を使用する場合、ルート シェイプを再検証してください — これはサーフェスの最も不安定な部分です。

## ヘルプを得る

SDK と API に関する質問の場合：

* **GitHub issues** — [github.com/raydium-io/raydium-sdk-V2/issues](https://github.com/raydium-io/raydium-sdk-V2/issues) でバグとフィーチャー リクエストをファイルしてください。Raydium チームは積極的に監視しています。
* **Discord** — [discord.gg/raydium](https://discord.gg/raydium) の `#dev-support` チャネルで同期サポートを受けてください。
* **Telegram** — [raydium.io](https://raydium.io) からリンクされているデベロッパー チャット（未検証 Telegram グループは避けてください）。

セキュリティ問題の場合は、公開チャネルに投稿しないでください — [`security/disclosure`](/ja/security/disclosure) を参照してください。

## ポインタ

* [`sdk-api/rest-api`](/ja/sdk-api/rest-api) — SDK の HTTP 補完。
* [`sdk-api/trade-api`](/ja/sdk-api/trade-api) — サーバー構築スワップ トランザクション。
* [`sdk-api/anchor-idl`](/ja/sdk-api/anchor-idl) — プログラム IDL から直接クライアントを再生成します。
* [`sdk-api/python-integration`](/ja/sdk-api/python-integration) — `solana-py` 経由の Python 同等物。
* [`integration-guides/priority-fee-tuning`](/ja/integration-guides/priority-fee-tuning) — `computeBudgetConfig` のサイジング。

ソース：

* [Raydium SDK v2 source](https://github.com/raydium-io/raydium-sdk-V2)
* Raydium SDK リリース ノート。
