ケースコンバーター

camelCase / PascalCase / snake_case / kebab-case / CONSTANT_CASE / Title Case の相互変換。

Loading…

すべての処理はブラウザ内で実行されます — ファイルや入力はサーバへ送信されません。

使い方

`userId`・`user_id`・`user-id`・`USER_ID`・`user id` のような任意の識別子を貼り付けると、9 通りのケース変換が同時に表示されます。トークナイザはまず入力を camelCase 境界(`userId` → `user`・`Id`)と明示的な区切り文字(`-` `_` `.` `/` と空白)で分割し、選んだスタイルでトークンを結合し直します。連続する大文字は 1 つのトークンとして保たれるため、`HTTPRequest` は `h`・`t`・`t`・`p`・`request` ではなく `http` + `request` になります。

言語ごとの慣例を超えるときに使ってください。Python の `snake_case` 変数を JavaScript の `camelCase` に直す、データベースの列(`snake_case`)から TypeScript の型名(`PascalCase`)を生成する、定数(`MAX_RETRIES`)を CSS 変数(`max-retries`)に変える、見出しから URL スラッグを作るといった用途です。処理はブラウザ内で行われ、トークナイザが正規表現 1 パスのみのため、長い識別子リストでも即時に処理されます。

言語慣例をまたぐ変換

入力
user_profile_image_url
出力
camelCase:     userProfileImageUrl
PascalCase:    UserProfileImageUrl
snake_case:    user_profile_image_url
kebab-case:    user-profile-image-url
CONSTANT_CASE: USER_PROFILE_IMAGE_URL
Title Case:    User Profile Image Url

Python の `snake_case` フィールド名は JavaScript の `camelCase`(`userProfileImageUrl`)、CSS 変数の `kebab-case`(`--user-profile-image-url`)、TypeScript の型 `PascalCase`(`UserProfileImageUrl`)へ素直にマッピングできます。Title Case は URL の慣例(`Url` ではなく `URL`)を失います。略語の扱いについては次の例を見てください。

頭字語の取り扱い

入力
HTTPRequestHandler
出力
camelCase:     httpRequestHandler
PascalCase:    HttpRequestHandler
snake_case:    http_request_handler
kebab-case:    http-request-handler

連続する大文字は 1 つのトークンとして扱われるため、`HTTPRequestHandler` は文字単位ではなく `http`・`request`・`handler` にトークン化されます。出力は略語を小文字にフラット化します(Java / TypeScript の慣例)。スタイルガイドが略語の保持(Go の `HTTPRequestHandler` 形式)を求める場合、本ツールはその形を生成しません。Go は略語をすべて大文字にする `MixedCaps` スタイルを推奨しますが、構文要件ではなくコミュニティの好みです。

文章を URL スラッグに

入力
Why your AWS bill suddenly spikes
出力
kebab-case: why-your-aws-bill-suddenly-spikes
snake_case: why_your_aws_bill_suddenly_spikes

kebab-case は URL パス、CSS クラス、npm パッケージ名、シェルコマンド名など、ケース感度が信頼できない箇所の慣例です。URL スラッグでは句読点を除去し小文字にすることも必要で、本ツールはケースのみ扱います。完全なスラッグ規則(句読点除去・アクセント除去・最大長)が必要なら URL Slug ツールを使ってください。

よくある質問

トークナイザはどのように単語の境界を判定していますか?

ルールは 2 つです。第一に、明示的な区切り文字(`-`・`_`・`.`・`/`・空白)はトークンを終わらせます。第二に、ケースの遷移が境界を示します。小文字や数字に大文字が続くケース(`userId` → `user|Id`)、または大文字の連続のあとに「大文字 + 小文字」が来るケース(`HTTPRequest` → `HTTP|Request`)です。両方を合わせると一般的な識別子スタイルが網羅されます。非 ASCII 文字はケース遷移しないため、識別子内の日本語や韓国語は単一のトークンとして残ります。

どの言語でどのケースを選べばよいですか?

慣例はおおむね固まっています。**JavaScript / TypeScript**: 変数・関数は camelCase、型・コンポーネントは PascalCase、定数は UPPER_SNAKE。**Python**: 変数・関数は snake_case、クラスは PascalCase、定数は UPPER_SNAKE。**Rust**: 変数・関数は snake_case、型・トレイトは PascalCase、定数は UPPER_SNAKE。**Go**: エクスポートする名前は `MixedCaps`、しないものは `mixedCaps`(camelCase)、アンダースコアは使いません。**CSS / HTML 属性**: kebab-case。**SQL / PostgreSQL**: テーブル・列は snake_case。**シェルスクリプト**: ファイル名は小文字または kebab-case、環境変数は UPPER。

略語が小文字化されてしまいます(`URL` → `Url`)。維持できますか?

本ツールではできません。すべてのケースは結合前にトークンを小文字化します。略語の保持は「このトークンは略語か?」というトークン単位の判断が必要で、入力ではなくコンテキストに依存します。Go のスタイルガイドが `HTTPRequest` を要求する場合は、ソースコードでその形を手書きするか、エディタのコマンドを使ってください。Java / TypeScript のように `HttpRequest` が好まれる場合は、本ツールの出力がすでに一致しています。

`apiV2` のように数字を含む識別子はどうなりますか?

`apiV2` は `api`・`v2` にトークン化されます。小文字 `i` と大文字 `V` の遷移が境界になるためです。数字 `2` は `v` トークンに付いたまま残るので、`snake_case` の結果は `api_v_2` ではなく `api_v2` になります。数字を独立したトークンにしたい場合(`api_v_2`)は、貼り付け前に明示的な区切り文字を挿入してください(`apiV-2`)。

日本語・韓国語・中国語の文字も扱えますか?

CJK 文字にはケース遷移が存在しないため、1 つのトークンとしてそのまま通り抜けます。`사용자ID` は `사용자`・`id` にトークン化されます(韓国語部分が 1 トークン、ラテン略語はケース規則で切り離されます)。スクリプトが混在する識別子では実用上問題なく動きます。純粋な CJK 入力に対しては snake / kebab 以外のケースは結合文字が `_` か `-` かの違いだけで見た目はほとんど同じになります。

複数の識別子を一度に変換できますか?

本ツールは入力を 1 つの識別子として扱います。複数行を貼り付けると、改行が区切り文字として働き、1 つの巨大なトークン列になります。SQL テーブルの全列名を camelCase に揃えるような実バッチには、`awk` や sed コマンドにパイプするか、エディタのマルチカーソル選択を使ってください。ウェブツールは 1 識別子ずつ高速に処理するために作られています。

関連する概念

識別子のケーススタイルは、プログラミング言語が名前の中で使えないことが多いスペース無しで、単語の境界を表現する方法です。5 つの形式が主流です。**camelCase** は最初の単語を小文字にし、残りを大文字始まりにします — JavaScript、Java、C# のメソッドなど。**PascalCase** はすべての単語を大文字始まりにします — ほとんどの言語の型名、.NET のメソッド、React のコンポーネントなど。**snake_case** は小文字とアンダースコアで結合します — Python、Ruby、Rust、SQL の列など。**kebab-case** は同じことをハイフンで行います — CSS、URL、シェルコマンドなど。**CONSTANT_CASE**(または SCREAMING_SNAKE)はすべて大文字でアンダースコア結合します — グローバル定数、環境変数、プリプロセッサマクロなど。

選択はほぼ完全に文化的で、技術的なものではありません。言語は構文的に複数のスタイルを許容し、コミュニティのスタイルガイドに従います — Python の PEP 8、Effective Go、Rust API Guidelines、Airbnb JavaScript Style Guide など。周辺エコシステムに合うスタイルを選ぶことで、コードが grep しやすくなり、IDE の自動補完が効きやすくなり、コードレビューはロジックに集中できます。プロジェクト内でスタイルが混在することが実際の誤りで、スタイルの選択そのものよりも一貫させることのほうが重要です。

気付かないうちにチームをつまずかせるエッジケースが 2 つあります。**略語** はコミュニティで意見が分かれます。Java / TypeScript は `HttpRequest`、Go は `HTTPRequest`、Microsoft の .NET は長さによって両方使い分けます(`HtmlParser` だが `IO`)。どちらを採用しても、レビュアーが毎週ぶり返さないよう規則を明文化してください。**データベース列 ↔ アプリケーションプロパティ** のマッピングが第二のホットスポットです — PostgreSQL の `user_profile_image_url` は TypeScript モデルの `userProfileImageUrl` になり、決定論的なケース変換層が必要です。Prisma・SQLAlchemy・TypeORM のような ORM はこれをスキーマ定義に組み込みます。手で行う場面で本ツールが効きます。

関連ツール