
AIを使ってSolanaアプリを構築する方法
目次
AIを使ってSolana上でアプリを構築するためのツールスイートをリリースしました。
- Helius CLI
- Helius MCP
- Helius Skills
- Helius Claude Code Plugin
詳しくは、Helius for Agentsの発表をご覧ください。
人工知能(AI)は、ソフトウェア開発のあり方を変えています。
AIはバグを発見して修正し、新機能をすばやく構築し、できれば避けたい雑務の一部も処理できます。CopilotやCursorのようなツールを使えば、コーディングを高速化し、手間を減らせます。しかし、Solanaでは必ずしもうまく機能するとは限りません。
Solanaのアーキテクチャは、ほとんどのブロックチェーンとは異なります。トランザクションを並列処理し、コントラクトが所有する状態ではなくアカウントを利用し、セキュリティを高めるためにProgram-Derived Address(PDA)を使用します。
私たちのブログを読んだことがある方なら、Solanaでの構築はEthereumとは異なることをご存じでしょう。Solanaは高いスループットを提供し、アカウント管理にも独自のアプローチを採用しています。この違いは、異なるコーディングパターンで学習したAIモデルを混乱させることがあります。
この記事では、AIがSolanaを扱う際につまずくことがある理由を説明します。また、そうした問題を避ける方法もご紹介します。主に以下の点を取り上げます。
- プロンプトエンジニアリング:AIへの指示を改善します。
- コンテキスト入力:プロジェクトの詳細を提供し、AIの出力精度を高めます。
- 反復型ワークフロー:コードを小さなステップで構築します。次に進む前に確認し、改善します。
初心者でも経験豊富な開発者でも、これらのヒントを活用すれば、Solanaでの作業にAIをより効果的に活用できます。
SolanaにおけるAI開発の課題
Solana独自のアーキテクチャと要件は、AIに問題を引き起こす可能性があります。AIがそれらを考慮しないと、コードのデバッグやプログラムの書き直しに時間を浪費し、AIで開発を効率化する本来の目的が失われます。
Solana独自のアーキテクチャ
Solanaには、主に3つの特徴があります。
1. アカウントベースモデル
Ethereumなど多くのブロックチェーンでは、データがスマートコントラクトの内部ストレージに直接ひも付けられています。一方、Solanaのプログラミングモデルでは、すべてが「アカウント」を中心に構成されます。データはアカウントに保持され、「プログラム」(Solanaにおけるスマートコントラクトに相当)がそのデータを変更し、操作します。
重要な違いは、Solanaではプログラム自体も含め、すべてがアカウントであることです。プログラムは実行可能データを保存するアカウントにすぎず、それによって命令を処理できます。これに対しEthereumでは、秘密鍵で制御される外部所有アカウント(EOA)と、コードおよび内部ストレージを持つスマートコントラクトが区別されます。
この根本的な違いは、特にSolana向けのコードを書く際に誤解を招く可能性があります。Ethereumのスマートコントラクトと同様だと考え、アカウントモデルに不慣れな開発者は、プログラムがデータを所有できると誤って想定することがあります。このような想定は、Solanaへのデプロイ時にランタイムエラーやセキュリティ脆弱性を引き起こす可能性があります。
2. Program Derived Address(PDA)
Program-Derived Address(PDA)は、プログラムIDとシードから作成されます。PDAにより、プログラムは秘密鍵を必要とせずにアカウントを整理できます。しかし、AIモデルは通常のアドレスとPDAの違いを認識できないことがあります。シードの処理や所有権の確認を忘れると、Rustコードとしては正しくても、Solanaコードとしては正しくありません。
3. 並列実行
SolanaのランタイムであるSealevelは、トランザクションを1件ずつ処理する従来のブロックチェーンとは異なり、トランザクションを並列処理できます。これは、トランザクションが読み書きするアカウントを指定するため可能になります。この情報を利用して、Solanaはロックが必要なアカウントを判断し、多数のトランザクションを同時に安全に実行できます。
AIはこのモデルを誤解することがよくあります。Ethereum Virtual Machine(EVM)のように、トランザクションが順番に実行されると想定する場合があります。その結果、並列処理に最適化されていないコードが生成される可能性があります。SolanaのアカウントベースのロックシステムはEVMのアプローチと異なるため、AIがパフォーマンスやスケーラビリティに問題のあるコードを書くこともあります。
よくある問題点
AIを使ってSolanaアプリを構築する際、開発者が繰り返し直面する問題がいくつかあります。
1. 不正確なコード
AIはRustではコンパイルできても、Solanaにデプロイすると失敗する関数を生成することがあります。たとえば、AIペアプログラミングツールが署名者を見落としたり、アカウント参照を誤って解釈したりする場合があります。その結果、テストや実際のトランザクションを実行するか、セキュリティ監査を完了するまで発見できないバグやセキュリティ脆弱性が生じます。
2. 最適化されていないコード
AIが生成したコードが動作しても、コンピュートユニット向けに最適化されていなかったり、トランザクション処理が遅くなったり、見えにくいボトルネックが生じたりする可能性があります。AIがアカウントを1件ずつ更新する関数を書く場面を想像してください。適切に実装すればSolanaが同時に処理できることを認識していません。
3. 難しいデバッグ
AIモデルは、明示的に伝えない限り、フォルダ構成やカスタムデータ型の定義を把握できません。そのため、既存の構成と衝突する解決策を提案することがあり、それをプロジェクトに統合し直す作業が大きな負担になる可能性があります。
Helius AIツールでSolanaアプリをより速くリリースする
前述のとおり、AIを使ってSolana上で正しく構築するのは簡単ではありません。
この状況を変えるため、難しい部分を処理するSolana AI開発者ツールのスイートを構築しました。適切なツールへのルーティング、ベストプラクティスの適用、そして1つのプロンプトから本番環境対応アプリを作るためにAIエージェントが必要とする基盤の提供を行います。
Helius MCP Server
Helius MCP Serverは、AnthropicのオープンなModel Context Protocol(MCP)標準を基盤としており、getBalance、parseTransaction、getAssetsByOwner、createWebhookなど、60以上の構造化ツールをMCP対応クライアント(Claude Desktop、Cursor、VS Code、Windsurfなど)に公開します。
生のcurlコマンドを組み立ててJSON出力を解析する代わりに、エージェントは型付きのツール呼び出しを行い、構造化されたレスポンスを直接受け取ります。これにより、すべてのAPI操作が高速かつ信頼性の高いものになり、エラーも大幅に減少します。
1つのコマンドでClaude Codeに追加できます。
claude mcp add helius npx helius-mcp@latestHelius Skills
エージェントが使い方を知らなければ、60以上のツールにアクセスできても役に立ちません。https://www.helius.dev/blog/helius-for-agents#helius-skills-the-brain
Skillsは、ルーティングロジックと参照ファイルを備えた入念に作成されたプロンプトで構成される専門的な指示セットです。エージェントに、Solana開発のエキスパートになる方法を教えます。
スキルを読み込むと、エージェントはNFT検索でgetProgramAccountsではなくsearchAssetsを使い、優先手数料を動的に取得し、最も高いランディング率を得るためにSender経由でトランザクションをルーティングできるようになります。
4つのスキルをリリースしました。
- Build – すべてのHelius APIを対象とするSolanaコア開発
- DFlow – DFlow APIを使用するトレーディングアプリ
- Phantom – Phantom Connect SDKを使用したdAppのフロントエンド構築
- SVM – Solanaプロトコル内部の詳細
Skillsはモデルに依存せず、OpenAI API、Claude API、Cursor Rules、ChatGPTのカスタム指示で利用できます。
スキルを提供するには、こちらのフォームにご記入ください。
Helius CLI
Helius CLIは、アカウント管理、トランザクション送信、webhook管理、リアルタイムストリーミング、ステーキング、ZK Compressionなどを網羅する95以上のコマンドを備えた、フル機能のコマンドラインインターフェースです。
直接使用することも、エージェントに操作させることもできます。すべてのコマンドが--json出力と構造化された終了コードに対応しているため、エージェントはレスポンスを簡単に解析し、プログラムでエラーを処理できます。
Helius CLIは次のようにインストールします。
npm install -g helius-cliHelius Claude Code Plugin
Claude Code Pluginは、Helius MCP、DFlow MCP、4つのスキル、すべてのHelius製品の詳細な参照ファイルを1回のインストールにまとめています。MCPの手動設定も、個別のスキル設定も不要です。
インストール方法は次のとおりです。
/plugin marketplace add helius-labs/core-ai
/plugin install helius@helius-labsインストール後は、*「このウォレット用の税務レポートCLIを構築して」*のような1つのプロンプトだけで、完全に動作するページネーション対応のCLIアプリが生成されます。途中で追加のプロンプトを入力する必要はありません。
これらのツールを組み合わせることで、AIエージェントは試行錯誤の段階を省き、最初のプロンプトから正しく最適化されたSolanaコードをリリースするために必要なツールとドメイン知識を利用できます。
SolanaにおけるAI開発のヒント
AIを使ってSolanaアプリを構築する際は、以下の推奨事項に従ってください。
1. 強力なプロンプトから始める
システムプロンプトは、AIの職務記述書のようなものです。AIの役割(例:「あなたはAnchorを使用したSolanaプログラミングの専門家です」)と、従うべきルールを伝えます。
以下は、少し詳しくした一般的な例です。
# You are an expert in Solana program development.
Specializing in building and deploying smart contracts using Rust and Anchor,
and integrating on-chain data with @solana/web3.js.
---
## General Guidelines
- Write secure, efficient, and maintainable code for Solana programs.
- Thoroughly test and audit all programs before deployment.
## Solana Program Development with Rust and Anchor
- Prioritize Rust's safety and performance.
- Use Anchor macros to simplify account management, error handling, and
data serialization.
- Keep code modular and maintain a clear separation between logic and data.
## Security and Best Practices
- Enforce strict access controls--ensure only permitted signers can modify data.
- Use PDAs responsibly: validate seeds and ownership checks to prevent conflicts.
## Performance and Optimization
- Minimize transaction costs by bundling operations efficiently.
- Exploit parallelism--don't serialize steps unnecessarily.
- Regularly benchmark your code to spot and remove performance効果的な理由
適切に記述されたシステムプロンプトは設計図のように機能し、AIをSolanaのアーキテクチャに適合させます。これにより、すべてのレスポンスが正確かつ安全で、ニーズに合ったものになります。
- 適切なコンテキストを設定する:AIを「Solanaの専門家」と指定することで、一般的なブロックチェーンの前提ではなく、PDA、並列処理、AnchorなどSolana固有の機能に集中させられます。
- 一貫したコードを生成する:厳格なアクセス制御や並列実行などのベストプラクティスを含めることで、AIが安全で信頼性が高く、予測可能な出力を作成できるよう導きます。
- よくあるミスを避ける:Rustの安全性、Anchorマクロ、シリアライズを明示することで、エラーを減らせます。コードのデバッグや書き直しにかかる時間を節約できます。
- Solanaの強みを活かす: AIは帯域幅を増やし、レイテンシを低減する必要があります。これにより、Solanaの高いスループットと効率性に合わせてコードを最適化できます。
2. 明確なプロンプトを書く
AIにコード生成を依頼する場合、正確さが重要です。指示が具体的であるほど、より良い結果を得られます。次の例を比較してください。
悪いプロンプト:
「アカウントを初期化する関数を書いてください。」
このプロンプトは曖昧すぎます。AIには、プログラミング言語、フレームワーク、またはSolanaコードを求めていることが伝わりません。そのため、一般的で役に立たないコードが生成される可能性があります。
良いプロンプト:
「Anchorを使用し、Solanaトークンアカウントを初期化する関数をRustで書いてください。シードから導出したPDAを使用してください。アカウントの状態を検証し、すでに初期化されている場合はエラーを処理してください。」
良いプロンプトが効果的な理由:
明確なプロンプトは時間と労力の節約につながります。AIの目標を明確にすることで、雑で不明確なコードや目的から外れたコードが生成され、後から修正する事態を防げます。また、誤解も最小限に抑えられるため、AIをより効果的に活用できます。
- 明確で直接的です:Rust、Anchor、PDAを明示することで、AIは使用すべきツールや機能を正確に把握できます。推測したり、無関係な詳細を含めたりしません。
- Solanaの要件に焦点を当てています:PDAに言及することで、Solana固有のロジックを含めるようAIに指示できます。これがなければ、安全なアドレス導出などの重要な手順がコードから抜ける可能性があります。
- 必要な部分に深みを加えています:検証とエラー処理の指示により、AIは基本的な実装だけで終わりません。実際のシナリオで機能するコードの作成に役立ちます。
良いプロンプトは、AIを導き、落とし穴を避けながら目標に到達させる地図のようなものです。
3. 適切なコンテキストを提供する
AIは、適切なコンテキストを与えるとより効果的に機能します。多くのツールでは、コードをアップロードしたり、ファイルをリンクしたりできます。これによりAIがプロジェクトを理解し、コードベースに合った解決策を作成できます。
ただし、情報を与えすぎないでください。大規模なコードベース全体など、AIに情報を与えすぎると、ハルシネーションや無関係なレスポンスを引き起こす可能性があります。
代わりに、コードの関連部分を提供することに集中してください。AIが重要な点に集中でき、提案の品質も向上します。
たとえば、アプリにカスタムデータ構造を定義するファイルがすでにあるとします。
#[account]
pub struct TokenAccount {
pub balance: u64,
pub is_initialized: bool,
// ... more fields
}このファイルをアップロードするか入力の一部として含めると、AIは生成するコード内で実際のフィールド名(balance、is_initialized)を使用できます。
また、提案をプロジェクトの構造や規則に合わせることもできます。
コンテキストの提供が効果的な理由
- 精度が向上する:コンテキストがないと、AIがフィールド名を推測したり、不要な変更を加えたり、誤ったデータ型を想定したりする可能性があります。たとえば、balanceフィールドをamountと呼んだり、u64ではなくf64を使用したりすることがあります。実際のstructを提供すれば、このような推測を排除できます。
- コードの一貫性を維持できる:AIが命名規則を理解すると、プロジェクトに自然に適合するコードを生成できます。既存のパターンに合わせて変数名を変更したり、コードを作り直したりする手間が省けます。
- 統合作業を減らせる:AIがアカウント構造を確認できれば、それらに直接統合できるよう出力を調整できます。AIが生成したコードを既存のロジックに合わせるために大幅に書き直す事態を避けられます。
例:コンテキストを追加してAIの出力を改善する方法
適切なコンテキストがない場合、*「トークンアカウントの残高を更新する関数を書いてください」*というプロンプトから、次のようなコードが生成される可能性があります。
pub fn update_balance(ctx: Context<UpdateAccount>, amount: f64) -> Result<()> {
let account = &mut ctx.accounts.token_account;
account.amount += amount;
Ok(())
}このコードには2つの問題があります。
1つ目は、amountにu64ではなくf64を使用していることです。
Solanaでは、ネイティブの浮動小数点演算のサポートが非常に限定されています。推奨される方法は、固定小数点演算を使用し、使用する小数点以下の桁数に基づいて数値をスケーリングすることです。これにより、パフォーマンスと互換性の問題を回避できます。
2つ目は、残高フィールドをamountと呼んでおり、structと一致していないことです。これは将来的な混乱やバグにつながる可能性があります。
ここでTokenAccount structをコンテキストとして提供すると、AIは代わりに次のようなコードを生成できます。
pub fn update_balance(ctx: Context<UpdateAccount>, amount: u64) -> Result<()> {
let token_account = &mut ctx.accounts.token_account;
token_account.balance += amount;
Ok(())
}この出力は、プロジェクトにはるかによく適合しています。
ただし、この改善後も、コードの堅牢性と安全性を確保するため、token_account.balance += amount の演算にオーバーフローチェックを追加することを推奨します。
コンテキストを提供する方法
AIツールに適切なコンテキストを提供するには、次の手順を覚えておいてください。
- ファイルをアップロードする:AIツールが対応している場合は、struct定義、アカウントスキーマ、その他のプロジェクトファイルをアップロードします。
- プロンプト内でコードを参照する:関連するスニペットをコピーしてプロンプトに貼り付け、AIが参照できるようにします。
- 構造を説明する:アップロードできない場合は、プロンプト内でデータを明確に説明します。たとえば、*「balance(u64)とis_initialized(bool)というフィールドを持つTokenAccountというstructがあります。」*と記述します。
4. 既存のコードを基に構築する
毎回ゼロから始める必要はありません。すでに動作するコードがあり、改善の余地がある場合も多いでしょう。AIはその改善に役立ちます。以下に例を示します。
元のコード:
pub fn create_token_account(ctx: Context<CreateAccount>) -> Result<()> {
let token_account = &mut ctx.accounts.token_account;
token_account.balance = 0;
Ok(())
}このコードはトークンアカウントを初期化し、残高をゼロに設定します。シンプルですが、既存アカウントの更新や所有権の確認といったシナリオには対応していません。
プロンプト:
「この関数をより堅牢にしてください。トークンアカウントが存在する場合は、指定した値を残高に加算してください。存在しない場合は、指定した金額で初期化してください。また、現在のプログラムがアカウントを所有していることも確認してください。」
プロンプトからAIが生成したコード:
pub fn create_or_update_token_account(
ctx: Context<CreateAccount>,
amount: u64
) -> Result<()> {
let token_account = &mut ctx.accounts.token_account;
// Check ownership
if token_account.owner != ctx.program_id {
return err!(ProgramError::IncorrectProgramId);
}
// Update or initialize
if token_account.is_initialized {
token_account.balance += amount;
} else {
token_account.balance = amount;
token_account.is_initialized = true;
}
Ok(())
}効果的な理由
- 一般的なシナリオに対応する: 新しいコードは初期化済みと未初期化の両方のアカウントを処理するため、実際のアプリケーションでより役立ちます。
- 所有権の検証を追加する: プログラムがそのアカウントを所有しているか確認するため、不正な変更を防止できます。
- 関数をより賢くする: 毎回残高をゼロにリセットするのではなく、残高を更新できるようになります。冗長性が減り、実際のユースケースに適合します。
- 時間を節約する: 関数全体を書き直す必要はありません。AIが既存のコードを拡張するため、基本的な関数から堅牢な関数へすばやく移行できます。
このアプローチの使い方
今後このアプローチを使用する際は、次の手順を覚えておいてください。
- 動作する基盤から始める:動作はするものの、改善の余地がある関数やスニペットを特定します。
- プロンプトを具体的にする:エラーチェックの追加、エッジケースへの対応、ロジックの改善など、改善したい内容を説明します。
- AIの提案を確認する:AIが生成した出力を確認し、プロジェクトに適合していること、Solanaのベストプラクティスに従っていることを確かめます。
- 必要に応じて反復する:最初の出力が完璧でなければ、プロンプトを調整するかコードを編集して、目標に近づけます。
5. 一度に1ステップずつ反復する
コードを段階的に構築すると、ミスを防ぎ、作業を進めながら改善できます。複雑な関数を一度に作ろうとせず、より小さなタスクに分割してください。これにより、次に進む前に各部分をテストし、改善しやすくなります。
ワークフローの例
小さなところから始めましょう。シードを使ってProgram Derived Address(PDA)を計算する簡単な関数をAIに依頼します。
プロンプトの例は次のとおりです。
「Anchorを使用し、シードとプログラムIDからPDAを計算するRust関数を書いてください。」
AIの出力:
pub fn find_pda(seed: &[u8], program_id: &Pubkey) -> Pubkey {
Pubkey::create_program_address(&[seed], program_id).unwrap()
}これは良い出発点ですが、まだ完成していません。エラー処理を追加しましょう。
コードを確認し、問題を特定します。たとえば、unwrap()を使用すると、シードが無効な場合にプログラムがクラッシュする可能性があります。
AIに次のように修正を依頼します。
「無効なシードに対するエラー処理を含めるよう、この関数を更新してください。unwrapせず、Resultを返してください。」
更新後のコード:
pub fn find_pda(seed: &[u8], program_id: &Pubkey) -> Result<Pubkey, ProgramError> {
Pubkey::create_program_address(&[seed], program_id)
.map_err(|_| ProgramError::InvalidSeeds)
}これで関数はパニックを起こす代わりにエラーを返し、無効なシードを適切に処理できます。
次に、この関数を統合しましょう。
より大きなルーチンでPDA関数を使用するようAIに依頼します。たとえば、次のように指示します。
「このPDAを使って新しいトークンアカウントを作成する関数を書いてください。PDAがまだ使用されていないことを検証してください。」
AIの出力:
pub fn create_token_account(ctx: Context<CreateAccount>, seed: &[u8], amount: u64) -> Result<()> {
let program_id = ctx.program_id;
let pda = find_pda(seed, &program_id)?;
if ctx.accounts.token_account.key != pda {
return Err(ProgramError::InvalidSeeds);
}
if !ctx.accounts.token_account.is_initialized {
let token_account = &mut ctx.accounts.token_account;
token_account.balance = amount;
token_account.is_initialized = true;
}
Ok(())
}このステップでは、PDAが誤って再利用されないよう確認しながら、PDAロジックをアカウント作成に統合します。
次に、コードを最適化して仕上げましょう。以下のようなプロンプトを使い、関数をさらに改善するようAIに依頼します。
「トランザクションコストを最小限に抑え、所有権の検証を含めるよう、この関数を最適化してください。」
AIの出力:
pub fn create_token_account(ctx: Context<CreateAccount>, seed: &[u8], amount: u64) -> Result<()> {
let program_id = ctx.program_id;
let pda = find_pda(seed, &program_id)?;
if ctx.accounts.token_account.key != pda || ctx.accounts.token_account.owner != program_id {
return Err(ProgramError::IncorrectProgramId);
}
if !ctx.accounts.token_account.is_initialized {
let token_account = &mut ctx.accounts.token_account;
token_account.balance = amount;
token_account.is_initialized = true;
}
Ok(())
}最終的な関数は効率的かつ安全で、Solanaのベストプラクティスに沿ったものになりました。
このアプローチが効果的な理由
- 管理しやすい状態を保てる:一度に1つの小さなタスクへ集中することで、AIに過大な負荷をかけずに済みます。各ステップが前のステップを基に進むため、テストと改善も容易です。
- エラーを早期に発見できる:ステップを小さくすると、問題がコードの他の部分に影響する前に発見できます。たとえば、早い段階でエラー処理を追加すれば、後のクラッシュを防げます。
- 反復を促進する:完全に動作しない部分があっても、コードベース全体を作り直さずに関数を調整できます。
- より良いコードを生成できる:改善を重ねるたびにコードが堅牢になり、最終的には信頼性と保守性の高い解決策を得られます。
このアプローチの使い方
次回AIとペアプログラミングする際は、次のヒントを覚えておいてください。
- タスクを小さなステップに分割する:1つの複雑な関数を依頼するのではなく、よりシンプルで管理しやすいタスクに分け、順番に実行します。
- 各ステップの後に結果をテストする:変更するたびにコードを実行し、動作することを確認します。動作しない場合は、次のステップへ進む前に問題を修正するか、プロンプトを調整します。
- 進めながら改善する:1つの結果だけで終わらせないでください。検証、パフォーマンス改善、より適切なエラー処理などの機能追加や最適化をAIに依頼します。
まとめ
慎重かつ思慮深く取り組めば、AIを使ったSolana開発は非常に強力です。Solanaのアーキテクチャは、PDA、トランザクションの並列処理、アカウントベースの設計を採用しているため、他のブロックチェーンとは異なります。つまり、AIを正しく導く必要があります。
明確なプロンプトから始めてください。求めるものをAIに正確に伝え、Rust、Anchor、PDAなどのツールを具体的に指定します。良いプロンプトの例は次のとおりです。
「PDAを使ってSolanaトークンアカウントを初期化し、アカウントの状態を検証してエラーを処理するRust関数を書いてください。」
このように明確にすることで、AIがSolanaで動作するコードを生成できる可能性が高まります。
必ずコンテキストを提供してください。プロジェクトのコードを共有するか、アカウントスキーマやデータ型など、使用している構造を説明します。たとえば、TokenAccount structがある場合は、その詳細を含めることで、AIは出力を合わせられます。ただし、情報を与えすぎないでください。提案の正確性と有用性を保つため、関連する部分に絞ります。
タスクを小さなステップに分割してください。反復型のプロセスを使い、進めながらコードを改善します。PDAの計算のような簡単なタスクから始め、エラー処理やアカウント検証を追加していきます。各ステップの後にテストしてください。これにより、問題を早期に発見し、着実に進められます。
最後に、AIの作業を慎重に確認してください。AIが生成したコードには、オーバーフローチェックの欠落や検証の省略といった小さな問題が含まれることがよくあります。出力がSolanaのルールに従い、バグがなく、並列実行機能を活用していることを確認してください。
AIは出発点にすぎず、仕上げるのは開発者自身です。明確な指示、コンテキスト、段階的な開発、慎重なレビューを組み合わせることで、AIを使って安全かつ最適化されたSolanaプログラムを作成できます。プロセスに関与し続ければ、AIは時間を節約し、より良いコードを書くための有用なツールになります。
関連資料
AIを使ったSolana開発について詳しく知るには、以下のリソースをご覧ください。
関連記事
Heliusを購読
Solana開発の最新情報や新しい記事の公開通知を受け取れます


