ケース変換ツール

テキストをcamelCase・snake_caseなどに一括変換

camelCase
上にテキストを入力すると、すべてのケースが即座に表示されます。
PascalCase
上にテキストを入力すると、すべてのケースが即座に表示されます。
snake_case
上にテキストを入力すると、すべてのケースが即座に表示されます。
kebab-case
上にテキストを入力すると、すべてのケースが即座に表示されます。
CONSTANT_CASE
上にテキストを入力すると、すべてのケースが即座に表示されます。
Title Case
上にテキストを入力すると、すべてのケースが即座に表示されます。
Sentence case
上にテキストを入力すると、すべてのケースが即座に表示されます。
lower case
上にテキストを入力すると、すべてのケースが即座に表示されます。
UPPER CASE
上にテキストを入力すると、すべてのケースが即座に表示されます。

ケース変換ツールについて

このツールは入力をまず「単語」に分け、それを9種類の表記に組み立て直します。分割のルールは3つです。小文字や数字の次に大文字が来たら区切る(fooBar → foo Bar)、大文字の連続の後に「大文字+小文字」が来たらその前で区切る(XMLHttp → XML Http)、英数字以外(空白、_、-、.など)はすべて区切りとみなす。結果がおかしいときは、ほぼこの段階で想定外の区切り方をしています。

どの表記が「正しい」かは言語とチームのルール次第です。同じXML HTTP requestでも、Python、Java、Go、C#の公式ガイドが勧める名前はそれぞれ違います。

言語ごとの公式ガイド

識別子の表記(camelCase、PascalCase)では、このツールはJava方式と同じく頭字語も先頭だけ大文字にします。PEP 8やGoの規則に合わせる場合は、変換後に頭字語の部分を手で大文字に戻してください。文章の表記(Title Case、Sentence case)では、2文字以上の大文字だけの単語(XML、JSON、MP3)を頭字語とみなしてそのまま残します。ただし入力全体が大文字(HELLO WORLD、MAX_RETRY)のときは区別できないため、普通の単語として変換します。

  • Python(PEP 8):関数・変数はsnake_case、クラスはCapWords、定数はUPPER_CASE。頭字語は大文字を保ち、HTTPServerErrorがHttpServerErrorより良いとしています。
  • Java(Google Java Style Guide):頭字語も普通の単語として先頭だけ大文字。XmlHttpRequest(○)/XMLHTTPRequest(×)、newCustomerId(○)/newCustomerID(×)。
  • Go(Code Review Comments):頭字語は大小をそろえ、URLかurlでありUrlは不可。ServeHTTP、appIDが推奨形。非公開の定数もMAX_LENGTHではなくmaxLength。
  • C#/.NET:公開メンバーはPascalCase、引数はcamelCase、アンダースコアなし。2文字の頭字語は両方大文字(IOStream)、3文字以上は先頭のみ(HtmlTag)。
  • URL・CSSクラス・ファイル名:kebab-caseが一般的。GoogleはURLの単語区切りにアンダースコアではなくハイフンを勧めています。

分割が予想と違うとき

iPhone、iPad、iOS、macOS、eBayのように小文字で始まり大文字が続くよく知られた固有名詞は、組み込みの一覧にあるので1語のまま扱います(snake_caseはiphone、camelCaseはiPhoneCase、Title CaseはiPhone Case)。一覧にないaValueのような名前は規則どおりaとValueに分かれます。数字の後の大文字も境界なので、user_id2FAはuser、id2、FAに分かれ、camelCaseはuserId2Faです。空白を入れて「user id 2FA」と入力すれば、区切りを自分で指定できます。

ひらがな・カタカナ・漢字には大文字小文字がないため、空白や記号でのみ区切られます。

トルコ語のiとドイツ語のß

大文字・小文字の変換は言語によって異なります。トルコ語には点付きのi/İと点なしのı/Iがあり、トルコ語の規則ではIの小文字はıです。ロケール指定なしのJavaScript標準toLowerCaseはİstanbulを、iの後に結合用の点(U+0307)が付いたi̇stanbulにしてしまい、変数名に見えない文字が混ざります。このページの言語(日本語・英語・韓国語・スペイン語)はトルコ語ではないため、このツールはİを点のないiにしてistanbulを返します。一方でトルコ語の規則(I→ı)は適用しないので、DİYARBAKIRはdiyarbakirになり、ıを大文字にするとIになります。

ドイツ語のßは大文字にするとSSの2文字になります。STRASSEを小文字に戻してもstrasseで、元のstraßeには戻りません。大文字小文字の変換は常に元に戻せるわけではありません。

例

頭字語を含む識別子

入力
getHTTPResponseCode
結果
camel: getHttpResponseCode / snake: get_http_response_code / constant: GET_HTTP_RESPONSE_CODE

HTTPはルール2で1語になり、Java式にHttpと書かれます。Goならば元のgetHTTPResponseCodeのままが規則どおりです。

Title Caseと頭字語

入力
naïve JSON
結果
title: Naïve JSON / pascal: NaïveJson / snake: naïve_json

Title CaseはJSONを頭字語とみなして大文字のまま残します。PascalCaseはJava方式でJsonになります。

ßの大文字

入力
straße größe
結果
constant: STRASSE_GRÖSSE / camel: straßeGröße

大文字の出力でだけßがSSに変わります。

使い方

  1. 変数名や文章を入力します。
  2. 9種類の表記が同時に出るので、必要なものをコピーします。
  3. 頭字語が含まれる場合は、使う言語の規則に合わせて大文字を確認します。

よくある質問

camelCaseとPascalCaseの違いは?

最初の1文字だけです。userNameがcamelCase、UserNameがPascalCaseです。多くの言語でPascalCaseはクラスや型の名前に使います。

JSONのキーはsnake_caseとcamelCaseのどちら?

JSONの仕様には決まりがありません。JavaScriptで直接使うAPIはcamelCase、PythonやRubyのAPIはsnake_caseが多く、1つのAPI内で混ぜないことが大切です。

XMLHttpRequestがxmlHttpRequestになるのはなぜ?

大文字の連続の後に「大文字+小文字」が現れる位置を新しい単語の始まりとみなし、XML/Http/Requestに分けるためです。

定数名はどう書く?

C、Java、Python、JavaScriptなどではCONSTANT_CASEが慣例です。Goは例外で定数もMixedCapsを使います。

出典

基準日:

プライバシーとデータの扱い