PlanetScaleの使い方完全ガイド|基本操作から実践まで初心者向けに解説

kento_morota 14分で読めます

「データベースのスキーマ変更のたびにサービスを停止するのが怖い」「本番環境でのDB運用をもっと安全にしたい」――PlanetScaleは、Gitのようなブランチ機能でこうした課題を解決するサーバーレスデータベースサービスです。

本記事では、PlanetScaleのアカウント作成から基本操作、スキーマ変更のワークフローまで、初心者でも安心して始められるよう実践的に解説します。

PlanetScaleとは?基本的な特徴を理解しよう

PlanetScaleは、MySQLベースのサーバーレスデータベースサービスです。最大の特徴は、サービスを停止せずにスキーマ変更ができる点にあります。

従来、データベースのスキーマ変更は開発者にとって緊張を伴う作業でした。本番環境でテーブル構造を変更する際、サービス停止やユーザーへの影響が避けられなかったためです。PlanetScaleは「ノンブロッキングスキーマ変更」という仕組みでこの課題を解決しています。

また、Gitのようなブランチ機能を備えており、開発環境と本番環境を明確に分けた運用が可能です。YouTubeを支える技術として知られるVitessをベースに構築されており、高いスケーラビリティと信頼性を実現しています。

ただし、2024年4月に無料プランが廃止され、最低でも月額$29からの有料プランが必要になりました。本記事では、PlanetScaleの使い方を基礎から実践まで解説します。

他のデータベースサービスとの違い

PlanetScaleの最大の差別化要素は、開発フローそのものがデータベースに組み込まれている点です。主な特徴は以下の通りです。

技術的特徴:
- サーバーレスアーキテクチャ: インフラ管理不要、自動スケーリング対応
- ノンブロッキングスキーマ変更: ダウンタイムなしでテーブル構造を変更
- ブランチ機能: 開発環境を分岐・マージできる
- 自動バックアップ: データ保護が標準装備
- グローバル対応: 世界中のリージョンから選択可能

AWS RDSやGoogle Cloud SQLなどの従来型マネージドサービスでは、スキーマ変更時のダウンタイムや複雑な移行作業が必要です。PlanetScaleでは、新しいスキーマをブランチで開発・テストしてから本番環境にデプロイできるため、アプリケーションコードと同じような運用が可能になります。

料金プランと導入の判断基準

2024年4月の料金改定により、無料プランが廃止されました。現在の料金体系は以下の通りです。

プラン 月額料金 主な用途
Scaler $29〜 小規模ビジネス向け
Scaler Pro $39〜 高パフォーマンス要求
Enterprise 要相談 大規模運用、SLA保証

料金はストレージ容量読み取り/書き込み回数で変動します。小規模Webアプリケーションなら月額$29〜50程度で運用可能です。

導入が効果的な場面:

  1. 頻繁なスキーマ変更が必要: 新規サービスの立ち上げ期や継続的な改善を行うプロダクト
  2. 小規模チームでの開発: 専任データベースエンジニアがいない中小企業
  3. グローバル展開を見据えたサービス: 複数リージョンへの展開が必要
  4. SaaS型ビジネス: 顧客管理や予約システムなど機能追加が継続的に発生

導入に向かないケース:
- 複雑な外部キー制約が必須のシステム
- PostgreSQL特有の機能が必要な場合
- コスト最優先で無料サービスを探している場合

月額$29のコストは、専任エンジニアの人件費やデータベース障害によるビジネス損失と比較すれば、十分に検討価値のある投資と言えます。

アカウント作成から初期設定まで

PlanetScaleの導入は簡単です。アカウント作成から最初のデータベース立ち上げまでの手順を解説します。

アカウント登録手順

GitHubアカウントでの登録をおすすめします。CLI認証がスムーズに行えるためです。

登録の流れ:

  1. PlanetScale公式サイトにアクセスし「Sign up」をクリック
  2. 「Continue with GitHub」を選択(推奨)
  3. GitHubで認証を許可
  4. 組織名を設定(個人利用なら自分の名前、会社なら会社名)
  5. 利用目的を選択(アンケート形式)
  6. プラン選択(14日間のトライアル期間あり)

登録完了後、ダッシュボード画面が表示されます。

最初のデータベースを作成する

作成手順:

  1. ダッシュボードの「Create a database」をクリック
  2. データベース名を入力(英数字とハイフン、後から変更不可)
  3. リージョンを選択(日本なら「AWS ap-northeast-1 (Tokyo)」推奨)
  4. 「Create database」をクリック

数秒で作成が完了し、自動的に「main」という本番用ブランチが作成されます。

作成時の重要ポイント:
- データベース名は慎重に: 変更できないため、プロジェクト名やサービス名を反映
- リージョンは近い場所を: レイテンシに直結するため、主なユーザーに近い場所を選択

Web UIの基本的な見方

PlanetScaleのWeb UIは直感的に操作できます。主要な画面を理解しておきましょう。

主要セクション:

  • Overview: 稼働状況、ストレージ使用量、クエリ数などを表示
  • Branches: ブランチ一覧と新規作成
  • Console: ブラウザ上でSQLクエリを実行
  • Settings: データベースの各種設定
  • Deploy requests: スキーマ変更の申請と管理

よく使う操作は、ブランチ作成、SQL実行、接続情報の確認です。複雑なコマンドを覚える必要はありません。

最低限必要なセキュリティ設定

データベースは企業の重要資産です。以下の設定を必ず行いましょう。

必須設定:

  1. パスワード管理: 自動生成されたパスワードを使用し、環境変数で管理
  2. 削除保護: Settings → 「Safe migrations」を有効化
  3. アクセス権限: チームメンバーには必要最小限の権限のみ付与
  4. 二段階認証: GitHubアカウントで二段階認証を設定
  5. 定期的な監査: アクセスログを確認し、不審なアクセスをチェック

セキュリティは設定して終わりではなく、定期的な見直しが重要です。

PlanetScale CLIのセットアップと活用

より効率的な作業やCI/CD環境での利用には、CLI(コマンドラインインターフェース)が欠かせません。

CLIのインストール

各OS環境に対応したインストール方法を紹介します。

macOS:

brew install planetscale/tap/pscale
pscale version  # バージョン確認

Windows:

scoop bucket add pscale https://github.com/planetscale/scoop-bucket.git
scoop install pscale

Linux(Ubuntu/Debian):

curl -fsSL https://raw.githubusercontent.com/planetscale/cli/main/install.sh | sh

認証とデータベース接続

認証手順:

# ログイン
pscale auth login

# 認証確認
pscale org list

# データベースに接続
pscale shell <データベース名> <ブランチ名>

ブラウザで認証画面が開くので、「Confirm code」をクリックして認証を完了します。

基本的なCLIコマンド

日常的に使用する主要コマンドを紹介します。

データベース管理:

pscale database list  # 一覧表示
pscale database create <DB名> --region <リージョン>  # 作成

ブランチ管理:

pscale branch list <DB名>  # 一覧表示
pscale branch create <DB名> <ブランチ名>  # 作成
pscale branch delete <DB名> <ブランチ名>  # 削除

デプロイ操作:

pscale deploy-request create <DB名> <ブランチ名>  # リクエスト作成
pscale deploy-request list <DB名>  # 一覧表示
pscale deploy-request deploy <DB名> <番号>  # デプロイ実行

Web UIとCLIの使い分け

それぞれの得意な場面を理解し、効率的に使い分けましょう。

Web UIが向いている場面:
- 初めての操作や視覚的な確認
- スキーマ変更の差分確認
- パフォーマンス監視
- チームメンバーとの画面共有

CLIが向いている場面:
- 日常的なデータベース操作
- スクリプトでの自動化
- 複数ブランチの頻繁な作成
- ローカル開発環境での作業

両方の特性を理解して、状況に応じた「ちょうどいい」使い方を見つけましょう。

ブランチを使った開発フロー

PlanetScaleの最大の特徴であるブランチ機能を活用した、安全な開発フローを学びます。

ブランチベース開発の考え方

PlanetScaleはGitのようなブランチ機能を備えています。この機能により、データベースもコードと同じように管理できます。

基本概念:
- mainブランチ: 本番環境(保護されている)
- 開発ブランチ: 新機能やスキーマ変更を試す環境(自由に変更可能)

推奨される開発フロー:

  1. mainブランチから開発ブランチを作成
  2. 開発ブランチでスキーマ変更を実施
  3. テストとデータ投入で動作確認
  4. デプロイリクエストを作成
  5. 差分をレビューして承認
  6. 本番環境にノンブロッキングでデプロイ

この流れは、アプリケーション開発のGitフローと同じです。

実務での活用例:
- feature/user-profile: 新しいテーブル追加
- fix/column-type: カラムの型修正
- improve/add-index: インデックス追加

ブランチ名は変更内容がわかりやすいものにすると、後から振り返りやすくなります。

テーブル作成とスキーマ設計

実際にテーブルを作成してみましょう。顧客管理システムを例に解説します。

開発ブランチの作成:

pscale branch create my-first-db dev-customer-table
pscale shell my-first-db dev-customer-table

テーブル作成:

CREATE TABLE customers (
  id BIGINT NOT NULL AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(255) NOT NULL,
  phone VARCHAR(20),
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY (email)
);

PlanetScaleでのスキーマ設計の注意点:

  1. 外部キー制約は使えない: Vitessベースのため、アプリケーション側でデータ整合性を保つ
  2. 主キーは必須: すべてのテーブルに主キーを設定
  3. インデックスは慎重に: 検索パフォーマンスに直結するため、適切に設計

データ操作とデプロイ

開発ブランチでテストデータを投入し、動作確認を行います。

データ投入:

INSERT INTO customers (name, email, phone) 
VALUES ('山田太郎', 'yamada@example.com', '090-1234-5678');

デプロイリクエストの作成:

pscale deploy-request create my-first-db dev-customer-table

Web UIで差分を確認し、問題なければ承認してデプロイします。変更はノンブロッキングで本番環境に反映されるため、サービスを停止する必要はありません。

アプリケーションとの接続

実際のアプリケーションからPlanetScaleに接続する方法を解説します。

接続文字列の取得

Web UIの「Connect」ボタンから接続情報を取得できます。環境変数として設定することを推奨します。

接続文字列の例:

DATABASE_URL="mysql://user:pass@host.psdb.cloud/database?sslaccept=strict"

主要フレームワークとの連携

Next.jsでの接続例:

import mysql from 'mysql2/promise';

const connection = await mysql.createConnection(process.env.DATABASE_URL);
const [rows] = await connection.execute('SELECT * FROM customers');

Prismaを使った接続:

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
  relationMode = "prisma"  // 外部キー制約の代替
}

接続エラーの確認ポイント:
- 接続文字列が正しいか
- SSL設定が有効か
- IPアドレス制限がかかっていないか
- ブランチが正しく指定されているか

運用時のポイントと注意点

PlanetScaleを本番環境で運用する際の重要なポイントを解説します。

モニタリングとパフォーマンス管理

Web UIのOverviewで以下の指標を定期的に確認しましょう。

  • クエリ実行時間: 遅いクエリがないか
  • ストレージ使用量: 容量の増加傾向
  • 接続数: 同時接続数の推移

パフォーマンス低下が見られたら、インデックスの追加やクエリの最適化を検討します。

バックアップとデータ保護

PlanetScaleは自動バックアップ機能を標準装備しています。

  • 自動バックアップ: 毎日実行される
  • ポイントインタイムリカバリ: 過去の任意の時点に復元可能(プランによる)
  • ブランチでの保護: 重要な変更前にブランチを作成

料金最適化のTips

コストを抑えるための運用方法を紹介します。

  1. 不要なブランチの削除: 使わなくなった開発ブランチは削除
  2. クエリの最適化: N+1問題の解消、適切なインデックス設計
  3. ストレージの定期清掃: 不要なデータの削除
  4. 接続プーリング: アプリケーション側で接続を効率的に管理

代替サービスとの比較

無料プラン廃止後、代替サービスを検討する動きも見られます。

主な代替サービス:
- Neon: PostgreSQL互換、無料枠が充実
- Supabase: バックエンド機能も含む統合サービス
- AWS RDS: 従来型マネージドサービス

重要なのは、無料であることよりもビジネスに適したサービスを選ぶことです。月数千円のコストで運用負担が大幅に軽減されるなら、それは十分に価値のある投資と言えます。

まとめ

本記事では、PlanetScaleの使い方を基礎から実践まで解説しました。

重要なポイント:
- ノンブロッキングスキーマ変更により、サービスを停止せずにデータベースを進化させられる
- Gitのようなブランチ機能で、安全な開発フローを実現
- 専任のデータベース管理者がいなくても運用可能
- 月額$29からのコストは、運用負担軽減の価値と比較して検討

次のステップ:
1. トライアル期間を活用して実際に触ってみる
2. 小規模なプロジェクトで導入を試す
3. チーム内でブランチベースの開発フローを確立
4. 本番運用に向けたセキュリティとモニタリング体制を整備

PlanetScaleは、中小企業が「ちょうどいい」データベース環境を手に入れるための有力な選択肢です。まずは14日間のトライアルで、その使い心地を確かめてみましょう。

#PlanetScale#使い方
共有:

ちょっとした業務の悩みも、気軽にご相談ください。

まずは話だけ聞いてもらう