Solana Agent Kit は、TypeScript だけで AI を統合したアプリケーションを Solana 上に構築できる開発ツールキットです。Rust の知識は不要で、EVM 開発者が Solana に参入する際に直面する課題を解決します。
このツールの最大の特長は、「UX の洗練(AI や SNS との統合)」と「主要 Solana プロトコルとの統合」がワンツールで完結する点です。SNS 連携、AI エージェント構築、トークン・NFT・DeFi 操作など、ほぼすべての機能を TypeScript から直接呼び出すことができます。
なぜ Solana なのか?
近年、Solana を選ぶエンジニア・ビルダーが増えています。その理由として、以下のような背景があります。
- ビジネスフィールドとして最も成功したチェーン
- 強固なユーザー基盤と成熟したエコシステム
- ビルダーや Founder を大切にする文化(Superteam という仕組みの成功)
- EVM に比べて手数料・UX・速度で優位性がある
Solana Agent Kit の利点
EVM 開発者が Solana に参入する際には、以下のようなステップが必要です。
- EVM と Solana の技術的な違いを理解する
- Solana の主要エコシステムを把握する: Solana はビジネスライクに一つのエコシステムを構築する志向であり、既存エコシステムとの連携性を重視するため。自律分散的な発展を志向する Ethereum エコシステムと対照的
- ハッカソンに参加して、勝つ: Solana におけるハッカソンは他のチェーンと異なり特別な位置付けとなっており、ビジネスコンテストに近く、実業に直結する
- 優れた機能を優れた UX で提供する: Solana 上のプロダクト は技術的なコンセプトだけではなく UX が重視されるため
これらすべてに対して、Solana Agent Kit は非常に強力なサポートを提供します。
- TypeScript のみで開発可能なため、Rust 未経験者でも安心
- Solana Agent Kit の機能を通じて Solana エコシステムの理解につながる
- SNS や AI との UX 統合が簡単に実装でき、Twitter や Vercel AI SDK との連携が容易
- 主要プロトコル(DeFi・NFT・Token・Bridge など)の操作が API レベルで標準化されている
- 「DeFAI」や「AI Agent x Web3」は Solana ハッカソンで勝ちやすいテーマの一つ(トレンドなだけでなく、レバレッジが効く事業ドメイン)
実装例
Solana Agent Kit では、以下のようなユースケースをわずかなコードで実現できます。
- SPL トークンの作成・送金
- Jupiter を用いたスワップ・LP 作成
- Wormhole によるクロスチェーントランスファー
- pump.fun でのミームトークン展開
- Solana Name Service でのドメイン移転
Code Sample: Setup
// setup.ts
import { SolanaAgentKit } from 'solana-agent-kit';
import dotenv from 'dotenv';
dotenv.config();
// 環境変数から秘密鍵とRPC URLを取得
const privateKey = process.env.SOLANA_PRIVATE_KEY!;
const rpcUrl = process.env.RPC_URL || 'https://api.mainnet-beta.solana.com';
// Solana Agent Kitのインスタンスを作成
const agent = new SolanaAgentKit(privateKey, rpcUrl);
export default agent;
Code Sample: SPL Token 作成
// 新しいSPLトークンの作成
const createToken = async () => {
const result = await agent.deployToken(
'My First Token', // 名前
'https://example.com/metadata.json', // メタデータURI
'MFT', // シンボル
9, // 小数点以下の桁数
{}, // 追加オプション
1000000 // 初期供給量(10^6 トークン)
);
console.log('トークンミントアドレス:', result.mint.toString());
return result.mint;
};
// トークンの送金
const transferToken = async (tokenMint, recipient, amount) => {
const signature = await agent.transferToken(
new PublicKey(recipient),
amount,
new PublicKey(tokenMint)
);
console.log('送金トランザクション:', signature);
return signature;
};
Code Sample: Jupiter
// トークンスワップ
const swapTokens = async (inputToken, outputToken, amount) => {
const signature = await agent.trade(
new PublicKey(outputToken), // 出力トークン
amount, // スワップ量
new PublicKey(inputToken), // 入力トークン
300 // 3%のスリッページ
);
console.log('スワップトランザクション:', signature);
return signature;
};
// Raydiumでのリクイディティプール作成
const createPool = async (tokenAMint, tokenBMint) => {
const pool = await agent.createRaydiumPool(
new PublicKey(tokenAMint),
new PublicKey(tokenBMint),
100, // 初期リクイディティトークンA
100 // 初期リクイディティトークンB
);
console.log('プールアドレス:', pool);
return pool;
};
Code Sample: Wormhole
// サポートされているチェーンの取得
const getSupportedChains = async () => {
const chains = await agent.getWormholeSupportedChains();
console.log('サポートされているチェーン:', chains);
return chains;
};
// Wormholeを使ったトークン移動
const transferTokenCrossChain = async () => {
const transfer = await agent.tokenTransfer({
destinationChain: 'Base Sepolia', // 送金先チェーン
tokenAddress: '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU', // トークンアドレス
network: 'Testnet', // ネットワークタイプ
});
console.log('クロスチェーン転送結果:', transfer);
return transfer;
};
Code Sample: Pump.fun
// Pump.funでトークンを立ち上げる例
const launchToken = async () => {
// Pump.funトークンオプションの設定
const tokenOptions = {
twitter: 'yourTwitterHandle', // オプション: Twitterハンドル
telegram: 'yourTelegramGroup', // オプション: Telegramグループ
website: 'https://yourwebsite.com', // オプション: ウェブサイトURL
initialLiquiditySOL: 1.5, // オプション: 初期流動性(SOL)
slippageBps: 100, // オプション: スリッページ(ベーシスポイント)
priorityFee: 100000, // オプション: 優先手数料(ラムポート)
};
const result = await agent.deployPumpFunToken(
'MyToken', // トークン名
'MTK', // トークンシンボル
9, // 小数点以下の桁数
1000000, // 総供給量
tokenOptions // 追加オプション
);
console.log('Pump.funでのトークン立ち上げ成功:');
console.log('- トランザクション署名:', result.signature);
console.log('- トークンミントアドレス:', result.mint);
return result;
};
Code Sample: SNS(Solana Name Service)
Code Sample: SNS(Solana Name Service)
// SNSドメインの所有権を転送する例
const transferDomain = async (domain, newOwner) => {
try {
const result = await agent.transferSNSOwnership(
`${domain}.sol`,
new PublicKey(newOwner)
);
console.log("SNSドメイン所有権転送成功:");
console.log("- ドメイン名:", `${domain}.sol`);
console.log("- 新しい所有者:", newOwner);
console.log("- トランザクション署名:", result);
return result;
} catch (error) {
console.error("SNSドメイン所有権転送エラー:", error);
throw error;
}
};
SendAI Japan
また、2025 年 2 月には SendAI 公式組織「SendAI Japan」も発足し、技術記事の執筆や OSS 貢献、開発合宿なども積極的に展開しています。
Solana 開発への第一歩として、Solana Agent Kit をぜひ活用してみてください。