テキストをsnake_case(スネークケース)に変換する
Python、Ruby、データベースのカラム名付けのためにテキストをsnake_caseに変換する方法を学びます。アンダースコアによる単語分離の慣例と、他のケースとの使い分けを解説します。
Programming Cases
詳細な説明
テキストをsnake_caseに変換する
snake_caseはすべてのスペースと区切り文字をアンダースコア(_)に置き換え、すべての文字を小文字にします。単語間のアンダースコアが地面に横たわる蛇のように見えることから「スネークケース」と呼ばれます。
基本的な変換
入力: User First Name
出力: user_first_name
入力: backgroundColor
出力: background_color
入力: GET-API-RESPONSE
出力: get_api_response
snake_caseが使用される場所
# Python — 変数、関数、メソッド、モジュール(PEP 8)
user_name = "Alice"
def get_user_profile(user_id):
pass
import json_parser
# Ruby — 変数、メソッド、ファイル名
first_name = "Alice"
def calculate_total_price(items)
end
データベースのカラム名
snake_caseはデータベーススキーマのデファクトスタンダードです:
CREATE TABLE user_profiles (
user_id SERIAL PRIMARY KEY,
first_name VARCHAR(100),
last_name VARCHAR(100),
email_address VARCHAR(255),
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP
);
変換アルゴリズム
- 小文字の後の大文字の前にアンダースコアを挿入(camelCase入力用)。
- すべてのハイフン、ドット、スペースをアンダースコアに置換。
- 連続するアンダースコアを1つにまとめる。
- 文字列全体を小文字にする。
- 先頭と末尾のアンダースコアをトリム。
頭字語の処理
"XMLParser" → "xml_parser"
"getHTTPSUrl" → "get_https_url"
"userID" → "user_id"
エッジケース
- 単一単語:
"hello"→"hello"。 - 既にsnake_case: そのまま通過します。
- 連続する大文字:
"HTMLParser"→"html_parser"。 - 数字:
"item2Count"→"item_2_count"または"item2_count"(アルゴリズムによる)。
ユースケース
snake_caseはPython(PEP 8)とRubyのスタイルガイドで変数名と関数名に必須です。すべての主要RDBMSのデータベースカラム名、Rustの変数名の標準であり、PythonとRubyのバックエンドでREST API JSONキーに一般的に使用されます。JavaScriptフロントエンドとPython/Rubyバックエンド間のマッピング時にcamelCaseやPascalCaseからsnake_caseへの変換は頻繁な作業です。