クライアントの生成
CodamaはプログラムのIDLファイルからTypeScriptとRustクライアントを生成します。生成されたクライアントにはinstructionsを呼び出すための関数とアカウントをフェッチするための関数が含まれており、プログラムアカウントやinstruction dataを手動でシリアライズおよびデシリアライズする必要がなくなります。
Codamaは活発に開発中であり、変更される可能性があります。最新情報については、 クイックリファレンスにリンクされているリポジトリを参照してください。
クイックリファレンス
CLIコマンド
| コマンド | 説明 |
|---|---|
codama init | Codama設定ファイルを生成する |
codama run | 設定ファイルからプログラムクライアントを生成する |
クライアントジェネレーター
| パッケージ | 説明 |
|---|---|
@codama/renderers-js | @solana/kit互換のTypeScriptクライアントを生成 |
@codama/renderers-rust | solana_sdk互換のRustクライアントを生成 |
@codama/nodes-from-anchor | AnchorのIDLをCodamaのIDLに変換してクライアントを生成 |
追加リソース
| リソース | 説明 |
|---|---|
| Codama | Codama GitHub |
| Codama CLI | Codama CLI GitHub |
| Codama Macros | Codama Macros GitHub。Codamaマクロを使用してネイティブRustプログラムからCodama IDLを生成 |
| Codama Macros Example Program | Codamaマクロの使用方法を示すサンプルプログラム |
例
この例では、Anchorプログラム IDLからクライアントを生成するプロセスを説明します。
プロジェクトファイルのセットアップ
一緒に進めるには、exampleという新しいディレクトリを作成し、コードスニペットからidl.json
ファイルとpackage.jsonファイルを追加します。
この例ではカウンタープログラムIDLを使用しています。 ソースを表示。
Anchorプロジェクトでは、IDLは target/idl/<program_name>.json にあり、
anchor build を実行した後に確認できます。
Codama設定ファイルの作成
Codamaは設定ファイルを使用して、IDLファイルの場所、生成するクライアント言語、生成されたコードの出力先を指定します。以下のコマンドを実行して、この設定を作成します:
$npx codama init
これにより、プロジェクトのルートに codama.json
ファイルを作成し、必要なCodama依存関係をインストールするための質問が表示されます。
Welcome to Codama!✔ Where is your IDL located? (Supports Codama and Anchor IDLs). … idl.json✔ Which script preset would you like to use? › Generate JavaScript client, Generate Rust client✔ [js] Where should the JavaScript code be generated? … clients/js/src/generated✔ [rust] Where is the Rust client crate located? … clients/rust✔ [rust] Where should the Rust code be generated? … clients/rust/src/generated▲ Your configuration requires additional dependencies.▲ Install command: pnpm install @codama/nodes-from-anchor @codama/renderers-js @codama/renderers-rust✔ Install dependencies? … yes→ Installing├─ @codama/nodes-from-anchor├─ @codama/renderers-js└─ @codama/renderers-rust✔ Dependencies installed successfully.✔ Configuration file created.└─ Path: /example/codama.json
クライアントの生成
設定ファイルが作成されたら、生成コマンドを実行してクライアントを生成します:
$npx codama run --all
これにより、codama設定ファイルで指定されたファイルパスにプログラムクライアントが生成されます。
{"idl": "idl.json","before": [],"scripts": {"js": {"from": "@codama/renderers-js","args": ["clients/js/src/generated"]},"rust": {"from": "@codama/renderers-rust","args": ["clients/rust/src/generated",{"crateFolder": "clients/rust","formatCode": true}]}}}
生成されたすべてのファイルが対応するコードスニペットに表示されているわけではありません。
生成されたクライアントの使用
生成されたクライアントには、プログラムと対話するためのソースコードが含まれていますが、package.json(TypeScript用)またはCargo.toml(Rust用)ファイルは含まれていません。
新しいpackage.jsonとCargo.tomlファイルを作成するか、生成されたクライアントから必要な依存関係をプロジェクトの既存ファイルに追加する必要があります。
アプリケーションへの統合
クライアントをアプリケーションのソースディレクトリに直接生成し、必要な依存関係を既存のpackage.jsonまたはCargo.tomlに追加します。
クライアントコードを共有または公開する必要がないアプリケーションを構築する場合は、このアプローチを使用してください。
スタンドアロンパッケージまたはクレート
各クライアント用に個別のTypeScriptパッケージまたはRustクレートを作成します。例えば、clients/js/にpackage.jsonを、clients/rust/にCargo.tomlを追加します。
クライアントを再利用可能なライブラリ(npmまたはcrates.io)として公開する場合や、モノレポ内の複数のアプリケーション間でクライアントを共有する場合は、このアプローチを使用してください。
Is this page helpful?