Solanaでミームコインを作る方法:ステップバイステップガイド
著者: Uttam Singh

Solanaを初めて触る場合、meme通貨は手を動かして学ぶにはリスクの低い方法です。このジャンルは騒がしく混沌としていますが、その活動の中でtoken mint、metadata、ウォレット、RPCといった実際の構成要素を扱うことになります。そして、その作業の結果はすぐに目に見えます。meme通貨を作ることは、Solanaのアプリが実際にどう動いているかを理解するためのシンプルな道筋です。
このチュートリアルでは、Solana上でmeme通貨を作る実践的な2つの方法を紹介します。
- ノーコードのlaunchpad(最速でローンチする方法)
- SolanaのSPLツールを使ったDIYでのミント(完全な制御を求める開発者向け)
Solanaにおけるmeme通貨とは
Solana上のmeme通貨は、通常は名前、シンボル、画像、ローンチ計画を持つ標準的なSPL fungible tokenにすぎません。技術的に特別なところは何もなく、同じSPL tokenの仕組みはウォレット、DeFiアプリ、本格的なコンシューマープロジェクトでも使われています。
meme通貨を特徴づけているのは、それが_どう_使われるかです。Solanaの低い手数料と高速なトランザクションによってtokenのミント、頻繁な取引、ローンチの実験が容易になっており、これが活発な時期にネットワーク上のtoken作成・取引活動の大きな割合をmeme通貨が占める理由です。
開発者にとっては、この活発さこそが重要な点です。meme通貨は、フルアプリケーションを構築する前に、Solanaのコアプリミティブ(SPL token、metadata、ウォレット、ローンチフロー)をシンプルかつ低リスクで学べる手段です。
Solana上で実際に作っているもの
Solanaのtokenにはmintアカウント(tokenの識別子)があり、ユーザーはtokenアカウント(多くの場合「Associated Token Account」、ATA)に残高を保持します。
以下のいずれかを選ぶことになります。
- SPL Token program
- Token-2022 / Token Extensions (metadata拡張、transfer fee、その他の制御など、組み込み機能が欲しい場合)
ほとんどのmeme通貨では、ウォレットや取引所との互換性を最大化するには、レガシーなSPL tokenが依然として最も安全なデフォルトです。
選択肢A: meme通貨launchpadでローンチする(ノーコード)
「できるだけ早くtokenを稼働させて取引可能にしたい」というのが目的であれば、サードパーティのlaunchpadがミントと初期取引のUXを代わりに行ってくれます。この選択肢では、複数のlaunchpadから選べます。
Pump.fun

Pump.funの売りは基本的に「流動性を用意せずに即座に取引可能なtokenをローンチできる」ことです。Pump.funでの典型的なフローは次のようになります。
- tokenの名前、ティッカー、画像を選ぶ
- 作成手数料を支払う
- プラットフォームの仕組みに従ってtokenの取引が始まる
Raydium LaunchLab

Raydium LaunchLabにも同様のtoken作成フローがあります(名前、ティッカー、画像、SNSを追加するだけです)。token作成・ローンチには2つの異なるモードが用意されています。シンプルなJustSendItモードと、フルカスタマイズ可能なAdvanced Modeです。Advanced Modeはtokenのパラメータを完全に制御できるため、特定のtokenomicsやより複雑な構成が必要なプロジェクトに向いています。
Bonk.fun

BONK.funは、2025年に大きな注目を集めたもう一つのSolana meme通貨launchpadです。このプラットフォームは、コミュニティ主導のインセンティブと透明性を提供することで、大きな市場シェアを獲得しています。
選択肢B: SPLツールを使って自分でtokenを作る
これらのlaunchpadを使わずに、meme通貨を完全に自分で作ることもできます。そのためには、以下のステップを踏むことになります。
Solana SPL tokenの作成
SPL tokenをミントした後、ウォレット上で「Unknown token」と表示された(あるいはアイコンが表示されない)ことがあるなら、その理由はここにあります。SPL mint単体には、豊富なmetadataは含まれていません。
Solanaでは、fungible tokenはSPL Token programで作成され、名前、シンボル、画像、JSON URIといった「見た目」に関わるフィールドは、一般的にMetaplex Token Metadata programを通じて付与されます。
このチュートリアルでは、以下を使ってfungibleなSPL tokenをミントします。
- [Umi](https://developers.metaplex.com/dev-tools/umi/metaplex-umi-plugins)\(Metaplexのモダンなクライアントフレームワーク\): トランザクションの構築・署名・送信に使用
- mpl-token-metadataヘルパー: mintとmetadataの作成を1つのフローで行う
- [Alchemy Solana RPC](https://www.alchemy.com/solana): ネットワーク接続として使用
- 既存の[Phantomウォレット](https://www.alchemy.com/dapps/phantom)のprivate key(新しいkeypairの生成は不要)
オンチェーンで実際に行っていること
ミントスクリプトを実行するとき、単に「tokenを作成している」だけではありません。ウォレットやエクスプローラーがそれをどう解釈すればよいか分かるよう、連携して機能する一連のオンチェーンアカウントを作成しています。
-
Mintアカウント(SPL Token mint): これはtokenを定義するコアなオンチェーンアカウントです。Solana上で「token address」と言うとき、通常はこのmintアカウントを指しています。これはSolana Explorerに貼り付けるアドレスです。このアカウントには以下のような情報が保存されます。
-
Decimals: tokenがどれだけ分割可能か(例えば8 decimalsなら、1.0 tokenは100,000,000 base unitsになります)。
-
Mint authority: 追加のsupplyをミントできるkey。
-
Freeze authority(任意): tokenアカウントをフリーズできるkey。
-
Metadataアカウント(Metaplex Token Metadata PDA): SPL Token program自体は、名前、シンボル、画像を保存しません。その情報は、Metaplex Token Metadata programによって作成される別のmetadataアカウントに存在します。このアカウントはProgram Derived Address(PDA)であり、mintアドレスから決定論的に導出されます。つまり、ウォレットはレジストリやデータベースを必要とせず、mintからmetadataアドレスを導出し、存在を確認して、存在すれば読み取ることができます。これが、Phantomのようなウォレットがtoken metadataを自動的に発見・表示できる仕組みです。
-
オフチェーンmetadata(URI → JSON): metadataアカウントはすべての詳細を直接保存しているわけではありません。代わりに、オフチェーン(一般的にはIPFS)にホストされたJSONファイルを指すURIを保存します。そのJSONは標準的なスキーマ(name、symbol、description、image)に従っており、エクスプローラーやウォレットはそれをどう取得・表示すればよいか分かるようになっています。これにより、オンチェーンデータを小さく保ちながら、豊富なtoken情報を扱うことができます。
この背景を踏まえると、以下のコードの意味がより理解しやすくなるはずです。mintを作成し、metadataアカウントをそれに紐づけ、そのmetadataをウォレットが読み取れるJSONファイルに向けています。
それでは、meme通貨を作っていきましょう。
ステップ1: プロジェクトのセットアップ(TypeScript + 依存関係)
まず、新しいプロジェクトディレクトリを作成し、Node.jsプロジェクトを初期化します。これにより、クリーンな作業環境と、依存関係を管理するためのpackage.jsonファイルが得られます。
mkdir CATY
cd CATY
npm init -y
npm i -D typescript ts-node @types/node
npx tsc --initnpm init -yはデフォルト設定で基本的なNodeプロジェクトを作成します。- typescriptを使うと型付きJavaScriptを書けるようになり、SolanaやMetaplexのSDKを扱う際に役立ちます。
ts-nodeを使うと、別途ビルドステップを挟まずにTypeScriptファイルを直接実行できます。npx tsc --initは、TypeScriptのコンパイル方法を制御するtsconfig.jsonを生成します。
次に、後で使う2つのオプションを有効にするため、tsconfig.jsonを更新します。
{
"compilerOptions": {
"esModuleInterop": true,
"resolveJsonModule": true
}
}esModuleInteropにより、一般的なNodeパッケージでモダンなimport構文を使えるようになります。-resolveJsonModuleを使うと.jsonファイルを直接importできるようになり、これは設定やmetadataを扱う際に便利です。
次に、Solanaおよび Metaplexとやり取りするために必要なライブラリをインストールします。
npm i @solana/web3.js@1 \\
@metaplex-foundation/umi \\
@metaplex-foundation/umi-bundle-defaults \\
@metaplex-foundation/mpl-token-metadata \\
bs58 dotenv各パッケージの用途は以下の通りです。
@solana/web3.jsは、Solanaネットワークとやり取りするためのコアなJavaScript SDKです。umiは、トランザクションの構築・署名・送信を行うためのMetaplexのクライアントフレームワークです。umi-bundle-defaultsは(RPCの処理など)一般的なデフォルトを提供するため、すべてを手動で配線する必要がなくなります。mpl-token-metadataには、token metadataの作成・付与のためのヘルパーが含まれています。bs58は、Phantomのbase58エンコードされたprivate keyをデコードするために使用されます。dotenvを使うと、シークレット(RPC URL、private key)を.envファイルから安全に読み込めます。
最後に、このチュートリアルを通じて使用するファイルを作成します。
touch mint.ts token.json .env .gitignoremint.tsには、tokenを作成しミントするスクリプトが含まれます。-token.jsonにはオフチェーンのmetadata(名前、シンボル、画像)を保持します。-.envはRPC URLやprivate keyといった機密情報を保存します。-.gitignoreは、シークレットがバージョン管理にコミットされないようにします。
.gitignoreに以下を追加しましょう。
node_modules
.envこれにより、依存関係とprivate keyが誤ってGitにコミットされるのを防げます。
ステップ2: .envにAlchemy RPCとPhantomのprivate keyを追加する
Alchemy RPC

Alchemyは、devnetおよびmainnet向けに高速で信頼性の高いSolana RPCエンドポイントを提供しています。テスト中はdevnetを使ってください。エンドポイントにアクセスするには、(無料の!)API keyが必要です。必要なのはダッシュボードにアクセスして、ダッシュボード内で新しいSolanaアプリを立ち上げることだけです。Node APIとWebhooksの両サービスをオンにし、devnetを有効にしてください。そこから、API keyまたはエンドポイントURLを.envファイルにコピー&ペーストするだけです。
Phantomのprivate keyのエクスポート
Phantomの公式ヘルプdocsには、private keyを閲覧・コピーする正確な手順が示されています。大まかには、Settingsに移動し、「Manage Accounts」、「Show Private Key」、「Choose network」の順に進み、continueをクリックするだけです。
そこまで進んだら、.envを設定できます。
SOLANA_RPC_URL=https://solana-devnet.g.alchemy.com/v2/YOUR_ALCHEMY_KEY
PHANTOM_PRIVATE_KEY_BASE58=PASTE_FROM_PHANTOM
TOKEN_METADATA_URI=セキュリティに関する注意: これは「スクリプト内のホットウォレット」というパターンです。devnetでの実験には問題ありませんが、mainnetでは専用のウォレットを使い、無関係なプロジェクトにkeyを貼り付けることは避けるべきです。
ステップ3: 画像とmetadataをIPFS(Pinata)にアップロードする
コンピュータ上にtoken.jsonファイルがあるだけでは不十分です。Solanaのプログラムはローカルファイルシステムからファイルを読み取ることができず、大きなmetadataをオンチェーンに直接保存するとコストが高くなります。代わりに、Token Metadata programは、オフチェーン(一般的にはIPFS)にホストされた、公開アクセス可能なJSONファイルを指すURIを保存します。ウォレットやエクスプローラーはそのURIを使ってJSONを取得し、tokenの名前、シンボル、画像を表示します。
このためにはどのIPFSでも使用できます。このチュートリアルではPinataを使用しています。仕組みとしては、アップロードしたファイルにCID(content identifier)が付与され、gateway URLを通じてそれを取得します。gatewayと取得方法についてはPinataのdocsを参照してください。
実際の作業としては、まずtoken.jsonを作成します。
{
"name": "Cat with Hat",
"symbol": "CATY",
"description": "My Cat with Hat",
"image": "https://YOUR_GATEWAY/ipfs/YOUR_IMAGE_CID"
}作業の流れは次のようになります。
- 画像をアップロード → gateway URLをコピーする。
- そのURLをtoken.json.imageに貼り付ける
- 更新したtoken.jsonをアップロード → JSON用のgateway URLをコピーする。
- そのJSON URLを.envに入れる。
TOKEN_METADATA_URI=https://gateway.pinata.cloud/ipfs/<YOUR_TOKEN_JSON_CID>自分の画像やmetadataを使っても、下記のサンプル画像を使っても構いません。

ステップ4: ウォレットにDevnet SOLを入金する
ミントおよびアカウントの作成には(devnetであっても)SOLがかかります。幸い、devnet SOLは無料です。入手するには、Solana公式のdevnet faucetを使ってテスト用SOLを取得できます。

ステップ5: Alchemy RPC経由でtokenをミントする(umi + token metadata)
以下が、いくつかの重要な詳細を組み込んだ完全なmint.tsスクリプトです。
- Phantomのbase58 private keyをSolanaのKeypairに変換します(Phantomのエクスポートは64バイトの場合もあれば、32バイト形式のものもあります)。
- UmiにあなたのAlchemy RPC URLを使うよう指示します。Umiのdocsによれば、createUmi(...)に渡すエンドポイントがRPC呼び出しに使われるエンドポイントです。
- トランザクションの署名を正しく(base58で)出力するため、エクスプローラーのリンクが機能します。
これをmint.tsにコピー&ペーストしてください。
import "dotenv/config";
import bs58 from "bs58";
import { Keypair } from "@solana/web3.js";
import {
mplTokenMetadata,
createAndMint,
TokenStandard,
} from "@metaplex-foundation/mpl-token-metadata";
import {
createSignerFromKeypair,
generateSigner,
percentAmount,
signerIdentity,
} from "@metaplex-foundation/umi";
import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
const rpcUrl = process.env.SOLANA_RPC_URL!;
const pk58 = process.env.PHANTOM_PRIVATE_KEY_BASE58!;
if (!rpcUrl) throw new Error("Missing SOLANA_RPC_URL");
if (!pk58) throw new Error("Missing PHANTOM_PRIVATE_KEY_BASE58");
// Umi uses this RPC endpoint for all subsequent RPC calls. [oai_citation:13‡developers.metaplex.com]
const umi = createUmi(rpcUrl);
// 1) Phantom base58 private key -> Solana Keypair.
// Phantom commonly exports a 64-byte secretKey; some tools export 32 bytes.
const raw = bs58.decode(pk58);
const solanaKeypair =
raw.length === 64 ? Keypair.fromSecretKey(raw)
: raw.length === 32 ? Keypair.fromSeed(raw)
: (() => { throw new Error(`Unexpected key length: ${raw.length}`); })();
// 2) Solana Keypair -> Umi signer + identity.
const umiKeypair = umi.eddsa.createKeypairFromSecretKey(solanaKeypair.secretKey);
const signer = createSignerFromKeypair(umi, umiKeypair);
umi.use(signerIdentity(signer));
// 3) Add Token Metadata program helpers.
// Token Metadata attaches data to fungible and non-fungible mints. [oai_citation:14‡GitHub]
umi.use(mplTokenMetadata());
// --- token config ---
const NAME = "Cat with Hat";
const SYMBOL = "CATY";
const METADATA_URI = process.env.TOKEN_METADATA_URI!;
const decimals = 8;
const supplyTokens = 1_000_000n;
const amountBaseUnits = supplyTokens * 10n ** BigInt(decimals);
if (!METADATA_URI) throw new Error("Missing TOKEN_METADATA_URI");
(async () => {
// generateSigner creates a new keypair for the mint account.
// Your Phantom wallet pays fees and becomes the authority by default.
const mint = generateSigner(umi);
const res = await createAndMint(umi, {
mint,
authority: umi.identity,
name: NAME,
symbol: SYMBOL,
uri: METADATA_URI,
sellerFeeBasisPoints: percentAmount(0),
decimals,
amount: amountBaseUnits,
tokenOwner: umi.identity.publicKey,
tokenStandard: TokenStandard.Fungible,
}).sendAndConfirm(umi);
// Umi returns signatures as bytes; Explorer expects base58.
const sigBase58 =
typeof res.signature === "string" ? res.signature : bs58.encode(res.signature);
console.log("Mint address:", mint.publicKey.toString());
console.log("Tx:", `https://explorer.solana.com/tx/${sigBase58}?cluster=devnet`);
})();スクリプトを実行しましょう。スクリプトが正常に完了すると、meme通貨tokenがミントされます。出力にはmint addressと、オンチェーンで確認できるtransactionリンクが含まれます。
npx ts-node mint.tsすべてがうまくいけば、これでSolana上に自分のmeme通貨tokenをミントできたことになります。

ステップ6: Solanaエクスプローラーでmintを確認する
スクリプトが出力したMint addressをコピーし、Solana Explorerに貼り付けてください。devnetになっていることを確認してください。
🎉 これで、初期供給量1,000,000固定で、metadataも紐づいた自分のtoken(あなたの「CATY」)をミントできました。

まとめ
以上で、Solana上でmeme通貨をローンチする2つの方法を見てきました。最速のルートを望むなら、pump.fun、Raydium LaunchLab、BONK.funといったlaunchpadがセットアップのほとんどを代わりに行ってくれます。完全な制御を望むなら、自分でSPL tokenをミントすることで、Solana tokenが実際にどう動いているかをより深く理解できます。
いずれにせよ、これで好きなだけmeme通貨を立ち上げる準備が整いました。さらに学びたい場合は、Solana RPC、ウォレット、本番運用に耐えるツールについてより深く掘り下げたAlchemyのSolana docsや開発者向けガイドを確認し、Solanaアプリの構築、SPL tokenの扱い、実際のオンチェーントラフィックの処理に関するチュートリアルも参照してください。
よくある質問
Solanaにおけるmeme通貨とは何ですか?
Solana上のmeme通貨は、名前、シンボル、画像、ローンチ計画を持つ標準的なSPL fungible tokenです。技術的に特別なところは何もなく、同じSPL tokenの仕組みはウォレット、DeFiアプリ、本格的なコンシューマープロジェクトでも使われています。
Solanaでmeme通貨を作る主な2つの方法は何ですか?
Pump.fun、Raydium LaunchLab、BONK.funといったノーコードのlaunchpadを使えば最速でローンチでき、SolanaのSPLツールを使って自分でtokenをミントすれば、プロセス全体を完全に制御できます。
meme通貨を作るにはどのウォレットが必要ですか?
Phantom、Backpack、SolflareのようなSolana対応ウォレットに、transaction手数料をカバーするための少額のSOLを入金しておく必要があります。
Solanaでmeme通貨を作るのにどれくらい費用がかかりますか?
Solana上でのtoken作成は非常に低コストで、devnetまたはmainnetでの基本的なtokenミントとアカウント作成の手数料は、通常SOL換算で1ドル未満です。
SPL TokenとToken-2022の違いは何ですか?
SPL Tokenはレガシーなtoken programであり、ウォレットや取引所との互換性を最大化する最も安全なデフォルトです。Token-2022(Token Extensions)はmetadata拡張やtransfer feeといった組み込み機能を提供しますが、普遍的なサポートはやや劣る場合があります。
meme通貨にmetadataを追加する必要はありますか?
はい。metadata(名前、シンボル、画像、description)はMetaplex Token Metadata programを通じて保存され、通常はオフチェーンでIPFSにホストされます。これにより、ウォレットやエクスプローラーは「Unknown token」と表示する代わりに、あなたのtoken情報を表示できます。
Umiとは何で、なぜtokenのミントに使われるのですか?
Umiは、Solana上でトランザクションを構築・署名・送信するためのMetaplexのモダンなクライアントフレームワークです。tokenの作成とmetadataの付与を1つのフローで行うプロセスを簡略化します。
meme通貨をミントすると、どのようなアカウントが作成されますか?
mintアカウント(decimalsやauthorityを保存する、tokenのコアな識別子)、metadataアカウント(名前、シンボル、URIを保存するPDA)、そしてオフチェーンmetadata(詳細なtoken情報を含むIPFS上のJSONファイル)が作成されます。
mainnetでローンチする前にtoken作成をテストできますか?
はい。テストにはSolana devnetを使用できます。実験中のtransactionコストをカバーするため、Solana公式のdevnet faucetから無料のdevnet SOLを取得できます。
Alchemy Newsletter
リリース情報をいち早く受け取る
ニュースレターに登録する
Alchemyの最新のプロダクト情報とリソースをお届けします
メールアドレスを入力すると、当社のマーケティング情報およびプロダクト最新情報の受信に同意したことになります。Alchemyが受け取った情報をプライバシー通知に従って取り扱うことに同意するものとします。購読はいつでも解除できます。
関連記事

自分のワークフローに合わせてRPCプロバイダーをベンチマークする方法
RPCプロバイダーは、負荷下のレイテンシー、ブロックラグ、データ整合性をそれぞれ分けて測定し、アプリが呼び出すメソッドで、アプリが動く場所からベンチマークする。

Solana Alpenglow: Solana史上最大のコンセンサス改修
Alpenglowが10月21日にSolanaメインネットで稼働開始。何が起こるのか、Alchemyの準備、そして内部で何が変わるのかを解説する。

Solana gRPCのパフォーマンス:公開ベンチマーク手法
Solana gRPCの配信レイテンシを6つのリージョンでどう測定しているか。p50、p90、p99の結果、テスト構成の全容、再現に使う正確なコマンドを掲載します。