---
title: "Solanaでミームコインを作る方法:ステップバイステップガイド"
description: "ローンチパッドを使う方法と自作する方法で、Solanaのミームコインを作る方法を解説します。"
---

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

<ImageBlock
  src="https://media.alchemy.com/1766155069-memecoins-on-solana.png"
  alt="Solanaのミームコインガイド用の猫をテーマにしたミームコインイラスト"
  width={3840}
  height={1800}
  priority
/>

Solanaを初めて触る場合、meme通貨は手を動かして学ぶにはリスクの低い方法です。このジャンルは騒がしく混沌としていますが、その活動の中でtoken mint、metadata、ウォレット、RPCといった実際の構成要素を扱うことになります。そして、その作業の結果はすぐに目に見えます。meme通貨を作ることは、Solanaのアプリが実際にどう動いているかを理解するためのシンプルな道筋です。

このチュートリアルでは、Solana上でmeme通貨を作る実践的な2つの方法を紹介します。

1. **ノーコードの[launchpad](https://www.alchemy.com/dapps/best/crypto-launchpads)**\(最速でローンチする方法\)
1. **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](https://solana.com/docs/tokens/basics)
- [Token-2022](https://www.solana-program.com/docs/token-2022) / Token Extensions \(metadata拡張、transfer fee、その他の制御など、組み込み機能が欲しい場合\)

ほとんどのmeme通貨では、ウォレットや取引所との互換性を最大化するには、レガシーなSPL tokenが依然として最も安全なデフォルトです。

## 選択肢A: meme通貨launchpadでローンチする\(ノーコード\)

「できるだけ早くtokenを稼働させて取引可能にしたい」というのが目的であれば、サードパーティのlaunchpadがミントと初期取引のUXを代わりに行ってくれます。この選択肢では、複数のlaunchpadから選べます。

### Pump.fun

<ImageBlock
  src="https://media.alchemy.com/1766156582-pump.png"
  alt="Pumpのトークン作成ポータルのスクリーンショット"
  width={2188}
  height={1658}
/>

[Pump.fun](https://pump.fun/)の売りは基本的に「流動性を用意せずに即座に取引可能なtokenをローンチできる」ことです。Pump.funでの典型的なフローは次のようになります。

- tokenの名前、ティッカー、画像を選ぶ
- 作成手数料を支払う
- プラットフォームの仕組みに従ってtokenの取引が始まる

### Raydium LaunchLab

<ImageBlock
  src="https://media.alchemy.com/1766156642-raydium.png"
  alt="Raydiumのトークンポータルのスクリーンショット"
  width={2188}
  height={1540}
/>

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

### Bonk.fun

<ImageBlock
  src="https://media.alchemy.com/1766156657-bonk.png"
  alt="BONKのウェブサイトのスクリーンショット"
  width={3406}
  height={1228}
/>

[BONK.fun](https://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](https://developers.metaplex.com/smart-contracts/token-metadata)を通じて付与されます。

このチュートリアルでは、以下を使って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を作成している」だけではありません。ウォレットやエクスプローラーがそれをどう解釈すればよいか分かるよう、連携して機能する一連のオンチェーンアカウントを作成しています。

1. **Mintアカウント**\(SPL Token mint\): これはtokenを定義するコアなオンチェーンアカウントです。Solana上で「token address」と言うとき、通常はこのmintアカウントを指しています。これは[Solana Explorer](https://www.alchemy.com/dapps/list-of/block-explorers-on-solana)に貼り付けるアドレスです。このアカウントには以下のような情報が保存されます。

1. Decimals: tokenがどれだけ分割可能か\(例えば8 decimalsなら、1.0 tokenは100,000,000 base unitsになります\)。
1. Mint authority: 追加のsupplyをミントできるkey。
1. Freeze authority\(任意\): tokenアカウントをフリーズできるkey。
1. **Metadataアカウント**\(Metaplex Token Metadata PDA\): SPL Token program自体は、名前、シンボル、画像を保存しません。その情報は、Metaplex Token Metadata programによって作成される別のmetadataアカウントに存在します。このアカウントはProgram Derived Address\(PDA\)であり、mintアドレスから決定論的に導出されます。つまり、ウォレットはレジストリやデータベースを必要とせず、mintからmetadataアドレスを導出し、存在を確認して、存在すれば読み取ることができます。これが、Phantomのようなウォレットがtoken metadataを自動的に発見・表示できる仕組みです。
1. **オフチェーンmetadata**\(URI → JSON\): metadataアカウントはすべての詳細を直接保存しているわけではありません。代わりに、オフチェーン\(一般的にはIPFS\)にホストされたJSONファイルを指すURIを保存します。そのJSONは標準的なスキーマ\(name、symbol、description、image\)に従っており、エクスプローラーやウォレットはそれをどう取得・表示すればよいか分かるようになっています。これにより、オンチェーンデータを小さく保ちながら、豊富なtoken情報を扱うことができます。

この背景を踏まえると、以下のコードの意味がより理解しやすくなるはずです。mintを作成し、metadataアカウントをそれに紐づけ、そのmetadataをウォレットが読み取れるJSONファイルに向けています。

それでは、meme通貨を作っていきましょう。

## ステップ1: プロジェクトのセットアップ\(TypeScript + 依存関係\)

まず、新しいプロジェクトディレクトリを作成し、Node.jsプロジェクトを初期化します。これにより、クリーンな作業環境と、依存関係を管理するためのpackage.jsonファイルが得られます。

<CodeSnippet language="bash" code={`mkdir CATY
cd CATY

npm init -y
npm i -D typescript ts-node @types/node
npx tsc --init`} />

- `npm init -y`はデフォルト設定で基本的なNodeプロジェクトを作成します。
- typescriptを使うと型付きJavaScriptを書けるようになり、SolanaやMetaplexのSDKを扱う際に役立ちます。
- `ts-node`を使うと、別途ビルドステップを挟まずにTypeScriptファイルを直接実行できます。
- `npx tsc --init`は、TypeScriptのコンパイル方法を制御するtsconfig.jsonを生成します。

次に、後で使う2つのオプションを有効にするため、`tsconfig.json`を更新します。

<CodeSnippet
  language="json"
  code={`{
  "compilerOptions": {
    "esModuleInterop": true,
    "resolveJsonModule": true
  }
}`}
/>
- `esModuleInterop`により、一般的なNodeパッケージでモダンなimport構文を使えるようになります。- `resolveJsonModule`を使うと.jsonファイルを直接importできるようになり、これは設定やmetadataを扱う際に便利です。

次に、Solanaおよび Metaplexとやり取りするために必要なライブラリをインストールします。

<CodeSnippet
  language="bash"
  code={`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ファイルから安全に読み込めます。

最後に、このチュートリアルを通じて使用するファイルを作成します。

<CodeSnippet
  language="bash"
  code={`touch mint.ts token.json .env .gitignore`}
/>
- `mint.ts`には、tokenを作成しミントするスクリプトが含まれます。- `token.json`にはオフチェーンのmetadata\(名前、シンボル、画像\)を保持します。- `.env`はRPC URLやprivate keyといった機密情報を保存します。- `.gitignore`は、シークレットがバージョン管理にコミットされないようにします。

`.gitignore`に以下を追加しましょう。

<CodeSnippet
  language="javascript"
  code={`node_modules
.env`}
/>
これにより、依存関係とprivate keyが誤ってGitにコミットされるのを防げます。

## ステップ2: .envにAlchemy RPCとPhantomのprivate keyを追加する

### Alchemy RPC

<ImageBlock
  src="https://media.alchemy.com/1766156725-alchemy_rpc.png"
  alt="Alchemyのダッシュボードのスクリーンショット"
  width={746}
  height={914}
/>

Alchemyは、devnetおよびmainnet向けに高速で信頼性の高いSolana RPCエンドポイントを提供しています。テスト中はdevnetを使ってください。エンドポイントにアクセスするには、\(無料の!\)API keyが必要です。必要なのは[ダッシュボードにアクセスして](https://dashboard.alchemy.com/)、ダッシュボード内で新しいSolanaアプリを立ち上げることだけです。Node APIとWebhooksの両サービスをオンにし、devnetを有効にしてください。そこから、API keyまたはエンドポイントURLを.envファイルにコピー&ペーストするだけです。

### Phantomのprivate keyのエクスポート

Phantomの公式ヘルプ[docs](https://help.phantom.com/hc/en-us/articles/25334064171795-How-to-view-your-recovery-phrase-or-private-key-in-Phantom)には、private keyを閲覧・コピーする正確な手順が示されています。大まかには、Settingsに移動し、「Manage Accounts」、「Show Private Key」、「Choose network」の順に進み、continueをクリックするだけです。

そこまで進んだら、.envを設定できます。

<CodeSnippet
  language="json"
  code={`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](https://pinata.cloud/)を使用しています。仕組みとしては、アップロードしたファイルにCID\(content identifier\)が付与され、gateway URLを通じてそれを取得します。gatewayと取得方法については[Pinataのdocs](https://docs.pinata.cloud/quickstart)を参照してください。

実際の作業としては、まずtoken.jsonを作成します。

<CodeSnippet
  language="json"
  code={`{
  "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に入れる。

<CodeSnippet
  language="json"
  code={`TOKEN_METADATA_URI=https://gateway.pinata.cloud/ipfs/<YOUR_TOKEN_JSON_CID>`}
/>
自分の画像やmetadataを使っても、下記のサンプル画像を使っても構いません。

<ImageBlock
  src="https://media.alchemy.com/1766156740-cat.webp"
  alt="帽子をかぶった猫、ミームコインのトークンメタデータのサンプル画像"
  width={2613}
  height={3000}
/>

## ステップ4: ウォレットにDevnet SOLを入金する

ミントおよびアカウントの作成には\(devnetであっても\)SOLがかかります。幸い、devnet SOLは無料です。入手するには、Solana公式の[devnet faucet](https://faucet.solana.com/)を使ってテスト用SOLを取得できます。

<ImageBlock
  src="https://media.alchemy.com/1766156769-solana.png"
  alt="Solanaフォーセットのスクリーンショット"
  width={2608}
  height={1456}
/>

## ステップ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`にコピー&ペーストしてください。

<CodeSnippet language="typescript" code={`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リンクが含まれます。

<CodeSnippet language="bash" code={`npx ts-node mint.ts`} />
すべてがうまくいけば、これでSolana上に自分のmeme通貨tokenをミントできたことになります。

<ImageBlock
  src="https://media.alchemy.com/1766156798-mint_success.png"
  alt="ミント成功時のレスポンスのスクリーンショット"
  width={1288}
  height={154}
/>

## ステップ6: Solanaエクスプローラーでmintを確認する

スクリプトが出力したMint addressをコピーし、[Solana Explorer](https://explorer.solana.com/?cluster=devnet)に貼り付けてください。devnetになっていることを確認してください。

🎉 これで、初期供給量1,000,000固定で、metadataも紐づいた自分のtoken\(あなたの「CATY」\)をミントできました。

<ImageBlock
  src="https://media.alchemy.com/1766156815-explorer.png"
  alt="ミームコインを表示するSolana Explorerのスクリーンショット"
  width={2552}
  height={1364}
/>

## まとめ

以上で、Solana上でmeme通貨をローンチする2つの方法を見てきました。最速のルートを望むなら、pump.fun、[Raydium](https://www.alchemy.com/dapps/raydium) LaunchLab、BONK.funといったlaunchpadがセットアップのほとんどを代わりに行ってくれます。完全な制御を望むなら、自分でSPL tokenをミントすることで、Solana tokenが実際にどう動いているかをより深く理解できます。

いずれにせよ、これで好きなだけmeme通貨を立ち上げる準備が整いました。さらに学びたい場合は、Solana RPC、ウォレット、本番運用に耐えるツールについてより深く掘り下げた[AlchemyのSolana docs](https://www.alchemy.com/docs/solana)や開発者向けガイドを確認し、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](https://www.alchemy.com/dapps/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](https://www.alchemy.com/overviews/solana-devnet)を使用できます。実験中のtransactionコストをカバーするため、Solana公式のdevnet faucetから無料のdevnet SOLを取得できます。
