テキストのケース変換とは?
テキストのケース変換は、入力文字列を受け取り、同じ単語を別の大文字小文字規約で出力します。最もよく使われるのは camelCase と PascalCase(多くの中括弧系言語の識別子)、snake_case と CONSTANT_CASE(Python、Ruby、Rust、C マクロ)、kebab-case(URL、CSS クラス名、HTML 属性、npm パッケージ名)、dot.case(設定キー、JavaScript オブジェクトパス)、path/case(ファイルシステム風の識別子)、Title Case と Sentence case(見出しや文章)、それに完全な lower case と UPPER CASE です。本変換ツールは入力中の自然な単語境界 — 空白、ハイフン、アンダースコア、ドット、スラッシュ、そして helloWorld 型識別子を区切る小文字→大文字の遷移 — を検出し、各ターゲットケースに必要な区切り文字と大文字小文字のパターンで再構成します。
ケース変換はどのように動作しますか?
入力は小さなバニラ JavaScript のトークナイザと 11 個のケース整形器によって、すべてブラウザ内で処理されます。大まかな手順は次のとおりです:
- 入力はテキストエリアからそのまま読まれます — 貼り付けたバイト列はすべてローカルのメモリに保持されます。
- トークナイザは空白、アンダースコア、ハイフン、ドット、スラッシュで入力を分割し、さらに小文字→大文字の境界で分割します(よって
helloWorldは["hello", "World"]になります)。そして文字↔数字の境界でも分割します(よってv2APIは["v", "2", "API"]になります)。 - 空のトークンを除去し、残ったトークンは
String.prototype.toLocaleLowerCaseで小文字化されるため、トルコ語、ドイツ語などのロケールにおける Unicode 文字も正しく保持されます。 - 次に 11 個の整形器がトークンを各ターゲットケースに組み立てます — camelCase、PascalCase、snake_case、CONSTANT_CASE、kebab-case、dot.case、path/case、Title Case(
and、the、ofなどの小さな単語リスト付きで、先頭・末尾以外では小文字を保ちます)、Sentence case、完全な小文字、完全な大文字です。 - 出力はケース 1 行ずつ結果グリッドに書き込まれます。各行には独自のコピーボタンがあり、非同期の Clipboard API を用い、古いブラウザ向けには同期の
document.execCommand('copy')をフォールバックとして使用します。
なぜケース変換ツールを使うのか?
- 識別子のリファクタ:JavaScript 変数を
user_idからuserIdに、Python 関数をhelloWorldからhello_worldに、Rust 定数をmaxBufferからMAX_BUFFERに — 一文字ずつ手作業で編集することなく改名できます。 - 設定キーの変換:camelCase のキーで埋まった JSON 設定を一回の貼り付けで Python サービス用の snake_case YAML に、あるいは Helm チャート用の kebab-case に切り替えられます。
- 見出しの作成:草稿の見出しを貼り付け、Title Case 形式(Chicago Manual of Style の小さな単語例外付き)と Sentence case 形式(AP Stylebook)を並べて読み、媒体に合うものを選びます。
- URL スラッグの生成:ブログ記事のタイトルを貼り付け、kebab-case 形式を CMS のスラッグ欄に直接コピー — トークナイザが句読点や複数語フレーズを処理し、余計な区切り文字を残しません。
ケース変換の一般的な用途は何ですか?
大文字小文字規約の切り替えは、ソフトウェア工学、コンテンツ制作、データエンジニアリングにわたって登場します:
- コードのリファクタ:スタイルガイドが変わったときに、コードベース全体で識別子を改名(例えばバックエンド書き直し時に JavaScript の camelCase を Python の snake_case に)、タイプミスなしで実施できます。
- API ペイロードの整形:camelCase の JSON キーを Ruby on Rails や Django のバックエンドに渡す前に snake_case に変換、あるいは CSS-in-JS のクラス名向けに kebab-case にします。
- 見出しとスラッグの作成:同じ元見出しから、Title Case のページタイトル、Sentence case のメタディスクリプション、kebab-case の URL スラッグを一度に生成します。
ケース変換の例はどんな見た目ですか?
Hello World API を入力に貼り付けます。結果グリッドは 11 行を同時に描画します:helloWorldApi(camelCase)、HelloWorldApi(PascalCase)、hello_world_api(snake_case)、HELLO_WORLD_API(CONSTANT_CASE)、hello-world-api(kebab-case)、hello.world.api(dot.case)、hello/world/api(path/case)、Hello World Api(Title Case)、Hello world api(Sentence case)、hello world api(lower case)、HELLO WORLD API(UPPER CASE)。同じ入力を helloWorldAPI として貼り付けても同じ 3 単語にトークン化されます — 小文字→大文字の境界検出器がこの形式にも対応します。
これは私のブラウザ内で動きますか?
はい。トークナイザと 11 個のケース整形器はおよそ 120 行のバニラ JavaScript で、ブラウザのタブ内で動作します。何もアップロードされず、入力を中継するサービスワーカーもなく、変換ステップ自体はネットワーク要求をまったく行いません。発生する送信はページロード時の標準アセット(CSS、フォント、解析)のみで、あなたのテキストが Ultim8Soft に到達することはありません。
変数名にはどのケース形式を使うべきですか?
言語とチームのスタイルガイドに依存します。JavaScript と TypeScript のコードベースは圧倒的に camelCase を変数と関数に、PascalCase をクラスや React コンポーネントに、CONSTANT_CASE を環境変数名やモジュールレベル定数に用います — Google JavaScript スタイルガイドと Airbnb スタイルガイドはどちらもそう定めています。Python(PEP 8)、Ruby、Rust は snake_case を変数と関数に、PascalCase をクラスに、CONSTANT_CASE をモジュールレベル定数に好みます。C と C++ のコードベース(Linux カーネル、LLVM)は関数に snake_case、プリプロセッサマクロに CONSTANT_CASE を使います。迷ったらチームの linter や formatter を走らせれば、どの規約が強制されているか分かります。
入力はどのようにトークン化されますか?
トークナイザはまず入力を任意の空白、アンダースコア(_)、ハイフン(-)、ドット(.)、スラッシュ(/)の連なりで分割します。得られた各塊はさらに小文字→大文字の境界で分割され(よって helloWorld は ["hello", "World"] になります)、文字↔数字の境界でも分割されます(よって v2API は ["v", "2", "API"] になります)。空のトークンを除去し、残ったトークンは String.prototype.toLocaleLowerCase で小文字化されます。その後、整形器がトークンを各ターゲットケースが必要とする区切り文字で再大文字化・再結合します。この戦略は一般的な 6 つの識別子形 — camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE、そして普通の空白区切りの文章 — を箱から出してすぐ扱えます。
Unicode / 非 ASCII 文字はどうなりますか?
Unicode 文字は往復を生き残ります。トークナイザは String.prototype.toLocaleLowerCase と toLocaleUpperCase を使い、これらはロケール特有のケースルールを尊重します — トルコ語のドット付き/ドットなしの i、ドイツ語 ß が SS に大文字化されること、フランス語やスペイン語のアクセント付きラテン文字などです。区切り集合(空白、_、-、.、/)に含まれない非文字 — 例えば数字、アクセント付き文字、CJK 文字 — は所属するトークン内に保持され、ケース整形器はそれらをそのまま再出力します。つまり nœud_principal のような入力は ["nœud", "principal"] にトークン化され、nœudPrincipal(camelCase)や NœudPrincipal(PascalCase)に綺麗に変換されます。
このケース変換ツールはシングルの静的ページで、トークナイザと 11 個の整形器をすべてブラウザ内で実行します — ベンダーライブラリなし、変換ごとのネットワーク呼び出しなし、アカウントなし。上に任意のテキストを貼り付け、11 種類のケース出力を並べて見比べ、必要なものをコピーしてください。