テキストケース変換

テキストを大文字・小文字・Title Case・camelCase・snake_case などに変換

サンプルを試す

入力

出力

ローカルで実行 · シークレットの貼り付けも安全
変換結果がここに表示されます…

テキストケース変換とは?

テキストケース変換とは、文字列の大文字・小文字のパターンや単語の区切り方を変換するプロセスです。ケース変換ツールは「hello world」のような入力を受け取り、UPPERCASE、lowercase、Title Case、camelCase、snake_case、kebab-case などのフォーマットに変換します。単純な ASCII テキストの変換は容易ですが、頭字語("XMLParser")、ロケール固有のルール(トルコ語のドット付き I)、複数スクリプトが混在する文字列ではエッジケースが発生します。

プログラミング言語、ファイルシステム、スタイルガイドはそれぞれ独自の命名規則を定めています。JavaScript の変数には通常 camelCase を使用します。Python の関数と変数は PEP 8 に従い snake_case を使用します。CSS クラス名には kebab-case を使用します。データベースのカラム名はチームによって異なりますが、PostgreSQL や MySQL では snake_case が主流です。数十ファイルにわたるリネーム作業でこれらの規則を手動で切り替えると、時間がかかり間違いも起きやすくなります。

ケースの規則はコード以外でも重要です。Title Case は Chicago Manual of Style や APA などのスタイルガイドで定義されたルールに従い、冠詞や短い前置詞は文頭でない限り小文字のままにします。Sentence case は最初の単語と固有名詞のみを大文字にします。アメリカ英語の出版物では見出しに Title Case を使用するのが標準ですが、ヨーロッパや技術ドキュメントでは Sentence case が一般的です。

このケース変換ツールを使う理由

テキストを貼り付けるだけで、9 種類のケースフォーマットに即時変換できます。VS Code 拡張機能のインストールも、スクリプトの作成も不要です。

即時変換
ケースフォーマットを選択すると、すぐに結果が表示されます。サーバーへの通信も待ち時間もありません。フォーマット間を切り替えて出力を並べて比較できます。
🔒
プライバシー優先の処理
すべての変換は JavaScript を使ってブラウザ内で実行されます。テキストはデバイス上に留まり、サーバーに送信されることも、どこかに保存されることもありません。
🔄
1 つのツールで 9 種類のフォーマット
UPPERCASE、lowercase、Title Case、Sentence case、camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE。1 つの入力ですべての主要な規則に対応します。
🌍
アカウント不要
ページを開いてすぐに変換を開始できます。サインアップ、ブラウザ拡張機能、デスクトップインストールは一切不要。モダンブラウザがあればどのデバイスでも動作します。

ケース変換ツールの使用例

フロントエンド開発
API レスポンスの snake_case プロパティ名を JavaScript オブジェクト用の camelCase に変換します。BEM やユーティリティファーストの命名体系に移行する際に、CSS クラス名を camelCase から kebab-case にリネームします。
バックエンド API 設計
データベースカラム(snake_case)を JSON レスポンスキー(camelCase)にマッピングする際にフィールド名を変換します。シリアライゼーションレイヤーが期待通りの出力フォーマットを生成しているかを確認します。
DevOps とインフラ
説明的なフレーズから CONSTANT_CASE の環境変数名を生成します。チームのスタイルガイドに合わせる際に、Terraform リソース名を snake_case と kebab-case の間で変換します。
QA とテスト自動化
正しいケースのフィールド名を持つテストフィクスチャデータを準備します。API コントラクトとクライアントの期待値の間にあるケースの不一致を、本番環境に届く前に発見します。
データエンジニアリング
CSV や Excel ファイルをデータベースにインポートする際にカラムヘッダーを正規化します。「First Name」のような混在ケースのヘッダーを、一貫したスキーマ設計のために「first_name」のような snake_case カラムに変換します。
技術ライティングとドキュメント
ドキュメント内のコード参照を正しいケースでフォーマットします。技術仕様の一貫性を保つために、平易な英語の説明を PascalCase クラス名や kebab-case URL スラッグに変換します。

ケース規則リファレンス

各命名規則には、大文字化と単語の区切りに関する固有のルールがあります。以下の表はこのツールが対応する 9 種類のフォーマットを示しており、入力フレーズ「the quick brown fox」を参照例として使用しています。

ケースルール
UPPERCASEEvery letter capitalizedTHE QUICK BROWN FOX
lowercaseEvery letter lowercasedthe quick brown fox
Title CaseFirst letter of each word capitalizedThe Quick Brown Fox
Sentence caseFirst letter of each sentence capitalizedThe quick brown fox
camelCaseNo separators, first word lowercasetheQuickBrownFox
PascalCaseNo separators, every word capitalizedTheQuickBrownFox
snake_caseWords joined by underscores, all lowercasethe_quick_brown_fox
kebab-caseWords joined by hyphens, all lowercasethe-quick-brown-fox
CONSTANT_CASEWords joined by underscores, all uppercaseTHE_QUICK_BROWN_FOX

camelCase vs snake_case vs kebab-case

この 3 つの規則はソフトウェア開発で最も広く使われていますが、それぞれ異なるエコシステムに属しています。誤った規則を選ぶと、リンターが壊れ、API コントラクトに違反し、コードベースに一貫性がなくなります。

camelCase
JavaScript と TypeScript の変数、関数名、オブジェクトキーの標準です。Java と C# もローカル変数とメソッドパラメーターに使用します。JavaScript クライアント向けに構築された JSON API は通常 camelCase キーを使用します。最初の単語は小文字で、それ以降の単語は大文字で始まります。
snake_case
Python(PEP 8)、Ruby、Rust、ほとんどの SQL データベースのデフォルトです。C 標準ライブラリの関数もこのパターンに従います。単語はアンダースコアで区切られ、すべて小文字です。CONSTANT_CASE(すべて大文字とアンダースコア)は定数と環境変数に使用されるバリアントです。
kebab-case
CSS クラス名、HTML 属性、URL スラッグ、CLI フラグ名(--output-dir)の標準です。Lisp や Clojure でも一般的です。単語はハイフンで区切られ、すべて小文字です。ほとんどのプログラミング言語では識別子にハイフンを使用できないため、kebab-case は文字列、ファイル名、マークアップに限定されます。

コード例

ケース規則をプログラムで変換する方法を示します。各例では最も一般的な変換(camelCase から snake_case、snake_case から camelCase、基本的な大文字・小文字・タイトルケースの変換)を取り上げています。

JavaScript
// camelCase → snake_case
function toSnakeCase(str) {
  return str
    .replace(/([a-z])([A-Z])/g, '$1_$2')
    .replace(/[\s-]+/g, '_')
    .toLowerCase()
}
toSnakeCase('myVariableName')  // → "my_variable_name"
toSnakeCase('kebab-case-str')  // → "kebab_case_str"

// snake_case → camelCase
function toCamelCase(str) {
  return str
    .toLowerCase()
    .replace(/[_-](\w)/g, (_, c) => c.toUpperCase())
}
toCamelCase('my_variable_name')  // → "myVariableName"

// Title Case
function toTitleCase(str) {
  return str.replace(/\w\S*/g, w =>
    w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()
  )
}
toTitleCase('the quick brown fox')  // → "The Quick Brown Fox"
Python
import re

text = "the quick brown fox"

# UPPERCASE / lowercase
text.upper()  # → "THE QUICK BROWN FOX"
text.lower()  # → "the quick brown fox"

# Title Case
text.title()  # → "The Quick Brown Fox"

# camelCase
def to_camel(s):
    words = re.split(r'[\s_-]+', s)
    return words[0].lower() + ''.join(w.capitalize() for w in words[1:])

to_camel("my_variable_name")  # → "myVariableName"

# snake_case from camelCase
def to_snake(s):
    return re.sub(r'([a-z])([A-Z])', r'\1_\2', s).lower()

to_snake("myVariableName")  # → "my_variable_name"

# kebab-case
def to_kebab(s):
    return re.sub(r'([a-z])([A-Z])', r'\1-\2', s).replace('_', '-').lower()

to_kebab("myVariableName")  # → "my-variable-name"
Go
package main

import (
	"fmt"
	"regexp"
	"strings"
)

// camelCase → snake_case
func toSnake(s string) string {
	re := regexp.MustCompile("([a-z])([A-Z])")
	snake := re.ReplaceAllString(s, "${1}_${2}")
	return strings.ToLower(snake)
}

// snake_case → camelCase
func toCamel(s string) string {
	parts := strings.Split(strings.ToLower(s), "_")
	for i := 1; i < len(parts); i++ {
		parts[i] = strings.Title(parts[i])
	}
	return strings.Join(parts, "")
}

func main() {
	fmt.Println(toSnake("myVariableName"))  // → my_variable_name
	fmt.Println(toCamel("my_variable_name")) // → myVariableName
	fmt.Println(strings.ToUpper("hello"))    // → HELLO
	fmt.Println(strings.ToUpper("hello world")) // → HELLO WORLD
}
CLI (bash / sed)
# UPPERCASE
echo "hello world" | tr '[:lower:]' '[:upper:]'
# → HELLO WORLD

# lowercase
echo "HELLO WORLD" | tr '[:upper:]' '[:lower:]'
# → hello world

# camelCase → snake_case (using sed)
echo "myVariableName" | sed 's/\([a-z]\)\([A-Z]\)/\1_\2/g' | tr '[:upper:]' '[:lower:]'
# → my_variable_name

# snake_case → kebab-case
echo "my_variable_name" | tr '_' '-'
# → my-variable-name

よくある質問

camelCase と PascalCase の違いは何ですか?
camelCase は小文字で始まり(myVariable)、PascalCase は大文字で始まります(MyVariable)。JavaScript では camelCase を変数と関数に使用し、PascalCase をクラス名と React コンポーネント名に使用します。C# では public メソッドとプロパティに PascalCase を使用します。構造上の違いは最初の文字だけです。
JavaScript で camelCase を snake_case に変換するには?
正規表現を使って各大文字の前にアンダースコアを挿入し、結果を小文字にします: str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()。これは標準的な camelCase を処理します。"XMLParser" のような連続した大文字を含む文字列には、大文字の連続を正しく分割するための追加の正規表現パスが必要です。
Python は camelCase ではなく snake_case を使用するのはなぜですか?
Python の公式スタイルガイドである PEP 8 は 2001 年に公開され、Guido van Rossum とコアチームが視認性の観点から関数と変数に snake_case を選択しました。Binkley ら(2009)の研究では、特定の読解タスクにおいて snake_case 識別子の方が camelCase よりもプログラマーに速く認識されることが示されています。この規則は flake8 や pylint などのリンターによって強制されています。
Title Case はすべての単語を大文字にすることと同じですか?
単純な Title Case はすべての単語の最初の文字を大文字にします。このツールが行うのもこの処理です。AP、Chicago、APA スタイルに基づく正式な Title Case には追加ルールがあります。冠詞(a, an, the)、短い接続詞(and, but, or)、短い前置詞(in, on, at)は、文頭または文末でない限り小文字のままにします。正式なタイトルケースには辞書検索が必要で、単純な文字レベルの変換では対応できません。
このツールは Unicode と非ラテン文字に対応していますか?
このツールは JavaScript 組み込みの toUpperCase() と toLowerCase() メソッドを使用しており、これらは Unicode 標準(第 3 章、セクション 3.13)で定義された Unicode のケース規則に従います。アクセント付き文字(e から E)、ドイツ語のエスツェット(ss から SS)、ギリシャ文字も正しく処理されます。ただし、トルコ語のケース規則(小文字の i はドット付きの İ に大文字化すべきで I ではない)などのロケール固有のルールは、ツールの設定ではなくブラウザのロケール設定に依存します。
CONSTANT_CASE はどのような用途に使われますか?
CONSTANT_CASE(SCREAMING_SNAKE_CASE とも呼ばれる)は定数と環境変数に使用されます。JavaScript では const MAX_RETRIES = 3、Python では MAX_RETRIES = 3(Python には真の定数がないため慣習として)、シェルスクリプトでは export DATABASE_URL=... のように使用します。すべて大文字のスタイルは、初期化後に値を再代入すべきでないことを示します。
プロジェクトに適切なケース規則を選ぶには?
使用する言語とフレームワークの主流の規則に従いましょう。JavaScript/TypeScript: 変数には camelCase、クラスとコンポーネントには PascalCase。Python: 関数と変数には snake_case、クラスには PascalCase。CSS: kebab-case。SQL: カラムとテーブルには snake_case。REST API の JSON キー: フロントエンドの言語に合わせる(JS クライアントには camelCase、Python クライアントには snake_case)。迷ったらプロジェクトルートのリンター設定か .editorconfig を確認してください。